关系数据库SQL语言

来源:互联网 发布:淘宝宝贝展现词为0 编辑:程序博客网 时间:2024/05/17 03:35

SQL的特点:

(1)综合统一 (2)高度非过程化 (3)面向集合的操作方式

(4)语言简洁 易学易用


创建表(Create Table)   

Create TABLE S(      

Sno CHAR(5) NOT NULL UNIQUE,

Sname CHAR(30) UNIQUE,

Status CHAR(8),

CIty CHAR(20),

PRIMARY KEY(Sno));

由上述定义可以看出 NOT NULL UNIQUE定义了Sno的列级完整性约束条件

取值唯一 不能取空值


修改表:

ALTER TABLE S ADD Zap CHAR(6)   //向S表中增加Zap邮政编码

ALTER TABLE S MODIFY Status INT //更改Status字段为整型


索引建立与删除

通过索引 可以快速查找到所需要的信息

(1)通过创建唯一索引,可以保证数据记录的唯一性

(2)可以大大加快数据的检索速度

(3)可以加速表与表之间的连接


使用案例:

CREATE UNIQUE INDEX S-SNO ON S(Sno)

删除索引:

DROP INDEX StudentIndex    //删除StudentINDEX

视图是从一个或多个基本表中导出的表,其结构和数据是建立在对表的查询基础上的

CREATE VIEW 视图名(列表名)

AS SELECT 查询语句

[WITH CHECK OPTION]

视图删除: DROP VIEW 视图名


简单查询:

select * from  表名 Where....

连接查询:

SELECT Sno,Sname FROM S,SC,C 

WHERE S.Sno = SC.Sno AND SC.Cno = C.Cno AND C.Cname = 'MS'

等于做了三次等价连接 根据外键跨表查询


子查询与聚集查询

检索至少选修了课程号C1和C3的学生和学号

SELECT Sno

FROM SC SCX, SC SCY

WHERE SCX.Sno = SCY.Sno AND SCX.Cno = 'C1' AND SCY.Cno = 'C3';


子查询与聚集函数:

嵌套查询是指一个SELECT-FROM-WHERE查询块可以嵌入另一个查询块

这是等价连接的另一种实现方式

SELECT Sno,Sname FROM S,SC,C 

WHERE S.Sno = SC.Sno AND SC.Cno = C.Cno AND C.Cname = 'MS'

这句就可以进行修改

SELECT Sno,Sname FROM 

WHERE Sno IN  //SNO是一个外键

(SELECT Sno(必须对应) FROM SC

WHERE Cno In(

SELECT Cno FROM C WHERE Cname = 'MS'))   //通过外键把3个表连接起来 然后进行查询


聚集函数:

COUNT SUM AVG MAX MIN

SELECT MAX(G), MIN(G), MAX(G)-MIN(G)

FROM SC


查询其他系中比计算机系CS所有学生年龄都要小的学生的姓名及年龄

SELECT SName,SAge From S

WHERE AGE < ALL(

SELECT MIN(AGE) FROM S

WHERE SD = 'CS'

)


查询其他系中比计算机系CS某一学生年龄要小的学生的姓名及年龄

SELECT SName,SAge From S

WHERE AGE < ALL(

SELECT MIN(AGE) FROM S

WHERE SD = 'CS'

)


分组查询;

GROUP BY

HAVING限制分组条件

假如元祖在分组前按照某种方式加上限制

使得不需要的分组为空

在GROUP BY 后面跟一个HAVING即可

SELECT Jno,AVG(Qty)

FROM SPJ

GROUP BY Jno

HAVING COUNT (DISCOUNT(Sno)) > 2   //低于3家的供应商就不进行分组了

ORDER BY Jno DESC


字符串操作:

"%"匹配任意字符串 “_“匹配任意一个字符串

查询家庭住址包含"科技路"的学生的姓名的SQL语句

SELECT Sname FROM S

WHERE Add LIKE  “%科技路%”


SQL更新操作:

插入操作: INSERT INTO SC VALUES('3002', 'C4', 98)

删除操作:DELETE FRIN 表名  [WHERE 条件表达式]

修改操作:

将教师的工资增加5%

UPDATE teachers 

SET Salary = Salary * 1.05

将教师的工资少于1000的增加5%工资

UPDATE teachers

SET salary = salary * 1.05

WHERE Salary < 1000








原创粉丝点击