文章目录
一.创建表
语法格式
CREATE [TEMPORARY] TABLE <表名>
(<列名1> <数据类型> [ DEFAULT‘默认值’]
[ATUO_INCREMENT] [列级完整性约束]
<列名2><数据类型>
.......
|[index_definition]
)[表设置];
[TEMPORARY] 创建临时表
[index_definition] 为字段指定索引
简化语法
CREATE TABLE<表名>
(<列名1><数据类型>
<列名2><数据类型>
.......
)[表设置];
[例7-1]用命令在stuInfo数据库中建立一个学生表Stu,有学号、姓名、性别、出生日期和专业号。
USE stuInfo;
CREATE TABLE Stu
(Sno char(6) NOT NULL,
Sname varchar(4),
Ssex Enum('男','女'),
Sbirth date,
Zno varchar(4)
);
二.查看表
显示当前数据库中的表名称
SHOW TABLES;
显示指定表的结构
DESC [RIBE] 表名;
SHOW CREATE TABLE 表名;
三.修改表
ALTER TABLE <表名>语句用于在已有的表中添加、修改或删除列。
ALTER TABLE <表名>
[ADD <列定义> [first|after列名]
|[MODIFY <列定义> [first | after 列名]]
|[DROP <列名>]
|[CHANGE <旧列名> <新列名> <新数据类型>]
|[RENAME <新表名>]
|[ORDER BY <列名>]
[例7-9]在stu数据表的Sbrith后插入一个属性scollege,长度为20,允许为空。
添加列
ALTER TABLE stu
ADD scollege char(20);
不允许为空
ALTER TABLE stu
ADD scollege char(20) not null;
在sbirth列之后
ALTER TABLE stu
ADD scollege char(20) not null after sbirth;
[例7-6]将属性scollege改为长度为10,放在第一列
ALTER TABLE stu
MODIFY scollege char(10) first;
[例7-10]删除scollege列。
ALTER TABLE stu
drop scollege;
四、复制表
语法格式
CREATE [temporary] TABLE <表名>
[like 源表名] | [as (select 语句)];
[例7-15]复制stu表到stu1中。不复制数据只复制结构
CREATE TABLE stu1
LIKE stu;
[例7-16]复制stu表中的sno,sname到stu2中。复制数据
CREATE TABLE stu2
AS
SELECT sno,sname FROM stu;
五、删除表
语法格式
DROP TABLE [IF EXISTS]<表名>
六、表管理中的注意事项
1.空值NULL
表示未知、不可用或将在以后添加的数据,它与数字0或空字符不同。
2.列的标志(IDENTITY)属性
任何表都可创建一个标志列,由系统生成序号值。该序号值唯一标志表中的一行,可以作为键值。
3.关于列类型的隐含改变
MySQL中,系统会隐含改变在表中已指定的列类型。长度小于4的VARCHAR类型会被改变为CHAR类型。