ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 数据表操作 ### 创建数据表 只要用到数据库,我们就会用到创建数据库表,介绍两种创建表的方法。 #### CREATE 语句 使用 CREATE 语句创建表,语法如下: CREATE TABLE tbl_name [IF NOT EXISTS] (create_definition,...) [type =table_type] create_definition:col_name type [not null | null][default default_value] [auto_increment][primary_key] CREATE 创建数据表示例: CREATE TABLE IF NOT EXISTS test ( id int(11) unsigned NOT NULL, username varchar(15) NOT NULL, password char(32) NOT NULL, content text NOT NULL, createtime datetime NOT NULL, gender tinyint(1) NOT NULL, DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 显示位宽: 对于整数类型,MySQL 支持指定显示宽度,例如 int(5) 表示当数值宽度小于 5 时在数字的前面填满宽度,可以配合 ZEROFILL 使用。 **注意:** 使用一个指定宽度并不会影响字段的大小和它可以存储的值的范围。 UNSIGNED(无符号) 主要用于整型和浮点类型,例如 tinyint 整型的取值区间为 -128 ~ 127,使用无符号后取值区间为 0 - 255。 AUTO_INCREMENT(自动增长) 整数类型特有的属性,用于产生唯一标识符或顺序值。 **注意:** 一个表中只能有一个自动增长列,自动增长列应该定义为 NOT NULL, 并定义为 PRIMARY KEY 或 UNIQUE ZEROFILL(零填充) 在位数不够的数值前面用字符 “0” 填充剩余宽度。 DEFAULT DEFAULT 属性确保在没有任何值可用的情况下,赋予某个常量值,这个值必须是常量,因为 MySQL 不允许插入函数或表达式值。此外,此属性无法用于 BLOB 或 TEXT 列。 NOT NULL 如果将一个列定义为 NOT NULL,将不允许向该列插入 NULL 值。建议在重要情况下始终使用 NOT NULL 属性,因为它提供了一个基本验证,确保已经向查询传递了所有必要的值。 NULL 为列指定 NULL 属性时,该列可以保持为空,而不论行中其它列是否已经被填充。NULL 精确的说法是 “无”,而不是空字符串或 0 #### CREATE ... SELECT 语句 使用 CREATE ... SELECT 语句创建表,语法如下: CREATE TABLE tb_new_name SELECT * FROM tb_old_name; 上述语句表示,从后者的表中复制一份,添加到新的数据表中,前面是新的数据表,之前是不存在的。例如: CREATE TABLE test001_201712 SELECT * FROM test001; ### 显示数据表信息 有时候我们需要查看某个数据表的相关信息,比如结构,列名等等;那么我们就需要用到 show/describe 语句来查看,看下面语法: show tables [from db_name] [like wild] show columns from tbl_name [from db_name] [like wild] show index from tbl_name [from db_name] show table status [from db_name] [like wild] {describe| desc} tbl_name {col_name | wild} 第一种语法表示:查看某个数据库下的所有数据库表,或者根据 like 模糊查看某个数据库表;例如 show tables from test001; show tables from test001 like "%a%"; 第二种语法表示:查看某个数据库表中的列属性, like 后面跟的是列的名称的某个关键字;例如 show columns from test001; show columns from test001 from test001 like "%n%"; 第三种语法表示:查看某个数据库表中的索引;例如 show index from test001 from test001; 第四种语法表示:查看数据库中全部表或者某个表的状态信息,信息提供的更多;例如 show table status from test001; show table status from test001 like "%t%"; 第五种语法表示:查看数据库表的信息,是 show 的另外一种方式;例如 desc test001; describe test001 "%n%"; ### 修改表结构 有时你可能需要改变一下现有表的结构,那么 ALTER TABLE 语句将是你的合适选择。 增加列: ALTER TABLE test001 ADD weight int; 修改列: ALTER TABLE test001 MODIFY weight varchar(50); 删除列: ALTER TABLE test001 DROP weight; 另外一种常用方式,例如: 给列更名: ALTER TABLE test001 CHANGE weight wei int; 给表更名: ALTER TABLE test001 RENAME test001_01; ### 删除数据表 DROP TABLE 删除一个或多个数据库表。表中的所有数据和表定义均被删除,故小心使用这个命令。语法如下: DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...] 例如删除 test001_01 这个表,要删除多个表,在后面用逗号隔开即可。例如: DROP TABLE IF EXISTS test001_01;