MySQL学习——有关表的操作语句
程序员文章站
2022-08-08 19:14:59
MySQL学习——有关表的操作语句 摘要:本文主要学习了使用DDL语句对表进行操作的方法。 创建表 语法 表定义选项 用来创建定义表的结构,由列名(col_name)、列的定义(column_definition)以及可能的空值说明、完整性约束或表索引组成。 实例 查看表结构 语法 实例 说明 Nu ......
mysql学习——有关表的操作语句
摘要:本文主要学习了使用ddl语句对表进行操作的方法。
创建表
语法
1 create table 表名 [表定义选项] [表选项] [分区选项];
表定义选项
用来创建定义表的结构,由列名(col_name)、列的定义(column_definition)以及可能的空值说明、完整性约束或表索引组成。
实例
1 create table test ( 2 id int(11) not null comment '编号', 3 name varchar(50) default null comment '姓名', 4 address varchar(50) default null comment '地址', 5 status int(2) default null comment '状态', 6 createtime date default null comment '创建时间', 7 updatetime date default null comment '修改时间', 8 primary key (id) 9 ) engine=innodb default charset=utf8mb4 comment='测试';
查看表结构
语法
1 describe 表名;
实例
1 mysql> describe test; 2 +------------+-------------+------+-----+---------+-------+ 3 | field | type | null | key | default | extra | 4 +------------+-------------+------+-----+---------+-------+ 5 | id | int(11) | no | pri | null | | 6 | name | varchar(50) | yes | | null | | 7 | address | varchar(50) | yes | | null | | 8 | status | int(2) | yes | | null | | 9 | createtime | date | yes | | null | | 10 | updatetime | date | yes | | null | | 11 +------------+-------------+------+-----+---------+-------+ 12 6 rows in set (0.00 sec) 13 14 mysql>
说明
null:表示该列是否可以存储null值。
key:表示该列是否已编制索引。pri表示该列是表主键的一部分,uni表示该列是unique索引的一部分,mul表示在列中某个给定值允许出现多次。
default:表示该列是否有默认值,如果有,值是多少。
extra:表示可以获取的与给定列有关的附加信息,如:auto_increment等。
查询所有的表
语法
1 show tables;
实例
1 mysql> show tables; 2 +----------------+ 3 | tables_in_demo | 4 +----------------+ 5 | test | 6 +----------------+ 7 1 row in set (0.00 sec) 8 9 mysql>
查看表的创建
语法
1 show create table 表名 \g;
实例
1 mysql> show create table test \g; 2 *************************** 1. row *************************** 3 table: test 4 create table: create table `test` ( 5 `id` int(11) not null comment '编号', 6 `name` varchar(50) default null comment '姓名', 7 `address` varchar(50) default null comment '地址', 8 `status` int(2) default null comment '状态', 9 `createtime` date default null comment '创建时间', 10 `updatetime` date default null comment '修改时间', 11 primary key (`id`) 12 ) engine=innodb default charset=utf8mb4 comment='测试' 13 1 row in set (0.00 sec) 14 15 error: 16 no query specified 17 18 mysql>
查看表的状态
语法
1 show table status like from 数据库 [like '模糊查询表名'] \g;
实例
1 mysql> show table status from demo \g ; 2 *************************** 1. row *************************** 3 name: test 4 engine: innodb 5 version: 10 6 row_format: compact 7 rows: 0 8 avg_row_length: 0 9 data_length: 16384 10 max_data_length: 0 11 index_length: 0 12 data_free: 0 13 auto_increment: null 14 create_time: 2019-09-02 17:21:06 15 update_time: null 16 check_time: null 17 collation: utf8mb4_general_ci 18 checksum: null 19 create_options: 20 comment: 测试 21 1 row in set (0.00 sec) 22 23 error: 24 no query specified 25 26 mysql>
修改表
添加字段
1 alter table 表名 add column 新字段名 [数据类型] [约束条件] [first | after 已存在的字段名];
实例
1 mysql> alter table test add column age int(3) null comment '年龄' after name; 2 query ok, 0 rows affected (0.01 sec) 3 records: 0 duplicates: 0 warnings: 0 4 5 mysql>
修改字段
1 alter table 表名 change column 旧字段名 新字段名 [新数据类型];
实例
1 mysql> alter table test change column username name varchar(30) not null default 'none' comment '姓名'; 2 query ok, 0 rows affected (0.01 sec) 3 records: 0 duplicates: 0 warnings: 0 4 5 mysql>
删除字段
1 alter table 表名 drop 字段名;
实例
1 mysql> alter table test drop age; 2 query ok, 0 rows affected (0.01 sec) 3 records: 0 duplicates: 0 warnings: 0 4 5 mysql>
删除表
语法
1 drop table [if exists] 表名;
实例
1 mysql> drop table demo; 2 query ok, 0 rows affected (0.01 sec) 3 4 mysql>