以下面这个数据库为例
图片来源
http://www.icourse163.org/learn/RUC-488001#/learn/content?type=detail&id=1003140480&sm=1
创建数据库
创建一个名为student_course的数据库:
CREATE database student_course;
/*MySQL中的数据库名称中不能有“-”,所以我们把数据库的名称命名为student_course*/
创建基本表
建立一个“学生”表Student:
CREATE TABLE Student (
Sno CHAR ( 9 ) PRIMARY KEY,/*列级完整性约束条件,Sno是主码*/
Sname CHAR ( 20 ) UNIQUE,/*Sname取唯一值*/
Ssex CHAR ( 2 ) NOT NULL,/*列级完整性约束条件,Ssex不能取空值*/
Sage SMALLINT,
Sdept CHAR ( 20 )
);
建立一个“课程表”Course:
CREATE TABLE Course (
Cno CHAR ( 4 ) PRIMARY KEY,/*列级完整性约束条件,Cno是主码*/
Cname CHAR ( 40 ) NOT NULL,/*列级完整性约束条件,Ssex不能取空值*/
Cpno CHAR ( 40 ),/*Cpno的含义是先修课*/
Ccredit SMALLINT,
FOREIGN KEY ( Cpno ) REFERENCES Course ( Cno )
/*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/
);
/*参照表和被参照表可以是同一个表*/
建立学生选课表SC:
CREATE TABLE SC (
Sno CHAR ( 9 ),
Cno CHAR ( 4 ),
Grade SMALLINT,
PRIMARY KEY ( Sno, Cno ),/*主码由两个属性构成,必须作为表级完整性进行定义*/
FOREIGN KEY ( Sno ) REFERENCES Student ( Sno ),/*表级完整性约束条件,Sno是外码,被参照表是Student*/
FOREIGN KEY ( Cno ) REFERENCES Course ( Cno )/*表级完整性约束条件,Cno是外码,被参照表是Course*/
);
修改基本表
修改字段名
ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型;
将Student表中的字段Sage改名为age,类型为SMALLINT:
ALTER TABLE Student CHANGE Sage age SMALLINT;
修改字段类型
ALTER TABLE 表名 MODIFY COLUMN 字段名 数据类型;
将年龄的数据类型改为INT:
ALTER TABLE Student MODIFY COLUMN Sage INT;
增加字段
ALTER TABLE Student ADD 字段名 数据类型;
向Student表增加“入学时间”列,其数据类型为字符型,长度为8:
ALTER TABLE Student ADD Sentrance CHAR ( 8 );
增加字段的约束条件
ALTER TABLE 表名 ADD 约束名(字段名);
增加课程名称必须取唯一值的约束条件:
ALTER TABLE Course ADD UNIQUE ( Cname );
索引
建立索引
CREATE UNIQUE INDEX 索引名 ON 表名(列名 次序,列名 次序…)
在Student表中按学号升序建唯一索引:
CREATE UNIQUE INDEX Stuno ON Student ( Sno ASC);
删除索引
DROP INDEX 索引名 ON 表名;
删除Student表中的Stuno索引:
DROP INDEX Stuno ON Student;