SQL
This presentation is the property of its rightful owner.
Sponsored Links
1 / 38

SQL 语法介绍 PowerPoint PPT Presentation


  • 85 Views
  • Uploaded on
  • Presentation posted in: General

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Sql

SQL语法介绍


1 sql

1 SQL简介

  • SQL是什么

  • SQL功能简介


1 1 sql

1.1 什么是SQL

SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库操纵语言。

SQL使用场合:

  • 应用程序与数据库的通讯

  • 通过DBMS或第三方工具,完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据


1 2 sql

1.2 SQL命令分组

  • DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据

  • DDL(Data Definition Language,数据定义语言): 用于定义数据的结构,比如 创建、修改或者删除数据库对象

  • DCL(Data Control Language,数据控制语言):用于定义数据库用户的权限


1 2 1 dml

1.2.1 DML命令

  • SELECT:用于检索数据

  • INSERT:用于增加数据到数据库

  • UPDATE:用于从数据库中修改现存的数据

  • DELETE:用于从数据库中删除数据


1 2 2 ddl

1.2.2 DDL命令

  • CREATE TABLE :创建表结构

  • ALTER TABLE :修改表结构

  • DROP TABLE :从数据库中删除表

  • CREATE INDEX :创建索引

  • DROP INDEX :删除索引


1 2 3 dcl

1.2.3 DCL命令

  • ALTER PASSWORD :设置访问口令

  • GRANT :分配权限

  • REVOKE :收回权限

  • CREATE SYNONYM :创建替代用户


1 2 4 sql

1.2.4 SQL功能概述

  • 建立数据库的表格

  • 改变数据库系统环境设置

  • 针对某个数据库或表格,授予用户存取权限

  • 对数据库表格建立索引值

  • 修改数据库表格结构。(新建、删除或是修改表格字段)

  • 对数据库进行数据的新建、删除、修改、查询


2 sql

2 SQL命令

  • 常用SQL命令

  • SQL语法


2 1 select

2.1 Select命令

功能:从数据库中检索所需要信息。

例:从学生表(student)中检索出李明的档案信息,其SQL语法为:

Select * from student where SNAME=‘李明’


2 1 1 select

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 2 predicate

2.1.2 predicate

ALL,DISTINCT, DISTINCTROW,TOP n

DISTINCT:

Select DISTINCT SNAME from student

TOP n:

Select top 2 * from student


2 1 3

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


2 1 4 from

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

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


2 1 6 order by

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


2 1 7 group by

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 1 8 having

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 sql

2.2 SQL的特殊操作

  • IN 操作符

  • LIKE 操作符

  • SQL 的运算符及表达式

  • SQL 的统计函数

  • Between … and 运算符

  • Union 操作

  • INNER JOIN操作


2 2 1 in

2.2.1 in操作符

  • 用在where后,当同时查询多个条件时,用以简化写法

    Select * from student where

    SNAME in (‘李明’,‘成功’)

    等价SQL语句:

    Select * from student where

    SNAME =‘李明’or SNAME =‘成功’

  • 多层SQL查询


2 2 2 like

2.2.2 like操作符

实现模糊查询。

例:找出所有姓李的学生

Select * from student where SNAME like ‘李*’

或:

Select * from student where SNAME like ‘李%’


2 2 2 like1

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"


2 2 3

2.2.3运算符及表达式

1、算术运算符

( ) 分组括号 *、/ 乘、除 +、- 加、减

算术运算符的优先次序为括号、乘方、乘除和加减,同级运算从左到右依次进行

例:

还有多少年退休:

Select SNO,SNAME,60-SOLD as TX_OLD from student

45年以后已退休的有哪些:

Select * from student where SOLD+45>=60


2 2 31

2.2.3运算符及表达式

2、关系运算符

< 小于 > 大于 = 等于 <= 小于等于 >= 大于等于 <> 不等于

字符的比较是按ASCII码的大小进行的,汉字是按机内码比较大小的。

对于表达式则是先算表达式的值,然后用值比较大小。

例:

Select * from student where SOLD+45>=60


2 2 32

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 4

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

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


2 2 6 sql

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 7 union

2.2.7 union

将两个以上的表格或是查询的结果组合起来,但组合的两部分内容必须具有相同的结构。

例:将两个表中的男生数据提出来放在一起

Select * from student1 where ssex=‘男’union select * from student2 where ssex=‘男’


2 2 8 inner join

2.2.8 innerjoin

当某一个共同的字段数据相等时,将两个表格的记录加以组合。

例:从两个表中提取学生档案及成绩

SELECT student.sno, student.sname, Curse.cname, Curse.score

FROM student INNER JOIN Curse ON student.sno=Curse.sno


Sql

2.3 数据更新语句

  • Update:更新表中已有的数据

  • Insert into:向表添加新的数据

  • Delete From:删除表中的记录


2 3 1 update

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

2.3.1 insert into语句

向表中增加新的数据。

INSERT INTO <表名> (<字段列表>) values (<值列表>)

例:增加新的成绩

Insert into Curse (sno,cname,score) values

(‘870102’,’数据结构’,75)


2 3 2 insert into

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')


2 3 3 delete from

2.3.3 delete from语句

删除指定数据。

delete from <表名> where <条件>

例:从名单中删除‘王五’

Delete from student where sname= '王五'

该语句将删除学生表中所有姓名为‘王五’的记录

注意:

Delete from student

将删除学生表中所有记录


Sql

2.4 数据维护语句

  • CREATE TABLE :创建新的表

  • SELECT...INTO :将查询结果保存为表

  • ALTER TABLE :更改表结构

  • CREATE INDEX:建立索引

  • DROP 删除表或索引


3 sql

3 SQL语句书写要求

  • 所有关键字可不管大小写,但必须为半角

  • 关键字之间的空格个数不限,但必须大于1

  • 字符型数据、日期型数据必须用半角的单引号(或双引号)引起来

  • 在有些系统中字段名称和表名是区分大小写的,应注意。

  • 关键字的顺序一般不允许交换

  • 所支持的增强函数、关键字等需参考所使用的DBMS,不同的系统会有所不同。


The end

THE END


  • Login