SQL总结

数据更新

SQL的数据插入语句INSERT通常有两种形式,一种是插入一个元组,另一种是插入子查询结果。后者可以一次插入多个元组

插入元组

插入元组的INSERT语句格式为:

INSERT
INTO <表名> [(<属性列1> [,<属性列2 >)]
VALUES (<常量1> [,<常量2>]);
插入子查询结果

子查询不仅可以嵌套在SELECT语句中用以构造父查询的条件,也可以嵌套在INSERT语句中用以生成要插入的批量数据

插入子查询的语句格式为:

INSERT
INTO <表名> [(属性列1) [<属性列2>...]]
子查询;

修改数据

修改数据又称更新操作,一般格式为

UPDATE <表名>
SET <列名>=<表达式> [,<列名>=<表达式>]...
[WHERE <条件>];

删除数据

删除语句的一般格式为:

DELETE
FROM <表名>
[WHERE <条件>]

数据查询

单表查询

SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]FROM <表名或视图名>[,<表名或视图名> ]|(SELECT 语句)
[AS]<别名> 
[ WHERE <条件表达式> ] 
[ GROUP BY <列名1> [ HAVING <条件表达式> ] ]
	[ ORDER BY <列名2> [ ASC|DESC ] ]

ORDER BY子句

例3.39:查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列

SELECT Sno,Grade
FROM SC
WHERE Cno='3'
ORDER BY Grade DESC; 

GROUP BY子句

GROUP BY子句将查询结果按某一列或多列的值分组,值相等的为一组

例3.46:求各个课程号及相应的选课人数

SELECT Cno,COUNT(Sno)
FROM SC
GROUP BY Cno;

连接查询

等值与非等值查询

连接查询WHERE子句中用来连接两个表的条件称为连接条件或连接谓词

[<表名1>.] <列名1> <比较运算符> [<表名2>.] <列名2>

e.g. Student.Sno = SC.Sno
比较运算符主要有= > < >= <= != <>[<表名1>.] <列名1> BETWEEN [<表名2>.] <列名2> AND [<表名3>.] <列名3>

连接条件中的各连接字段类型必须是可比的,但名字不一定要相同
自身连接

顾名思义,就是一个表和自己相连

例3.52:查询每一门课的间接选修课(先修课的先修课)

SELECT FIRST.Cno SECOND.Cpno
FROM Course FIRST,Course SECOND
WHERE SECOND.Cno = FIRST.Cpno;

嵌套查询

IN谓词用于子查询结果是一个集合的情况

带有EXISTS谓词的子查询

EXISTS代表存在量词,带有EXISTS的子查询不返回任何数据,只产生true和false两个值

集合查询

集合操作主要包括:
  并操作  UNION
  交操作  INTERSECT
  差操作  EXCEPT

视图

通过练习,其实我认为视图就是一种临时表,用来暂时将某一些想要的属性转移到一张表中

建立视图

建立视图的 CREATE VIEW 命令建立视图

CREATE VIEW <视图名> [(<列名> [,<列名>] ...)]
AS <子查询>
[WITH CHECK OPTION]

WITH CHECK OPTION表示对视图进行UPDATEINSERTDELETE操作时要保证更新、插入、删除的行满足视图定义中的谓词条件

删除视图

删除视图语句的一般格式是

DROP VIEW <视图名> [CASCADE]

CASCADE是级联(与其有关的全部删除)

查询视图

查询视图的用法与查询基本表的用法是一样的,可参照上面

更新视图

例3.95:将信息系学生视图IS_Student中学号为”201215122“的学生姓名改为”刘辰“

UPDATE IS_Student
SET Sname='刘辰'
WHERE Sno='201215122';

存储过程

修改存储过程的语法格式:

ALTER PROCEDURE <存储过程名称>

删除修改过程名称

DROP PROCEDURE <存储过程名称>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值