目录
创建表
创建表案例
查看表结构
修改表
插入数据
新增列
删除一行数据
修改列类型
修改列名
修改表名
删除列
删除表
表操作至少会涉及如下两类SQL语句:
- DDL(Data Definition Language)数据定义语言:比如建表、删表、该表、新增列、删除列等。
- DML(Data Manipulation Language)数据操作语言:比如插入记录、删除记录、修改记录等。
本篇博客讲的是表的DDL操作,也就是操作表结构的SQL语句。
创建表
语法
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
- SQL中大写的表示关键字,[ ]中代表的是可选项。
- field表示列名,datatype表示列的类型。
- CHARSET用于指定表所采用的编码格式,如果没有指定则以所在数据库的编码格式为准。
- COLLATE用于指定表所采用的校验规则,如果没有指定则以所在数据库的校验规则为准。
- ENGINE用于指定表所采用的存储引擎。
- COMMENT用于对指定列添加注释信息。
使用
show engines
SQL可以查看当前MySQL支持的存储引擎。
可以看到我当前的MySQL默认使用的是InnoDB存储引擎,如果我建表时没有指定使用哪种存储引擎,那么就会默认使用InnoDB存储引擎。
创建表案例
在创建表之前需要先选中一个数据库,然后在数据库中创建表!!!
数据库创建完毕后选中数据库,在该数据库中创建一个user表,并在建表时指定采用MyISAM存储引擎。
表创建完毕后在数据库的数据存储路径下的 hello 目录中,就会对应增加三个文件。
- 采用不同的存储引擎,创建表时所产生的文件不一样。
- 采用InnoDB存储引擎建表,会产生对应的xxx.frm(表结构)和xxx.ibd(表数据+表索引)文件。
- 采用MyISAM存储引擎建表,会产生对应的xxx.frm(表结构)、xxx.MYD(表数据)和xxx.MYI(表索引)文件。
查看表结构
使用
desc 表名
SQL可以查看表的结构。
- Field表示该字段的名字。
- Type表示该字段的类型。
- Null表示该字段是否允许为空。
- Key表示索引类型,比如主键索引为PRI。
- Default表示该字段的默认值。
- Extra表示该字段的额外信息说明。
如果想要查看创建表时的相关细节,可以使用
show create table 表名
SQL。
修改表
语法
INSERT INTO your_table (column1, column2, column3,...) VALUES (value1, value2, value3,...);插入数据
DELETE FROM table_name WHERE condition; 删除数据
ALTER TABLE table_name ADD 新增列名 新增列的属性;
ALTER TABLE table_name MODIFY 列名 修改后的列属性;
ALTER TABLE table_name RENAME [TO] 新表名;
ALTER TABLE table_name CHANGE 列名 新列名 新列属性;
ALTER TABLE table_name DROP 删除列名;
插入数据
我们在修改表之前先在users 表中插入两条数据。
INSERT INTO your_table (column1, column2, column3,...) VALUES (value1, value2, value3,...);
新增列
新增列
ALTER TABLE table_name ADD 新增列名 新增列的属性;
在user表中新增一列用于保存用户的照片路径。
新增列SQL中的after表示将该列新增到哪一列之后,如果想要将新增的列放到第一列,可以将after及其之后的SQL换成not null first
。
删除一行数据
删除一行数据
DELETE FROM table_name WHERE condition; 删除数据
删除id=2的数据!!!
修改列类型
修改列类型
ALTER TABLE table_name MODIFY 列名 修改后的列属性;
将users表中name列的类型由char(30)改成char(60)。
如果需要修改列类型后仍然保留comment字段(注释),需要在修改时重新指定comment字段。
修改列名
修改列名!!!
ALTER TABLE table_name CHANGE 列名 新列名 新列属性;
将users表中name列的列名改成xingming!!!
修改表名
修改表名 !!!
ALTER TABLE table_name RENAME [TO] 新表名;
将users表的表名改成employee!!!
删除列
删除列
ALTER TABLE table_name DROP 删除列名;
将employee表中的path列删除!!!
删除表
语法
DROP [TEMPORARY] TABLE [IF EXISTS] table_name;
- 在创建表语句中加上TEMPORARY关键字,那么服务器将创建出一个临时表,该表会在你与服务器的会话终止时自动消失。
- TEMPORARY表的名字可以与某个已有的永久表相同,当有TEMPORARY表存在时,对应的永久表会隐藏起来(即无法访问)。
- 为了避免重新连接后(TEMPORARY已经不存在),在未做检测的情况下调用DROP误删了对应永久表,因此在使用DROP删除临时表时需要带上TEMPORARY关键字。
删除表 student!!!