数据库系统工程师—8.2数据操作

数据操作

SELECT

查询基本格式

select * 
from table_name
where 条件表达式
group by 列名 [having 条件表达式]
order by 列名 [asc] | [desc];

where可用的运算符

连接查询

如果涉及两个以上的表,则称为连接查询

Select S.Sno,Sname
from S,SC
where S.Sno=SC.Sno and SC.Cno='C1';

子查询

  • 子查询也称嵌套查询
  • 嵌套查询是指一个SELECT-FROM-WHERE查询块中可以嵌入另一个查询块之中。在SQL中允许多重嵌套。

IN、NOT IN

Select Sno,Sname
from S
where Sno IN
Select Sno from SC Where Cno='C1'
);

EXISTS 、NOT EXISTS

Select Cno,Cname 
from C
where NOT EXISTS (
select * from SC where SC.Cno=C.Cno
);

聚集函数

分组查询

GROUP BY

对元组进行分组,此时的聚集函数只用于每个分组

Select Sno,AVG(Grade) 
from SC
GROUP BY Sno;

HAVING

在GROUP BY子句后面加上HAVING子句,对分组后做一个选择,去掉不满足HAVING后面的 那个条件的分组

Select Sno,AVG(Grade) 
from SC
GROUP BY Sno
HAVING AVG(Grade)>85;

字符串操作

字符串常用LIKE来进行匹配操作,区分大小写

  • “%”匹配任意长度字符串
    • Select Sname
      from S
      Where Addr LIKE '%科技路%';
  • “_”匹配任意一个字符
    • Select Sname,Sage,SD
      from S
      Where Sname LIKE '__国庆';

为了使模式中包含特殊字符,即%和_,允许使用ESCAPE关键词来定义转义符,LIKE语句后面紧跟“ESCAPE’\’”表明转义符’\’ 后面的特殊字符为普通字符。

  • LIKE ‘ab\%cd%’escape’\’   
    •  匹配所有以ab%cd开头的字符串
  • LIKE ‘ab\\cd%’escape’\’     
    • 匹配所有以ab\cd开头的字符串

集合操作

  • UNION(并)、UNION ALL(不去掉重复行)
  • INTERSECT(交)
  • EXCEPT(差)

外连接

*** JOIN ? ON exp

  • LEFT JOIN(左外连接)
  • RIGHT JOIN(右外连接)
  • FULL JOIN(全外连接)
SELECT S.Sno,Sname,SC.Cno,Grade 
FROM S
FULL JOIN SC
ON S.Sno=SC.Sno;

INSERT INTO语句

  • insert into 表名 values(值1,值2)
    • insert into SC
      VALUES ('3001', 'C1', '84');
  • insert into 表名(列名) values(值1)
    • INSERT INTO SC(SNO,CNO)
      VALUES ('3001', 'C2');

DELETE语句

delete from 表名 where exp;
delete from 表名; # 删除全部数据,保留表结构

UPDATE语句

 update 表名 set 列名=新值 where exp;

视图的查询与更新

视图的查询

建立计算机系(CS表示计算机系)学生的视图,并要求进行修改、插入操作时保证该视图只有计算机系的学生

CREATE VIEW CS_STUDENT
AS SELECT Sno,Sname,Sage,Sex
FROM Student
Where SD='CS'
WITH CHECK OPTION;

此时要查询计算机系年龄小于20岁的学生的学号及年龄的SQL语句如下

SELECT Sno,Sage FROM CS_Student WHERE Sage<20

系统执行该语句时,通常先将其转换成等价的对基本表的查询然后执行查询语句。也就是查询视图时,系统先从数据字典中取出视图的定义,然后将定义中的查询语句和对该视图的查询语句结合起来,形成一个修正的查询语句。对上例修正之后的查询语句为:

SELECT Sno,Sage FROM Student WHERE SD='CS' AND Sage<20;

视图的更新

SQL对视图的更新必须遵循以下规则:

(1)从多个基本表通过连接操作导出的视图不允许更新

(2)对使用了分组、聚集函数操作的视图不允许进行更新操作

(3)如果视图是从单个基本表通过投影、选取操作导出的则允许进行更新操作,且语法同基本表。

 

 

 

页面链接:https://www.datazzh.top/archives/2096/2025/04/21/
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇