常用查询和更新sql语句及细节问题

一、查找语句
1、可以改变列名,使用表达式
select sname Name,'Year of Birth:' BIRTH,2004-Sage Birthday,LOWER(Sdept) DEPARTMENT
from Student;
2、Select Sname from Student where Sdept = 'CS'的查询过程是:RDBMS对Student执行全表扫描,取出一个元组,如果其Sdept='CS'则取出来,然后继续查询下一个元组,效率很慢。若在Sdept列建立索引,就可以避免全表扫表。
3、若用户要查询的字符串本身含有通配符%或_,则需要使用ESCAPE '<换码字符>',语句如下:
select cno,credit
from course
where cname like 'DB\_Design' ESCAPE '\';
4、Order by
select *
from Student
order by Sdept,Sage DESC
排序时,默认值是ASC,对于空值,若升序排列,空值排在最后面,若降序排列,空值排在最前面。
5、聚集函数
除Count(*)外,其他聚集函数都跳过空值处理非空值。对于AVG亦然,求平均是针对非空值。
select count(distinct sno)
from sc;
6、group by 同 having 结合使用,不可使用where
7、连接查询
连接运算符为=的连接成为等值连接,不为=的连接为非等值连接。这些连接不去掉重复的列。去掉重复列的连接成为自然连接。
8、外连接
外连接分为左外连接和右外连接。
Select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from Student LEFT OUT JOIN SC ON (Student.sno=SC.sno);

Select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from Student LEFT OUT JOIN SC USING(Sno);
9、相关子查询
select Sno,Cno
From SC x
where Grade >=
(Select Avg(grage)
from SC y
where x.Sno=y.Sno
);
10、集合查询
集合操作主要包括并操作UNION,交操作INTERSECT和差操作EXCEPT。参加集合操作的各查询结果的列数必须相同,对应项的数据类型也必须相同。
select * from SC
where Cno='1'
INTERSECT
select * from SC
where Cno='2'

二、更新语句
向表中添加、修改和删除若干行数据都看做更新。
1、插入数据
向表中插入数据可以插入一个元组,也可以插入一个子查询结果(可一次插入多个元组)。
insert into SC
VALUES('200215128','1',NULL);
如果没有指出SC的属性名,则对于空的列要显示指明null。
insert into Dept_age(Sdept,Avg_age)
select Sdept,AVG(Sage)
from Student
Group by Sdept;
2、修改数据
UPDATE SC
SET Grade = 0
where 'CS' = (Select Sdept FROM Student
where Student.Sno=Sc.Sno);
3、删除数据
delete from Student;
delete from SC
where 'CS' = (Select Sdept FROM Student
where Student.Sno=Sc.Sno);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值