SQL基本操作:
模式的定义和删除:
模式的定义和删除:
CREATE SCHEMA<模式命> AUTHORIZATION<用户名>[<表定义>|<视图定义>|<授权定义>];
删除:
DROP SCHEMA<模式名><CASCADE(级联)|RESTRICT(限制)>;
基本表的定义删除和修改:
创建:
删除:
DROP SCHEMA<模式名><CASCADE(级联)|RESTRICT(限制)>;
基本表的定义删除和修改:
创建:
CREATE TABLE eg(
Sno CHAR(9) PRIMARY KEY,//列级完整性约束,主码
Sname CHAR(20) UNIQUE //Sname取唯一值
Ssex CHAR(40) NOT NULL //不能取空值
PRIMARY KEY(key1,key2) //主码由两个属性构成,必须作为表级完整性定义
FOREIGH KEY(Sno) REFERENCES table(Sno)//Sno是外码,参见表是table
)
修改:
ALTER TABLE table ADD Sqq INT;//在table表中加入一行sqq
ALTER TABLE table ALTER COLUME Sage CHAR//将Sage行改为char
ALTER TABLE Course ADD UNIQUE(Sage) //给Sage添加条件
删除:
DROP TABLE table <CASCADE(级联)|RESTRICT(限制)>
数据查询:
SELECT Sname,Sno
FROM Table; //从表中查取多行数据
SELECT Sname name//别名
FROM Table; //从表中查取多行数据
SELECT DISTINCT Sno FROM Table//去掉表中的重复行(默认为ALL即保留)
SELECT Sname
FROM Table
WHERE 查询条件(比较,in,like,逻辑运算等)
查询条件:
比较大小
确定范围//eg:BETWEEN 20 AND 30
确定集合//eg:IN('','','')
字符匹配//eg:LIKE ''//%通配符,_只匹配一个,\转义字符
空值//eg:IS NULL
ORDER BY 子句:
ORDER BY Sage,Sdept DESC//按Sage升序排列,Sdept降序排列
Sno CHAR(9) PRIMARY KEY,//列级完整性约束,主码
Sname CHAR(20) UNIQUE //Sname取唯一值
Ssex CHAR(40) NOT NULL //不能取空值
PRIMARY KEY(key1,key2) //主码由两个属性构成,必须作为表级完整性定义
FOREIGH KEY(Sno) REFERENCES table(Sno)//Sno是外码,参见表是table
)
修改:
ALTER TABLE table ADD Sqq INT;//在table表中加入一行sqq
ALTER TABLE table ALTER COLUME Sage CHAR//将Sage行改为char
ALTER TABLE Course ADD UNIQUE(Sage) //给Sage添加条件
删除:
DROP TABLE table <CASCADE(级联)|RESTRICT(限制)>
数据查询:
SELECT Sname,Sno
FROM Table; //从表中查取多行数据
SELECT Sname name//别名
FROM Table; //从表中查取多行数据
SELECT DISTINCT Sno FROM Table//去掉表中的重复行(默认为ALL即保留)
SELECT Sname
FROM Table
WHERE 查询条件(比较,in,like,逻辑运算等)
查询条件:
比较大小
确定范围//eg:BETWEEN 20 AND 30
确定集合//eg:IN('','','')
字符匹配//eg:LIKE ''//%通配符,_只匹配一个,\转义字符
空值//eg:IS NULL
ORDER BY 子句:
ORDER BY Sage,Sdept DESC//按Sage升序排列,Sdept降序排列
聚集函数(不能用作条件表达式)(只用于SELECT和HAVING语句):
COUNT()//统计个数
SUM() //求和
AVG() //求平均数
MAX()
MIN()
GROUP BY 子句:
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*)>3
连接查询:
等值与非等值查询:
eg:SELECT Student.Sno,Sc.Sname
FROM Student,Sc
WHERE Student.Sno=Sc.Sno AND Sc.Sno='2'
自身连接:
SELECT FIRST.Cno,SECOND.Cpno
FROM Course FIRST,Course SECOND
WHERE FIRST.Cpno=SECOND.Cno
多表连接:
SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno
嵌套查询(不相关子查询可用连接查询替代):
SELECT Sname
FROM Student
WHERE Sno IN
(SELECT Sno
FROM SC
WHERE Cno='2'
);
eg:找出每个学生超出他自己平均成绩的课程号:
SELECT Sno,Cno
FROM SC x
WHERE Grade>=(SELECT AVG(Grade)
FROM SC y
WHERE y.Sno=x.Sno
)
带有EXISTS谓词的子查询(只产生逻辑真假):
SELECT Sname
FROM Student
WHERE EXISTS(
SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno='1'
)
集合查询
SELECT Sno
FROM SC
WHERE Cno='1'
UNION//并集|intersect 交集|except 差集
SELECT Sno
FROM SC
WHERE Cno='2'
数据更新:
插入:
COUNT()//统计个数
SUM() //求和
AVG() //求平均数
MAX()
MIN()
GROUP BY 子句:
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*)>3
连接查询:
等值与非等值查询:
eg:SELECT Student.Sno,Sc.Sname
FROM Student,Sc
WHERE Student.Sno=Sc.Sno AND Sc.Sno='2'
自身连接:
SELECT FIRST.Cno,SECOND.Cpno
FROM Course FIRST,Course SECOND
WHERE FIRST.Cpno=SECOND.Cno
多表连接:
SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno
嵌套查询(不相关子查询可用连接查询替代):
SELECT Sname
FROM Student
WHERE Sno IN
(SELECT Sno
FROM SC
WHERE Cno='2'
);
eg:找出每个学生超出他自己平均成绩的课程号:
SELECT Sno,Cno
FROM SC x
WHERE Grade>=(SELECT AVG(Grade)
FROM SC y
WHERE y.Sno=x.Sno
)
带有EXISTS谓词的子查询(只产生逻辑真假):
SELECT Sname
FROM Student
WHERE EXISTS(
SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno='1'
)
集合查询
SELECT Sno
FROM SC
WHERE Cno='1'
UNION//并集|intersect 交集|except 差集
SELECT Sno
FROM SC
WHERE Cno='2'
数据更新:
插入:
INSERT
INTO table(column)
VALUES();
//也可插入子查询结果
修改数据:
INTO table(column)
VALUES();
//也可插入子查询结果
修改数据:
UPDATE 表名
SET column=''
WHERE ;
//带子查询的修改语句
SET column=''
WHERE ;
//带子查询的修改语句
删除数据:
DELETE
FROM table
WHERE ;
空值处理:
WHERE IS NULL
DELETE
FROM table
WHERE ;
空值处理:
WHERE IS NULL
视图:
CREATE VIEW name
AS
SELECT column
FROM
WHERE;
(WITH CHECK OPTION) //表示对视图进行操作时需要满足定义中的谓词条件
删除视图:
DROP VIEW name |CASCADE
CREATE VIEW name
AS
SELECT column
FROM
WHERE;
(WITH CHECK OPTION) //表示对视图进行操作时需要满足定义中的谓词条件
删除视图:
DROP VIEW name |CASCADE
查询视图:
更新视图:(与基本表操作基本相同但需要直接更新表)
更新视图:(与基本表操作基本相同但需要直接更新表)