数据库语言---SQL基本用法2(查询)
来源:互联网 发布:网络舆论战 编辑:程序博客网 时间:2024/04/26 07:22
1.
SELECT [ALL | DISTINCT] <目标列表达式>FROM <表名或视图名>[WHERE <条件表达式>][GROUP BY [列名1] [HAVING <条件表达式>]][ORDER BY <列名2> [ASC | DESC]];
根据WHERE子句条件表达式,从FROM指定的基本表或视图中找出满足条件的元组
如果有GROUP BY ,则将结果按照列名值进行分组,该列值相等的为一组。如果GROUP BY 带有HAVING,只有满足指定条件的组才会输出。
如果有ORDER BY ,则结果按照列名值进行排序。
2.查询指定列
SELECT Sno,Sname FROM Student;
查询全部列;SELECT *FROM Student;
3.查询经过计算的值
SELECT Sname,2004-SageFROM Student;
查询并用小写字母表示所有系
SELECT Sname,LOWER(Sdept)FROM Student;
指定别名改变查询结果列标题
SELECT Sname NAME,2004-Sage BIRTHDAYFROM Student;
4.取消查询结果中重复的行
SELECT DISTINCT SnoFROM SC;
5.查询计算机科学系全体学生的名单
SELECT SnameFROM StudentWHERE Sdept='CS';
查询时对全表进行扫描,取出一个元组,检查该元组在Sdept列的值是否等于CS。如果相等,取出来,否则,取下一个元组。
若在Sdept上建立索引,系统会利用该索引找出计算机系的元组,避免了全表的扫描,加快查询速度。但如果学生较少,不一定能提高查询效率。
查询不及格学生的学号,多门功课不及格,学号只列一次
SELECT DISTINCT SnoFROM SCWHERE Grade<60;
查询年龄在20-23岁学生的姓名
SELECT Sname,SageFROM StudentWHERE Sage BETWEEN 20 AND 23;
查询计算机系,数学系,信息系学生的姓名和性别
SELECT Sname,SsexFROM StudentWHERE Sdept IN (' CS', 'MA', ' IS');
6.字符串匹配 LIKE
匹配的字符串可以是一个完整的字符串,也可以是含有通配符%和_
%:代表任意长度的字符串 a%b代表以a开头,以b结尾任意长度的字符串
_:代表任意的单个字符
查找姓刘的同学的姓名,学号和性别SELECT Sname,Sno,SsexFROM StudentWHERE Sname LIKE '刘 %';
注意:一个汉字占两个字符 例如 ‘_ _ 阳%’是查找第二个字为阳的学生
ESCAPE ‘\’ 表示“\”为换码字符
SELECT Cno ,CcreditFROM CourseWHERE Cname LIKE 'DB\_Design' ESCAPE '\';
7.查询为空值
查询没有参加考试的学生的学号和课程号
SELECT Sno,CnoFROM SCWHERE Grade IS NULL;
8.使用ORDER BY 对查询结果进行排序
按照系号升序年纪降序进行排序
SELECT Sno ,GradeFROM SCWHERE Cno=‘3’ORDER BY Sdept, Grade DESC;
9.聚集函数 WHERE句子不能用聚集函数作为条件表达式
COUNT 统计个数
SUM 计算一列值的总和
AVG 计算一列值的平均值
查询学生总人数
SELECT COUNT (*)FROM Student ;
- GROUP BY 查询结果按某一列或多列的值分组,值相等的为一组
求各个课程号及相应的选课人数SELECT Cno,COUNT (Sno)FROM SCGROUP BY Cno;
查询选了3门以上课程学生学号
SELECT SnoFROM SCGROUP BY SnoHAVING COUNT(*)>3
WHERE 和HAVING区别在于作用对象不同,WHERE作用于基本表或视图,从中选择满足条件元组。HAVING作用于组,从中选择满足条件的组。
11.连接查询 LEFT OUT JOIN 左外连接
SELECT Student.* ,SC.*FROM Student ,SCWHERE Student.Sno=SC.Sno;
12.嵌套查询
一个SELECT-FROM-WHERE语句为一个查询块,将一个查询块放在另一个查询块的WHERE或HAVING短语的条件中的查询称为嵌套查询
SELECT SnameFROM StudentWHERE Sno IN ( SELECT Sno FROM SC WHERE Cno='2');
子查询不能使用ORDER BY子句,排序只能对最终查询结果排序
子查询一定要跟在比较符之后。
不相关查询:子查询不依赖于父查询
相关查询:子查询依赖于父查询
13.找出每个学生超过他选修课程平均成绩的课程号
SELECT Sno,CnoFROM SC xWHERE Grade>=(SELECT AVG (Grade) FROM SC y WHERE y.Sno=x.Sno);
x是表SC的别名,又称为元组变量,可以用来表示SC的一个元组。内层查询是求一个学生所有选修课程平均成绩的,至于哪个学生的平均成绩要看x.Sno,该值与父查询相关的,因此这类查询称为相关子查询。
14.带有EXISTS谓语的子查询
带有EXISTS谓语的子查询不返回任何数据,只产生逻辑的真或假
15.集合查询
集合操作主要包括并操作UNION ,交操作INTERSECT和差操作EXCEPT
并操作会自动去掉重复元组,如果保留重复元组使用UNION ALL操作符
16.插入元组 INSERT INTO 插入的属性列中没有出现的元组,新元组的这些列上将取空值
INSERT INTO Student (Sno ,Sname,Ssex,Sdept,Sage)VALUES('200215128','陈东',‘男’,‘IS’,‘18’)
字符串常数用单引号括起来
插入子查询结果
INSERT INTO Dept_age(Sdept,Avg_age)SELECT Sdept,AVG(Sage)FROM StudentGROUP BY Sdept;
17.修改数据 UPDATA
UPDATA StudentSET Sage=22WHERE Sno='20215111';
18.删除数据 DELETE
DELETEFROM StudentWHERE Sno=‘202111’;
删除所有学生选课记录
DELETE
FROM SC;
19.视图
视图是从一个或几个基本表导出的表,与基本表不同的是,是一个虚表。数据库中只存放视图的定义,不存放视图对应的数据
(1)建立视图
CREATE VIEW IS_StudentASSELECT Sno,Sname,SageFROM StudentWHERE Sdept=‘IS’
WITH CHECK OPTION 表示对视图进行更新插入删除时满足视图定义的条件
(2)删除视图
DROP VIEW <视图名> [CASCADE] 删除视图及导出的所有视图
- 数据库语言---SQL基本用法2(查询)
- SQL查询语言基本教程(2)
- SQL查询语言基本教程(2)
- 数据库语言---SQL基本用法1
- SQL查询语言基本教程(1)
- SQL查询语言基本教程(3)
- SQL查询语言基本教程(3)
- Sql数据库查询语言
- 基本数据库sql 语言,
- SQL基本查询语句(Northwind数据库)
- orcale数据库基本查询语句(SQL)
- sql基本查询语言课件
- 数据库的基本SQL查询
- SQL查询语言Select用法
- 源码-Oracle数据库管理-第九章-SQL查询-Part 2(基本查询)
- SQL语言 - 最基本的查询语句
- 【数据库之SQL复杂查询】SQL复杂查询基本语法
- 数据库SQL语言中的连接查询(一)
- 实现仿windows正在加载loading动画
- 51nod 1624 取余最长路
- Mac/Eclipise环境下调试Postgresql代码
- oracle 函数
- nil Nil NSNull NULL
- 数据库语言---SQL基本用法2(查询)
- 使用PendingIntent.getBrocast() 在 onReceive 中接受不到intent 的问题
- 变态跳台阶问题
- Android文件存储的问题:ClassLoader和实现Parcelable接口后 详解及用途
- 角点检测,输出坐标
- servlet 常用的api
- TCP基础知识:(一)TCP拥塞控制
- Webview展示网页,超链接使用默认浏览器打开
- WebView常见问题汇总以及解决方案