本示例为:学生student、课程course、选课表sc
在sql语句中注意“约束的概念":
1.实体完整性约束(主键--唯一且非空) primary key()
违约处理:No action(拒绝执行)
2.参照完整性约束(外键约束)foregin key() references tableName(filedName) [on delete|update casecade | no action]
违约处理:级联更新或拒绝执行
3.用户自定义完整性约束(not null,unique,check短语)
违约处理:拒绝执行
一、创建学生表student:
mysql> create table student (
-> sno varchar(9) primary key,
-> sname varchar(20) unique,
-> sex varchar(2),
-> sage varchar(2));
Query OK, 0 rows affected (0.03 sec)
sno varchar(9) primary key/*列级完整性约束条件sno是主码*/
二、创建课程表course:
mysql> create table course
-> (cno varchar(4) primary key,
-> cname varchar(40),
-> cpno varchar(4),
-> foreign key (cpno) references course(cno));
Query OK, 0 rows affected (0.01 sec)
-> foreign key (cpno) references course(cno));/*表级完整性约束,cpno(先修课)是外码,被参照表示course,被参照列是cno*/
三、创建学生选课表sc:
mysql> create table sc(
-> sno varchar(9),
-> cno varchar(4),
-> grade int,
-> primary key (sno,cno),
-> foreign key(sno) references student(sno),
-> foreign key(cno) references course(cno)
-> );
Query OK, 0 rows affected (0.01 sec)
四:修改表语法:
alter table
[add [完整性约束]]
[drop ]
[alter column ]
1.增加课程名必须唯一的约束条件:
mysql> alter table course add unique(cname);
Query OK, 0 rows affected (0.10 sec)
Records: 0 Duplicates: 0 Warnings: 02.向student表中增加“入学时间”列,其数据类型为date
mysql> alter table course add unique(cname);
Query OK, 0 rows affected (0.10 sec)
Records: 0 Duplicates: 0 Warnings: 0
3.添加外键约束:
mysql> alter table sc add foreign key(cno) references course(cno);
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0