create table Student(
Sno char(9) primary key,
Sname char(20) unique,
Ssex char(2),
Sage smallint,
Sdept char(20)
);
create table Course(
Cno char(4) primary key,
Cname char(40) not null,
Cpno char(4),
Ccredit smallint,
foreign key(Cpno) references Course(Cno)
);
create table SC(
Sno char(9),
Cno char(4),
Grade smallint,
primary key(Sno, Cno),
foreign key(Sno) references Student(Sno),
foreign key(Cno) references Course(Cno)
);
insert into Student values('201215121', '李勇', '男', 20, 'CS'),
('201215122', '刘晨', '女', 19, 'CS'),
('201215123', '王敏', '女', 18, 'MA'),
('201215125', '张立', '男', 19, 'IS');
insert into Course
values('1', '数据库', '5', 4),
('2', '数学', null, 2),
('3', '信息系统', '1', 4),
('4', '操作系统', '6', 3),
('5', '数据结构', '7', 3),
('6', '数据处理', null, 2),
('7', 'PASCAL语言', '6', 4);
insert into SC
values('201215121', '1', 92),
('201215121', '2', 85),
('201215121', '3', 88),
('201215122', '2', 90),
('201215122', '3', 80);
select * from Student;
+
| Son | Sname | Ssex | Sage | Sdept |
+
| 201215121 | 李勇 | 男 | 20 | CS |
| 201215122 | 刘晨 | 女 | 19 | CS |
| 201215123 | 王敏 | 女 | 18 | MA |
| 201215125 | 张立 | 男 | 19 | IS |
+
select * from Course;
+
| Cno | Cname | Cpno | Ccredit |
+
| 1 | 数据库 | 5 | 4 |
| 2 | 数学 | NULL | 2 |
| 3 | 信息系统 | 1 | 4 |
| 4 | 操作系统 | 6 | 3 |
| 5 | 数据结构 | 7 | 3 |
| 6 | 数据处理 | NULL | 2 |
| 7 | PASCAL语言 | 6 | 4 |
+
select * from SC;
+
| Sno | Cno | Grade |
+
| 201215121 | 1 | 92 |
| 201215121 | 2 | 85 |
| 201215121 | 3 | 88 |
| 201215122 | 2 | 90 |
| 201215122 | 3 | 80 |
+
alter table 表名 add foreign key (字段名)references 表名(字段名)
alter table Course add foreign key references 表名(字段名)
ALTER TABLE Course DROP FOREIGN KEY (fk_symbol);
select first.Cno, second.Cpno
from Course as first, Course as second
where first.Cpno=second.Cno;
+
| Cno | Cpno |
+
| 1 | 7 |
| 3 | 5 |
| 4 | NULL |
| 5 | 6 |
| 7 | NULL |
+
5 rows in set (0.01 sec)
select *
from Course as first, Course as second;
select 字段 from 表1 inner join 表2 on 表1.字段1 = 表2.字段2;
select first.Cno, second.Cpno from Course as first inner join Course as second on first.Cpno=second.Cno;
+
| Cno | Cpno |
+
| 1 | 7 |
| 3 | 5 |
| 4 | NULL |
| 5 | 6 |
| 7 | NULL |
+
5 rows in set (0.00 sec)
select Student.*, SC.* from Student join SC on Student.Son = SC.Sno;
select Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade
from Student left outer join SC on (Student.Sno=SC.Sno);
+
| Sno | Sname | Ssex | Sage | Sdept | Cno | Grade |
+
| 201215121 | 李勇 | 男 | 20 | CS | 1 | 92 |
| 201215121 | 李勇 | 男 | 20 | CS | 2 | 85 |
| 201215121 | 李勇 | 男 | 20 | CS | 3 | 88 |
| 201215122 | 刘晨 | 女 | 19 | CS | 2 | 90 |
| 201215122 | 刘晨 | 女 | 19 | CS | 3 | 80 |
| 201215123 | 王敏 | 女 | 18 | MA | NULL | NULL |
| 201215125 | 张立 | 男 | 19 | IS | NULL | NULL |
+
7 rows in set (0.00 sec)
select Student.Sno, Sname, Cname, Grade
from Student, SC, Course
where Student.Sno=SC.Sno and SC.Cno=Course.Cno;
+
| Sno | Sname | Cname | Grade |
+
| 201215122 | 刘晨 | 数学 | 90 |
| 201215122 | 刘晨 | 信息系统 | 80 |
| 201215121 | 李勇 | 数据库 | 92 |
| 201215121 | 李勇 | 数学 | 85 |
| 201215121 | 李勇 | 信息系统 | 88 |
+
5 rows in set (0.01 sec)
select Sname from Student
where sno in (
select Sno from SC
where Cno="2"
);
+
| Sname |
+
| 李勇 |
| 刘晨 |
+
2 rows in set (0.02 sec)
select * from Student, SC
where Student.sno = SC.Sno and Cno="2";
+
| sno | Sname | Ssex | Sage | Sdept | Sno | Cno | Grade |
+
| 201215121 | 李勇 | 男 | 20 | CS | 201215121 | 2 | 85 |
| 201215122 | 刘晨 | 女 | 19 | CS | 201215122 | 2 | 90 |
+
2 rows in set (0.00 sec)
any
all
< any
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
alter table Student change son sno char(9);