MySQL学习——操作表

MySQL学习——操作表

摘要:本文主要学习了使用DDL语句操作表的方法。

创建表

语法

1 create table 表名 [表定义选项] [表选项];

表定义选项

用来创建定义表的结构,由列名(col_name)、列的定义(column_definition)以及可能的空值说明、完整性约束或表索引组成。

实例

1 1 mysql> create table test ( 2 2 -> id int(11) not null comment '编号', 3 3 -> name varchar(50) default null comment '姓名', 4 4 -> address varchar(50) default null comment '地址', 5 5 -> status int(2) default null comment '状态', 6 6 -> createtime date default null comment '创建时间', 7 7 -> updatetime date default null comment '修改时间', 8 8 -> primary key (id) 9 9 -> ) engine=innodb default charset=utf8mb4 comment='测试'; 1010 Query OK, 0 rows affected (0.01 sec) 1111 1212 mysql>

复制表

语法

1 create table 新表名 as select * from 旧表名;

实例

11 Database changed 22 mysql> create table grade as select * from score; 33 Query OK, 12 rows affected (0.01 sec) 44 Records: 12 Duplicates: 0 Warnings: 0 55 66 mysql>

查看表的列

语法

1 show columns from 表名;

实例

1 1 mysql> show columns from test; 2 2 +------------+-------------+------+-----+---------+-------+ 3 3 | Field | Type | Null | Key | Default | Extra | 4 4 +------------+-------------+------+-----+---------+-------+ 5 5 | id | int(11) | NO | PRI | NULL | | 6 6 | name | varchar(50) | YES | | NULL | | 7 7 | address | varchar(50) | YES | | NULL | | 8 8 | status | int(2) | YES | | NULL | | 9 9 | createtime | date | YES | | NULL | | 1010 | updatetime | date | YES | | NULL | | 1111 +------------+-------------+------+-----+---------+-------+ 1212 6 rows in set (0.00 sec) 1313 1414 mysql>

说明

Field:列名。

Type:类型。

Null:表示该列是否可以存储NULL值。

Key:表示该列是否已编制索引。PRI表示该列是主键的一部分,UNI表示该列是UNIQUE索引的一部分,MUL表示在列中某个给定值允许出现多次。

Default:表示该列是否有默认值,如果有,值是多少。

Extra:表示可以获取的与给定列有关的附加信息,如:AUTO_INCREMENT等。

查看表结构

语法

1 desc 表名;

实例

1 1 mysql> desc test; 2 2 +------------+-------------+------+-----+---------+-------+ 3 3 | Field | Type | Null | Key | Default | Extra | 4 4 +------------+-------------+------+-----+---------+-------+ 5 5 | id | int(11) | NO | PRI | NULL | | 6 6 | name | varchar(50) | YES | | NULL | | 7 7 | address | varchar(50) | YES | | NULL | | 8 8 | status | int(2) | YES | | NULL | | 9 9 | createtime | date | YES | | NULL | | 1010 | updatetime | date | YES | | NULL | | 1111 +------------+-------------+------+-----+---------+-------+ 1212 6 rows in set (0.00 sec) 1313 1414 mysql>

说明

Filed:列名。

Type:类型。

Null:表示该列是否可以存储NULL值。

Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分,UNI表示该列是UNIQUE索引的一部分,MUL表示在列中某个给定值允许出现多次。

Default:表示该列是否有默认值,如果有,值是多少。

Extra:表示可以获取的与给定列有关的附加信息,如:AUTO_INCREMENT等。

查询所有的表

语法

1 show tables;

实例

11 mysql> show tables; 22 +----------------+ 33 | Tables_in_demo | 44 +----------------+ 55 | test | 66 +----------------+ 77 1 row in set (0.00 sec) 88 99 mysql>

查看表的创建

语法

1 show create table 表名 \G;

实例

1 1 mysql> show create table test \G; 2 2 *************************** 1. row *************************** 3 3 Table: test 4 4 Create Table: CREATE TABLE `test` ( 5 5 `id` int(11) NOT NULL COMMENT '编号', 6 6 `name` varchar(50) DEFAULT NULL COMMENT '姓名', 7 7 `address` varchar(50) DEFAULT NULL COMMENT '地址', 8 8 `status` int(2) DEFAULT NULL COMMENT '状态', 9 9 `createtime` date DEFAULT NULL COMMENT '创建时间', 1010 `updatetime` date DEFAULT NULL COMMENT '修改时间', 1111 PRIMARY KEY (`id`) 1212 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='测试' 1313 1 row in set (0.00 sec) 1414 1515 ERROR: 1616 No query specified 1717 1818 mysql>

查看表的状态

语法

1 show table status like from 数据库 [like '模糊查询表名'] \G;

实例

1 1 mysql> show table status from demo \G ; 2 2 *************************** 1. row *************************** 3 3 Name: test 4 4 Engine: InnoDB 5 5 Version: 10 6 6 Row_format: Compact 7 7 Rows: 0 8 8 Avg_row_length: 0 9 9 Data_length: 16384 1010 Max_data_length: 0 1111 Index_length: 0 1212 Data_free: 0 1313 Auto_increment: NULL 1414 Create_time: 2019-09-02 17:21:06 1515 Update_time: NULL 1616 Check_time: NULL 1717 Collation: utf8mb4_general_ci 1818 Checksum: NULL 1919 Create_options: 2020 Comment: 测试 2121 1 row in set (0.00 sec) 2222 2323 ERROR: 2424 No query specified 2525 2626 mysql>

查看表索引

语法

show index from 表名;

示例

1 1 mysql> show index from user; 2 2 +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 3 3 | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | 4 4 +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 5 5 | user | 0 | PRIMARY | 1 | Host | A | NULL | NULL | NULL | | BTREE | | | 6 6 | user | 0 | PRIMARY | 2 | User | A | 3 | NULL | NULL | | BTREE | | | 7 7 +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 8 8 2 rows in set (0.00 sec) 9 9 1010 mysql>

修改表

添加列

1 alter table 表名 add column 新列名 [数据类型] [约束条件] [first | after 已存在的列名];

实例

11 mysql> alter table test add column age int(3) null comment '年龄' after name; 22 Query OK, 0 rows affected (0.01 sec) 33 Records: 0 Duplicates: 0 Warnings: 0 44 55 mysql>

修改列

1 alter table 表名 change column 旧列名 新列名 [新数据类型];

实例

11 mysql> alter table test change column username name varchar(30) not null default 'none' comment '姓名'; 22 Query OK, 0 rows affected (0.01 sec) 33 Records: 0 Duplicates: 0 Warnings: 0 44 55 mysql>

删除列

1 alter table 表名 drop 列名;

实例

11 mysql> alter table test drop age; 22 Query OK, 0 rows affected (0.01 sec) 33 Records: 0 Duplicates: 0 Warnings: 0 44 55 mysql>

删除表

语法

1 drop table [if exists] 表名;

实例

11 mysql> drop table demo; 22 Query OK, 0 rows affected (0.01 sec) 33 44 mysql>

清空表

语法

1 truncate table 表名;

实例

11 mysql> truncate table demo; 22 Query OK, 0 rows affected (0.01 sec) 33 44 mysql>
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

MySQL学习——操作表 - HelloWorld