目录
2、使用SHOW CREATE TABLE语句查看详细表结构
1. 设计表结构
1、表是数据库中最重要、最基本的操作对象,是存储数据的基本单位。一个表就是一个关系,表实质上就是行列的集合。
2、在设计表结构时,需要决定表中各列的名称,数据类型,数据长度,列是否允许为空值,表的主键、外键、索引,对数据的限制等内容。
2. 创建表
1、使用CREATE TABLE语句创建表
注:在以下SQL语句的语法格式中,
“<>”中的内容为必填项,例如:<表名>必须填写一个表名。
“[]”中的内容为可选填项,根据情况可写可不写。
“{}”与“|”表明此处为选择项,在给出的选择中选择一项。
(1)创建表的语法格式
CREATE TABLE <表名>
(<字段1> <数据类型1> [<列级完整性约束条件1>],
[<字段2> <数据类型2> [<列级完整性约束条件2>]] [,…],
[<表级完整性约束条件1>,]
[<表级完整性约束条件2>] [,…]
);
(2)完整性约束条件
1.列级完整性约束条件
a.PRIMARY KEY:指定该字段为主键。
b.NULL / NOT NULL:指定的字段允许为空/不允许为空,如果没有约束条件,则默认为NULL。
c.UNIQUE:指定字段取值唯一,即每条记录的指定字段的值不能重复。
d.DEFAULT <默认值>:指定设置字段的默认值。
e.AUTO_INCREMENT:指定设置字段的值自动增加。
f.CHECK(条件表达式):用于对输入值进行检验,拒绝接受不满足条件的值。
2.表级完整性约束条件
a.PRIMARY KEY用于定义表级主键约束,语法格式如下:
CONSTRAINT <约束名> PRIMARY KEY(字段名1,字段名2,…)
注:当使用多个字段作为表的主键时,使用上述语句设置主键约束。“约束名”可以自行拟定。
b.FOREIGN KEY用于设置参照完整性规则,即指定某字段为外键,语法格式如下:
CONSTRAINT <约束名> FOREIGN KEY (<外键>) REFERENCES <被参照表(主键)>
c.UNIQUE既可用于列级完整性约束,也可用于表级完整性约束,语法格式如下:
CONSTRAINT <约束名> UNIQUE(<字段名>)
(3)示例展示
(其中的“注”只是作者帮助理解写的注释)
【例1】创建一个学生表student
CREATE TABLE student
(注:使用CREATE TABLE创建名称为student的表)
(sno CHAR(10) PRIMARY KEY,
(注:sno的数据类型为CHAR,数据长度为10,是主键)
sname VARCHAR(8) NOT NULL,
(注:sname的数据类型为VARCHAR,数据长度为8,不为空)
ssex CHAR(2) DEFAULT '男',
(注:ssex的数据类型为CHAR,数据长度为2,默认为男)
);
【例2】创建course课程关系表和sc成绩关系表
CREATE TABLE course
(cno char(3) NOT NULL,
cname varchar(20) NOT NULL,
cterm tinyint NOT NULL,
CONSTRAINT C1 PRIMARY KEY(cno,cterm)
(注:该句为表级完整性约束条件,使用C1为约束名,将cno、cterm作为该course表的主键)
);
CREATE TABLE sc
(sno char(10) NOT NULL,
cno char(3) NOT NULL,
cterm tinyint NOT NULL,
CONSTRAINT A1 PRIMARY KEY(cno,cterm),
CONSTRAINT A2 FOREIGN KEY(cno,cterm) REFERENCES course (cno,cterm)
(注:使用表级完整性约束条件中的FOREIGN KEY ,指定course表的两个主键 cno、cterm作为该sc表的外键)
);
3. 维护表
1、使用DESCRIBE/DESC语句查看表结构
(1)语法格式
DESCRTBE <表名>; 或 DESC <表名>;
(2)示例展示
【例1】分别用DESCRIBE和DESC语句查看student表和course表的表结构。
DESCRIBE student;
DESC course;
2、使用SHOW CREATE TABLE语句查看详细表结构
(1)语法格式
SHOW CREATE TABLE <表名>[\G];
(2)示例展示
【例2】使用SHOW CREATE TABLE语句查看course表的详细信息。
SHOW CREATE TABLE course;
3、使用SHOW TABLES语句显示表列表
(1)语法格式
SHOW TABLES;
(2)示例展示
【例3】显示gradem数据库中的所有表。
SHOW TABLES;
4、使用ALTER TABLE语句修改表结构
(1)语法格式
ALTER TABLE <表名>
{
[ADD <新字段名> <数据类型> [<列级完整性约束条件>] [FIRST|AFTER 已存在字段名]]
|[MODIFY <字段名1> <新数据类型> [<列级完整性约束条件>][FIRST|AFTER字段名2]]
|[CHANGE <旧字段名> <新字段名> <新数据类型>]
|[DROP <字段名>| <完整性约束名>]
|[RENAME [TO]<新表名>]
|[ENGINE=<更改后的存储引擎名>]
};
(2)语法功能说明
1.ADD:为指定表添加一个新字段,数据类型由用户指定。
2.MODIFY:修改指定表中字段的数据类型或完整性约束条件。
3.CHANGE:重命名指定表中的字段。
4.DROP:删除指定表中不需要的字段或完整性约束。
5.RENAME:重命名指定表的表名。
6.ENGINE:修改指定表的存储结构。
(3)示例展示
【例4】在student表添加数据类型为char、长度10的字段class,表示学生所在班级,新字段添加在“ssex”字段后面。
ALTER TABLE student ADD class char(10) AFTER ssex;
【例5】将sc表中的degree字段的数据类型改为smallint,并放在“class”字段的后面。
ALTER TABLE sc MODIFY degree smallint AFTER class;
【例6】将student表中sbirthday的字段改名为sbirth。
ALTER TABLE student CHANGE sbirthday sbirth DATETIME;
【例7】将sc表的表名改为score。
ALTER TABLE sc RENAME score;
【例8】将student表的存储引擎改为MyISAM。
ALTER TABLE student ENGINE=MyISAM;
【例9】删除sc表的外键约束A2。
ALTER TABLE sc DROP FOREIGN KEY A2;