




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SQL语法介绍,主讲:张明清 单位:贵州工业大学资源环境学院 Email: 电话1 SQL简介,SQL是什么 SQL功能简介,1.1 什么是SQL,SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库操纵语言。 SQL使用场合: 应用程序与数据库的通讯 通过DBMS或第三方工具,完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据,1.2 SQL命令分组,DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据 DDL(Data Definition Langua
2、ge,数据定义语言): 用于定义数据的结构,比如 创建、修改或者删除数据库对象 DCL(Data Control Language,数据控制语言):用于定义数据库用户的权限,1.2.1 DML命令,SELECT:用于检索数据 INSERT:用于增加数据到数据库 UPDATE:用于从数据库中修改现存的数据 DELETE:用于从数据库中删除数据,1.2.2 DDL命令,CREATE TABLE :创建表结构 ALTER TABLE :修改表结构 DROP TABLE :从数据库中删除表 CREATE INDEX :创建索引 DROP INDEX :删除索引,1.2.3 DCL命令,ALTER PA
3、SSWORD :设置访问口令 GRANT :分配权限 REVOKE :收回权限 CREATE SYNONYM :创建替代用户,1.2.4 SQL功能概述,建立数据库的表格 改变数据库系统环境设置 针对某个数据库或表格,授予用户存取权限 对数据库表格建立索引值 修改数据库表格结构。(新建、删除或是修改表格字段) 对数据库进行数据的新建、删除、修改、查询,2 SQL命令,常用SQL命令 SQL语法,2.1 Select命令,功能:从数据库中检索所需要信息。 例:从学生表(student)中检索出李明的档案信息,其SQL语法为: Select * from student where SNAME=李
4、明,2.1.1 Select 命令语法,SELECT predicate *|table.*| table.field ,table.field2 ,. AS alias1 ,alias2,. FROM tableexpression ,. IN externaldatabaseWHERE.GROUP BY.HAVING.ORDER BY.WITH OWNERACCESS OPTION,2.1.2 predicate,ALL,DISTINCT, DISTINCTROW,TOP n DISTINCT: Select DISTINCT SNAME from student TOP n: Selec
5、t top 2 * 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,
6、2.1.4 From子句,指定从哪些表中获取数据,可以同时给表取一个别名。 Select top 2 Student.SNO, Student.SNAME, Curse.CNAME, Curse.SCORE from Student,Curse where Student.SNO= Curse.SNO 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=
7、女 Select a.SNO, a.SNAME, b.CNAME, b.SCORE from Student a,Curse b where a.SNO= b.SNO and b.SCORE=90 Select a.SNO, a.SNAME, b.CNAME, b.SCORE from Student a,Curse b where a.SNO= b.SNO and (b.SCORE=90 and a.SSEX=男) or (b.SCORE=80 and a.SSEX=女),2.1.6 order by子句,指定结果如何排序:升序:ASC;降序:DESC。 Select * from stud
8、ent 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,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 Orde
9、r By AVG(b.SCORE),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 Stu
10、dent a,Curse b where a.SNO= b.SNO and AVG(b.SCORE) =85 Group by a.SNO,a.SNAME,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 =李明 o
11、r SNAME =成功 多层SQL查询,2.2.2 like操作符,实现模糊查询。 例:找出所有姓李的学生 Select * from student where SNAME like 李* 或: Select * from student where SNAME like 李%,2.2.2 like操作符,1、用“*”或“%”匹配多个字符 (1)a*a:可筛选:aa,aBa,aBBBa,不能筛选:aBC (2)*ab*:可筛选:abc,AABB,Xab,不能筛选:aZb,bac 例: 以“李”开头:Select * from student where SNAME like “李*“ 以“明
12、”结尾:Select * from student where SNAME like “*明” “王”开头、“艳”结尾:Select * from student where SNAME like “王*艳” 包含有“李”:Select * from student where SNAME like “*李*” 2、单一字符 a?a:可筛选:aaa,a3a,aBa,不能筛选:aBBBa 3、单一数字 a#a:可筛选:a0a,a1a,a2a,不能筛选:aaa,a10a,2.2.3运算符及表达式,1、算术运算符 ( ) 分组括号 *、/ 乘、除 +、- 加、减 算术运算符的优先次序为括号、乘方、乘
13、除和加减,同级运算从左到右依次进行 例: 还有多少年退休: Select SNO,SNAME,60-SOLD as TX_OLD from student 45年以后已退休的有哪些: Select * from student where SOLD+45=60,2.2.3运算符及表达式,2、关系运算符 大于 = 等于 = 大于等于 不等于 字符的比较是按ASCII码的大小进行的,汉字是按机内码比较大小的。 对于表达式则是先算表达式的值,然后用值比较大小。 例: Select * from student where SOLD+45=60,2.2.3运算符及表达式,3、逻辑运算符 AND 逻辑与
14、 OR 逻辑或 NOT 逻辑非 逻辑运算符的优先次序为:NOTANDOR 表达式的运算顺序是先关系表达式后逻辑表达式 例: Select * from student where (SOLD+45=60 and SSEX=男) or (SOLD+45=55 and SSEX=女),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 (字段名
15、或表达式) :返回某特定字段或是运算的总和数值。 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岁之间的学生 S
16、elect * from student where sold BETWEEN 25 AND 30 等价于: Select * from student where sold=25 AND sold=30,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
17、a, Curse AS b WHERE a.sno=b.sno GROUP BY a.sno, a.sname HAVING avg(b.score)=85,2.2.7 union,将两个以上的表格或是查询的结果组合起来,但组合的两部分内容必须具有相同的结构。 例:将两个表中的男生数据提出来放在一起 Select * from student1 where ssex=男 union select * from student2 where ssex=男,2.2.8 inner join,当某一个共同的字段数据相等时,将两个表格的记录加以组合。 例:从两个表中提取学生档案及成绩 SELECT s
18、tudent.sno, student.sname, Came, Curse.score FROM student INNER JOIN Curse ON student.sno=Curse.sno,2.3 数据更新语句,Update:更新表中已有的数据 Insert into:向表添加新的数据 Delete From:删除表中的记录,2.3.1 update语句,更新指定条件的数据。 UPDATE table SET newvalue WHERE criteria 例:更新学生成绩 Update Curse set score=65 where sno= 870102 and cname= 微机原理与应用 Update Curse set score=75,cname=数据结构 where sno= 870102 and cname= 微机原理与应用 所有学生的年龄加1 Update student set sold=sold+1,2.3.1 insert into语句,向表中增加新的数据。 INSERT INTO () values () 例:增加新的成绩 Insert into Curse (sno,cname,score) values (870102,数据结构,75),2.3.2 insert into语句,向表中增加新的数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论