/*创建 模式 为用户 User1*/
CREATE SCHEMA test authorization User1;
CREATE SCHEMA test USER User1;
CREATE TABLE student
(
Sno NUMERIC(10) PRIMARY KEY //主键
CONSTRAINT c1 CHECK(Sno BETWEEN 90000 AND 99999),
Sname CHAR(20) NOT NULL UNIQUE, //取唯一值
Sage NUMERIC(3)
CONSTRAINT c3 CHECK(Sage<30),
Ssex CHAR(2)
CONSTRAINT c4 CHECK (Ssex IN ('男','女')),
);
CREATE TABLE sc
(
Sno CHAR(10),
Cno CHAR(10),
Grade SMALLINT CHECK (Grade>=0 AND Grade <= 100),
/*当主码是属性集合时使用 主码为表级完整性约束条件*/
PRIMARY KEY(Sno,Cno),
/*外键 字符长度需相同 表级完整性约束条件1*/
FOREIGN KEY (Sno) REFERENCES student(Sno),
FOREIGN KEY (Cno) REFERENCES course(Cno)
);
DROP TABLE student RESTRICT; /*联级删除*/
DROP TABLE student CASCADE; /*不是联级删除*/
/*
更改表
*/
ALTER TABLE student
ADD COLUMN <新列名> <数据类型>[完整性约束]
ADD <表级完整性约束>
DROP [COLUMN] <列名> [CASCADE|RESTRICT]
DROP CONSTRAINT <完整性约束名> [RESTRICT|CASCADE]
ALTER COLUMN <列名><数据类型>
/* 查询 */
SELECT DISTINCT Sno /* distinct 表示消除查询出来的重复元组*/
FROM sc;
WHERE Sno = '201215121';
SELECT Sname,Ssex /*查询不是,,*/
FROM student
WHERE Sdept NOT IN('CS','MA','IS');
/*
% 表示任意长度字符
_(下横线)表示任意单个字符
ESCAPE'\'为换码字符 紧跟在后面的通配符可转为普通字符
*/
SELECT *
FROM course
WHERE Cname LIKE 'DB\_%i' ;
/*
子查询的select中不能使用order by 字句,
order by 只能对最终的查询结果排序
*/
SELECT *
FROM student
ORDER BY Sage ASC;/*升序排序*/
SELECT *
FROM student
ORDER BY Sage DESC;/*降序排序*/
/*
聚集函数
count(列名) avg() max() min()sum()
*/
/*
分组查询
查询选修了三门以上课程的学生学号
having 语句作用于组 从中选择满足条件的组
*/
SELECT Cno
FROM sc
GROUP BY Sno
HAVING COUNT(*)>3;
SELECT first.Cno,second.Cpno
FROM course FIRST, course SECOND
WHERE first.Cpno = second.Cno; /*取别名*/
/*左外连接*/
SELECT student.Sno
/*左外连接 可去除重复值*/
SELECT student.`Sno`
FROM student LEFT OUTER JOIN sc USING (Sno);
/*
如果子查询的结果依赖于父查询 这类子查询称为相关子查询
*/
/*
EXISTS 代表存在量词 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值true 或逻辑假值false
*/
/*
集合查询 :并操作 UNION 交操作 INTERSECT 差操作 EXCEPT
*/
/*
数据更新
*/
UPDATE student
SET Grade = 0
WHERE Sno IN(
SELECT Sno
FROM student
WHERE Sdept = 'cs'
);
/*
数据元组删除
*/
delect
FROM student
WHERE Sno = '201215123';
/*
数据插入
*/
INSERT
INTO sc(Sno,Cno,Grade)
VALUES ('201215127','1',NULL);
/*
索引的操作
*/
CREATE UNIQUE [cluster] INDEX S1 ON student(Sno ASC); /*升序建立索引*/
ALTER INDEX <旧索引名> RENAME TO <新索引名>; /*改名*/
DROP INDEX <索引名>; /*删除*/
/*
视图操作
create view
drop view
update........set.......where
insert into ... values...
delete from ... where...
*/
CREATE VIEW <视图名> [<列名>,<列名>]
AS <子查询>
[WITH CHECK OPTION];
/*
用户权限操作
*/
GRANT <权限>,<权限>
ON <对象类型>,<对象名>
TO <用户>,<用户>
[WITH GRANT OPTION];
REVOKE <权限>,<权限>
ON <对象类型>,<对象名>
FROM <用户>,<用户>
[CASCADE|RESTRICT];