1 / 38

SQL 语法介绍

SQL 语法介绍. 1 SQL 简介. SQL 是什么 SQL 功能简介. 1.1 什么是 SQL. SQL(Structured Query Language, 结构查询语言)是一个功能强大的数据库操纵语言。 SQL 使用场合: 应用程序与数据库的通讯 通过 DBMS 或第三方工具,完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据. 1.2 SQL 命令分组. DML(Data Manipulation Language, 数据操作语言):用于检索或者修改数据

Download Presentation

SQL 语法介绍

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL语法介绍

  2. 1 SQL简介 • SQL是什么 • SQL功能简介

  3. 1.1 什么是SQL SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库操纵语言。 SQL使用场合: • 应用程序与数据库的通讯 • 通过DBMS或第三方工具,完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据

  4. 1.2 SQL命令分组 • DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据 • DDL(Data Definition Language,数据定义语言): 用于定义数据的结构,比如 创建、修改或者删除数据库对象 • DCL(Data Control Language,数据控制语言):用于定义数据库用户的权限

  5. 1.2.1 DML命令 • SELECT:用于检索数据 • INSERT:用于增加数据到数据库 • UPDATE:用于从数据库中修改现存的数据 • DELETE:用于从数据库中删除数据

  6. 1.2.2 DDL命令 • CREATE TABLE :创建表结构 • ALTER TABLE :修改表结构 • DROP TABLE :从数据库中删除表 • CREATE INDEX :创建索引 • DROP INDEX :删除索引

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

  8. 1.2.4 SQL功能概述 • 建立数据库的表格 • 改变数据库系统环境设置 • 针对某个数据库或表格,授予用户存取权限 • 对数据库表格建立索引值 • 修改数据库表格结构。(新建、删除或是修改表格字段) • 对数据库进行数据的新建、删除、修改、查询

  9. 2 SQL命令 • 常用SQL命令 • SQL语法

  10. 2.1 Select命令 功能:从数据库中检索所需要信息。 例:从学生表(student)中检索出李明的档案信息,其SQL语法为: Select * from student where SNAME=‘李明’

  11. 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]

  12. 2.1.2 predicate ALL,DISTINCT, DISTINCTROW,TOP n DISTINCT: Select DISTINCT SNAME from student TOP n: Select top 2 * from student

  13. 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

  14. 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

  15. 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 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=‘女’))

  16. 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

  17. 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)

  18. 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

  19. 2.2 SQL的特殊操作 • IN 操作符 • LIKE 操作符 • SQL 的运算符及表达式 • SQL 的统计函数 • Between … and 运算符 • Union 操作 • INNER JOIN操作

  20. 2.2.1 in操作符 • 用在where后,当同时查询多个条件时,用以简化写法 Select * from student where SNAME in (‘李明’,‘成功’) 等价SQL语句: Select * from student where SNAME =‘李明’or SNAME =‘成功’ • 多层SQL查询

  21. 2.2.2 like操作符 实现模糊查询。 例:找出所有姓李的学生 Select * from student where SNAME like ‘李*’ 或: Select * from student where SNAME like ‘李%’

  22. 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 “李*“ 以“明”结尾: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"

  23. 2.2.3运算符及表达式 1、算术运算符 ( ) 分组括号 *、/ 乘、除 +、- 加、减 算术运算符的优先次序为括号、乘方、乘除和加减,同级运算从左到右依次进行 例: 还有多少年退休: Select SNO,SNAME,60-SOLD as TX_OLD from student 45年以后已退休的有哪些: Select * from student where SOLD+45>=60

  24. 2.2.3运算符及表达式 2、关系运算符 < 小于 > 大于 = 等于 <= 小于等于 >= 大于等于 <> 不等于 字符的比较是按ASCII码的大小进行的,汉字是按机内码比较大小的。 对于表达式则是先算表达式的值,然后用值比较大小。 例: Select * from student where SOLD+45>=60

  25. 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=‘女’)

  26. 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

  27. 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

  28. 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

  29. 2.2.7 union 将两个以上的表格或是查询的结果组合起来,但组合的两部分内容必须具有相同的结构。 例:将两个表中的男生数据提出来放在一起 Select * from student1 where ssex=‘男’union select * from student2 where ssex=‘男’

  30. 2.2.8 innerjoin 当某一个共同的字段数据相等时,将两个表格的记录加以组合。 例:从两个表中提取学生档案及成绩 SELECT student.sno, student.sname, Curse.cname, Curse.score FROM student INNER JOIN Curse ON student.sno=Curse.sno

  31. 2.3 数据更新语句 • Update:更新表中已有的数据 • Insert into:向表添加新的数据 • Delete From:删除表中的记录

  32. 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

  33. 2.3.1 insert into语句 向表中增加新的数据。 INSERT INTO <表名> (<字段列表>) values (<值列表>) 例:增加新的成绩 Insert into Curse (sno,cname,score) values (‘870102’,’数据结构’,75)

  34. 2.3.2 insert into语句 向表中增加新的数据。 INSERT INTO <表名> (<字段列表>) values (<值列表>) 例:增加新的成绩 Insert into Curse (sno,cname,score) values (‘870102’,’数据结构’,75) 增加名单: Insert into student (sno,sname,sold,ssex,sclass) values ('870203','王五',19,'男','微机872')

  35. 2.3.3 delete from语句 删除指定数据。 delete from <表名> where <条件> 例:从名单中删除‘王五’ Delete from student where sname= '王五' 该语句将删除学生表中所有姓名为‘王五’的记录 注意: Delete from student 将删除学生表中所有记录

  36. 2.4 数据维护语句 • CREATE TABLE :创建新的表 • SELECT...INTO :将查询结果保存为表 • ALTER TABLE :更改表结构 • CREATE INDEX:建立索引 • DROP 删除表或索引

  37. 3 SQL语句书写要求 • 所有关键字可不管大小写,但必须为半角 • 关键字之间的空格个数不限,但必须大于1 • 字符型数据、日期型数据必须用半角的单引号(或双引号)引起来 • 在有些系统中字段名称和表名是区分大小写的,应注意。 • 关键字的顺序一般不允许交换 • 所支持的增强函数、关键字等需参考所使用的DBMS,不同的系统会有所不同。

  38. THE END

More Related