永远记住,你的存在是有意义的,
你很重要,
你是被爱着的,
而且你为这个世界带来了无可取代的东西。
-- 麦克西 《男孩、鼹鼠、狐狸和马》--
从零开始了解数据库开发
今天我们来学习数据表的操作
创建数据表
创建数据表的语法:
sql
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name
[
(create_definition,...)
][table_options][select_statement]
说明:
- TEMPORARY:表示创建的表是一个临时表
- IF NOT EXISTS:避免创建重复的表
- create_definition:这是表的列属性,MySQL要求创建表时至少存在一列
- table_options:表的一些特性参数,其中大多数选项涉及的是表数据的存储方式和储存位置,比如ENGINE指定储存引擎,多数情况下用户无需指明表选项
- select_statement:SELECT语句描述部分,用于快速创建表
接下来来看白属性create_definition的具体格式:
sql
col_name type[NOT NULL | NULL] [DEFAULT default_value][AUTO_INCREMENT][PRIMARY KEY][reference_definition]
- col_name:列名称
- type:字段类型
- NOT NULL | NULL :指出列是否允许为空值,系统一般默认允许为空值,所以当不允许为空值时,必须使用NOT NULL
- DEFAULT default_value:表示列的默认值
- AUTO_INCREMENT:表示是否自动编号,每个表只能有一个 AUTO_INCREMENT列,并且必须被索引
- PRIMARY KEY:是否为主键,一个表只能有一个主键,如果表中没有PRIMARY KEY ,而某些应用程序需要主键,那么MySQL将会返回第一个没有任何NULL列的UNIQUE键作为主键
- reference_definition:为字段添加注释
查看表结构
对于一个创建成功的数据表可以使用
sql
SHOW [FULL] COLUMNS FROM 数据表名 [FROM 数据库名]
# 或者是
SHOW [FULL] COLUMNS FROM 数据库名.数据表名
进行查看。同样也可以选择使用DESCRIBE语句查看数据表结构
sql
DESCRIBE 数据表名 [列名]
修改数据表结构
修改表结构是指增加/修改/删除字段,修改字段名/类型以及修改表名,这可以使用ALTER TABLE语句来实现,语法格式如下。
sql
ALTER [IGNORE] TABLE 数据表名 alter_spec[,alter_spec]... | table_options
说明:
-
IGNORE:可选项,表示如果出现重复关键的行,则执行一行,其他重复的行被删除。
-
数据表名:用于指定要修改的数据表的名称。
-
alter_spec:用于定义要修改的内容,其语法格式为
sqlADD [COLUMN] col_name create_definition [FIRST | AFTER col_name] -- 添加新列,可指定位置(FIRST表示第一列,AFTER表示在某列之后) ADD [COLUMN] ( col_name create_definition, ...) -- 同时添加多列 ADD INDEX [index_name] (index_col_name, ...) -- 添加普通索引 ADD PRIMARY KEY (index_col_name, ...) -- 添加主键 ADD UNIQUE [INDEX] [index_name] (index_col_name, ...) -- 添加唯一索引 ALTER [COLUMN] columnname {SET DEFAULT literal | DROP DEFAULT} -- 修改列的默认值(设置或删除) CHANGE [COLUMN] old_col_name new_column_name col_definition [FIRST | AFTER col_name] -- 修改列名和列定义,可指定位置 MODIFY [COLUMN] col_name col_definition [FIRST | AFTER col_name] -- 修改列定义,可指定位置 DROP [COLUMN] col_name -- 删除指定列 DROP PRIMARY KEY -- 删除主键 DROP INDEX index_name -- 删除索引 RENAME [TO] new_table_name -- 重命名表
重命名表
重命名表的语法为:
sql
RENAME TABLE 数据表名1 to 数据表名2
修改数据表名的操作与修改数据库名一样,不建议使用,因为底层一旦修改啊,上层的所有业务都要进行修改,可能会造成意料之外的问题。
复制表
创建表的CREATE TABLE语句还有另一种语法结构:在一个已经存在的数据表的基础上创建该表的备份,也就是复制表。这种语法的格式如下
sql
CREATE TABLE [IF NOT EXISTS] 数据表名 , {LIKE 源数据表名 | (LIKE 源数据表名)}
该语句的功能是根据源数据表生成一个数据表。注意这个数据表只是复制结构,并没有拷贝内容:
如果要拷贝内容的话可以使用:
sql
CREATE TABLE 数据表名 AS SELECT * from 源数据表
删除表
删除表的语法很简单:
sql
DROP TABLE [IF EXISTS]
实际使用时避免真正删除数据表!