1、建表
CREATE TABLE Student(
Cno CHAR(4) PRIMARY KEY,
Cname char(40) not null,
Cpno CHAR(4),
FOREIGN KEY Cpno REFERENCES Course(Cno)
);
注意: 主键的一种写法和外键的写法,还有一些约束(not null, autoincreament, unique...)
CREATE TABLE SC(
Sno CHAR(9),
Cno CHAR(4),
Grade INTEGER,
PRIMARY KEY(Sno, Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);
注意: 两个主键的定义的方法和外键的定义方法。
2、修改表
ALTER TABLE <表名>
#用于增加新列和新的完整性约束条件
[ADD <新列名> <数据类型> [完整性约束]]
#删除制动的完整性约束条件
[DROP <完整性约束名>]
#修改原有的列定义
[ALTER COLUMN <列名><数据类型>]
ALTER TABLE Student ADD S_entrance DATE;
ALTER TABLE Student ALTER COLUMN Sage INT;
ALTER TABLE Course ADD UNIQUE(Cname);
3、删除表
DROP TABLE <表名> [RESTRICT | CASCADE];
注意:
1、RESTRICT 删除表是有限制条件的
2、CASCADE删除表没有限制条件,删除基本表的同时,相关的依赖对象(如: 视图)也会被删除。
4、数据查询
SELECT [ALL | DISTINCT] <目标列表达式>[, <目标列表达式>]...
FROM <表名或视图名> [, <表名或视图名>]...
[ WHERE <条件表达式> ]
[ GROUP BY <列名1> [ HAVING <条件表达式> ]]
[ ORDER BY <列名2> [ASC | DESC]]
常用的查询条件:
字符匹配:
查询条件 | 谓词 |
比较 | =, >, <. >=, <=, !=, <>, !>, !<; NOT+上述比较运算符 |
确定范围 | BETWEEN AND, NOT BETWEEN AND |
确定集合 | IN, NOT IN |
字符匹配 | LIKE, NOT LIKE |
空值 | IS NULL, IS NOT NULL |
多重条件(逻辑运算) | AND, OR, NOT |
1、‘%’(百分号)代表任意长度(可以是0)的字符串
2、 ‘_' (下划线)代表任意单个字符
3、 如果用户要查询的字符串本身就含有通配符 % 或 _,那么就要用ESCAPE '<换码字符>'
SELECT * FROM Course WHERE Cname like 'DB\_%i_ _' ESCAPE '\'; #第一个_是普通字符,后面两个是通配符
5、插入数据
INSERT
INTO <表名> [ (<属性列1> [ ,<属性列2 >...]) ]
VALUES( <常量1> [, <常量列2>...]);
注意: 可以插入子查询的结果。
6、修改数据
UPDATE <表名>
SET <列名1> = <表达式1> [, <列名2> = <表达式2>]...
[WHERE <条件>];
注意: 可以带子查询的修改数据
7、删除数据
DELETE
FROM <表名>
[WHERE <条件>];
注意: 如果没有条件,那么删除操作将是删除这个表中的数据,但是这个表的仍然在,只是没有了数据。