SQL基本用法介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.1.7 group by子句
对查询结果进行分组合并。 例:查询学生的平均成绩并按平均成绩排序 Select a.SNO, a.SNAME, AVG(b.SCORE) as AVG_SCORE from Student a,Curse b where a.SNO= b.SNO Group by a.SNO,a.SNAME Order By AVG(b.SCORE)
2.2.6 多层SQL
例:查询所有平均成绩在85分以上学生的名单
Select * from student where sno in (select sno from Curse group by sno having avg(score)>=85)
试比较: SELECT a.sno, a.sname, avg(b.score) as avg_score FROM student AS a, Curse AS b WHERE a.sno=b.sno GROUP BY a.sno, a.sname HAVING avg(b.score)>=85
2.2.8 join





表的连接有内连接和外连接,其中外连接又分为左外连接、右外 连接和全外连接 内连接(或简单表连接inner join),就是只在结果中包含根据 连接谓词(on后面的语句)所匹配的行,不包含那些不匹配的行。 左外连接(left join)返回那些存在于左表而右表中却没有的行, 加上内连接的行。那些来自保留行表(左表)的未匹配行会被保 留,而那些来自替换 NULL 的表(右表)中的行会以 NULL 替换。 右外连接(right join)返回那些存在于右表而左表中没有的行, 加上内连接的行。那些来自保留行表(右表)的未匹配行会被保 留,而那些来自替换 NULL 的表(左表)中的行会由 NULL 替换。 全外连接(full join)返回那些存在于右表但不存在于左表的行, 加上那些存在于左表但不存在于右表的行,还有内连接的行。
2.2.7 union
将两个以上的表格或是查询的结果组合起来,但组合的两部分内容必须 具有相同的结构。 例:将两个表中的男生数据提出来放在一起 Select * from student1 where ssex=‘ 男’ union select * from student2 where ssex=‘男’
1.2 SQL命令分组



DML(Data Manipulation Language,数据 操作语言):用于检索或者修改数据 DDL(Data Definition Language,数据定 义语言): 用于定义数据的结构,比如 创 建、修改或者删除数据库对象 DCL(Data Control Language,数据控制语 言):用于定义数据库用户的权限
2.1.2 predicate
ALL,DISTINCT, DISTINCTROW
DISTINCT: Select DISTINCT SNAME from student
2.1.3 查询字段
所有字段:Select * from Student 指定查询字段:Select SNO,SNAME from Student 字段换名: Select SNO as 学号,SNAME as 姓名 from Student 查询多表字段: Select a.SNO,a.SNAME,b.CNAME,b.SCORE from Student a,Curse b where a.SNO=b.SNO Select a.*,b.CNAME,b.SCORE from Student a,Curse b where a.SNO=b.SNO
SQL语法介绍
1 SQL简介

SQL是什么 SQL功能简介
1.1 什么是SQL
SQL(Structured Query Language,结构 查询语言)是一个功能强大的数据库操纵语言。 SQL使用场合:

应用程序与数据库的通讯 通过DBMS或第三方工具,完成一些数据库的操作任务, 比如在数据库中更新数据,或者从数据库中检索数据
1.2.1 DML命令
SELECT:用于检索数据 INSERT:用于增加数据到数据库 UPDATE:用于从数据库中修改现存的数据 DELETE:用于从数据库中删除数据

1.2.2 DDL命令
CREATE TABLE :创建表结构 ALTER TABLE :修改表结构 DROP TABLE :从数据库中删除表 CREATE INDEX :创建索引 DROP INDEX :删除索引
2.2.3运算符及表达式
2、关系运算符 < 小于 > 大于 = 等于 <= 小于等于 >= 大于等于 <> 不等于 字符的比较是按ASCII码的大小进行的,汉字是按机内码比较大小的。 对于表达式则是先算表达式的值,然后用值比较大小。 例: Select * from student where SOLD+45>=60
Select top 2 a.SNO, a.SNAME, b.CNAME, b.SCORE from Student a,Curse b where a.SNO= b.SNO
2.1.5 where子句
指定从表中获取哪些记录。 Select * from student where SSEX=‘女’ Select a.SNO, a.SNAME, b.CNAME, b.SCORE from Student a,Curse b where a.SNO= b.SNO and b.SCORE>=90
2.2.3运算符及表达式
3、逻辑运算符 AND 逻辑与 OR 逻辑或 NOT 逻辑非 逻辑运算符的优先次序为:NOT→AND→OR 表达式的运算顺序是先关系表达式后逻辑表达式 例: Select * from student where (SOLD+45>=60 and SSEX=‘ 男 ’ ) or (SOLD+45>=55 and SSEX=‘女’)
2.2 SQL的特殊操作



IN 操作符 LIKE 操作符 SQL 的运算符及表达式 SQL 的统计函数 Between … and 运算符 Union 操作 INNER JOIN操作
2.2.1 in操作符
用在where后,当同时查询多个条件时,用以简化写法 Select * from student where SNAME in (‘李明’,‘成功’) 等价SQL语句: Select * from student where SNAME =‘李明’ or SNAME =‘成功’ exists/not exists 多层SQL查询

2.2.2 like操作符
实现模糊查询。
例:找出所有姓李的学生 Select * from student where SNAME like ‘李%’
2.2.3运算符及表达式
1、算术运算符 ( ) 分组括号 *、/ 乘、除 +、- 加、减 算术运算符的优先次序为括号、乘方、乘除和加减,同级运算从左到右依 次进行 例: 还有多少年退休: Select SNO,SNAME,60-SOLD as TX_OLD from student 45年以后已退休的有哪些: Select * from student where SOLD+45>=60

1.2.3 DCL命令
ALTER PASSWORD :设置访问口令 GRANT :分配权限 REVOKE :收回权限 CREATE SYNONYM :创建替代用户

1.2.4 SQL功能概述

建立数据库的表格 改变数据库系统环境设置 针对某个数据库或表格,授予用户存取权限 对数据库表格建立索引值 修改数据库表格结构。(新建、删除或是修改表格字段) 对数据库进行数据的新建、删除、修改、查询
2.1.4 From子句
指定从哪些表中获取数据,可以同时给表取一个别名。
Select top 2 Student.SNO, Student.SNAME, Curse.CNAME, Curse.SCORE from Student,Curse where Student.SNO= Curse.SNO
2 SQL命令

常用SQL命令 SQL语法
2.1 Select命令
功能:从数据库中检索所需要信息。 例:从学生表(student)中检索出李明的 档案信息,其SQL语法为: Select * from student where SNAME=‘李明’
2.1.1 Select 命令语法
SELECT [predicate] {*|table.*| [table.]field [,[table.]field2 [,...]]} [AS alias1 [,alias2[,...]]] FROM tableexpression [,...] [IN externaldatabase] [WHERE...] [GROUP BY...] [HAVING...] [ORDER BY...] [WITH OWNERACCESS OPTION]
2.1.8 having子句
与group by子句配套使用,与where类似,但主要是针对 分组字段的条件。
例:查询平均成绩在85分以上的学生,并显示平均成绩 Select a.SNO, a.SNAME, AVG(b.SCORE) as AVG_SCORE from Student a,Curse b where a.SNO= b.SNO Group by a.SNO,a.SNAME having AVG(b.SCORE) >=85 错误写法: Select a.SNO, a.SNAME, AVG(b.SCORE) as AVG_SCORE from Student a,Curse b where a.SNO= b.SNO and AVG(b.SCORE) >=85 Group by a.SNO,a.SNAME
2.2.4 数学函数
1、AVG(字段名或表达式):算数平均数 Select avg(sold) as avg_old from student 2、COUNT (字段名或表达式) :计算记录条数 Select COUNT(*) as NSRS from student where SSEX=‘女’ 3、SUM (字段名或表达式) :返回某特定字段或是运算的总和数值。 Select sum(score) as t_score from Curse where sno=‘870101’ 4、MAX (字段名或表达式)、 MIN (字段名或表达式):求最大、最小值 上述统计函数多与group by 联合使用。 例:统计出每门课的最高分 Select CNAME,MAX(SCORE) as MAX_SCORE,MIN(Score) as MIN_SCORE from Curse group by CNAME
2.2.5 BETWEEN...AND
决定某一数值是否介于特定的范围之内 例:查询年龄在18-20岁之间的学生 Select * from student where sold BETWEEN 25 AND 30 等价于: Select * from student where sold>=25 AND sold<=30
Select a.SNO, a.SNAME, b.CNAME, b.SCORE from Student a,Curse b where a.SNO= ຫໍສະໝຸດ Baidu.SNO and ((b.SCORE>=90 and a.SSEX=‘男’) or (b.SCORE>=80 and a.SSEX=‘女’))
2.1.6 order by子句
指定结果如何排序:升序:ASC;降序:DESC。 Select * from student order by SNAME Select a.SNO, a.SNAME, b.CNAME, b.SCORE from Student a,Curse b where a.SNO= b.SNO order by a.SNAME, b.SCORE DESC
相关文档
最新文档