SQL基本语句介绍_第1页
SQL基本语句介绍_第2页
SQL基本语句介绍_第3页
SQL基本语句介绍_第4页
SQL基本语句介绍_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用户从键盘上输入一个大用户从键盘上输入一个大于于10的偶数,程序将其的偶数,程序将其分解为两个质数之和,并分解为两个质数之和,并显示出分解的结果。显示出分解的结果。 关系数据库标准语关系数据库标准语言言SQL32022-3-2n3.1 SQL概述概述n3.2 数据定义数据定义n3.3 查询查询n3.4 数据更新数据更新n3.5 视图视图n3.6 数据控制数据控制42022-3-2nSQL简介简介结构化查询语言结构化查询语言SQL(Structured Query Language)是一种介于关系代数与关系演算之间的语言,其)是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控

2、制四个方面,是一功能包括查询、操纵、定义和控制四个方面,是一个通用的、功能极强的关系数据库语言。目前已成个通用的、功能极强的关系数据库语言。目前已成为关系数据库的标准语言。为关系数据库的标准语言。SQL语言的版本包括:语言的版本包括:SQL-89,SQL-92, SQL3SQL语言集数据查询(语言集数据查询(data query)、数据操纵()、数据操纵(data manipulation)、数据定义()、数据定义(data definition)和数据控制(和数据控制(data control)功能于一体,充分体现)功能于一体,充分体现了关系数据语言的特点和优点了关系数据语言的特点和优点52

3、022-3-2n综合统一综合统一SQL语言集数据定义语言语言集数据定义语言DDL、数据操纵语言、数据操纵语言DML、数据控制语言、数据控制语言DCL的功能于一体,可以完成数据的功能于一体,可以完成数据库生命周期中的全部活动。库生命周期中的全部活动。关系模型中实体和实体间的联系都用关系来表示,关系模型中实体和实体间的联系都用关系来表示,使得操作符单一,每种操作只使用一个操作符。使得操作符单一,每种操作只使用一个操作符。n高度非过程化高度非过程化使用使用SQL语言,只需要提出语言,只需要提出“做什么做什么”,而无需指,而无需指明明“怎么做怎么做”,无需了解存取路径,提高了数据的,无需了解存取路径,

4、提高了数据的独立性独立性n面向集合的操作方式面向集合的操作方式SQL语言采用集合操作方式,查询、插入、删除、语言采用集合操作方式,查询、插入、删除、修改操作的对象都是结合。修改操作的对象都是结合。62022-3-2n以同一种语法结构提供两种使用方式以同一种语法结构提供两种使用方式作为自含式语言作为自含式语言提供联机交互工具,提供联机交互工具,在终端键盘上直接键入在终端键盘上直接键入SQL命令对数据库进行操作命令对数据库进行操作,由由DBMS来进行解释来进行解释作为嵌入式语言作为嵌入式语言, SQL语句能嵌入到高级语言程序中语句能嵌入到高级语言程序中使应用程序充分利用使应用程序充分利用SQL访问

5、数据库的能力、宿访问数据库的能力、宿主主 语言的过程处理能力语言的过程处理能力一般需要预编译,将嵌入的一般需要预编译,将嵌入的SQL语句转化为宿主语句转化为宿主语言编译器能处理的语句语言编译器能处理的语句72022-3-2n语言简洁,易学易用,核心功能语言简洁,易学易用,核心功能9个动词个动词82022-3-2nSQL语言支持关系数据库三级模式语言支持关系数据库三级模式92022-3-2n存储文件存储文件其逻辑结构组成了数据库的内模式,物理结构有数其逻辑结构组成了数据库的内模式,物理结构有数据库厂商所有,对用户透明。据库厂商所有,对用户透明。n基本表(基表,基本表(基表,Base Table)

6、本身独立存在的表,对应于模式,一个关系对应于本身独立存在的表,对应于模式,一个关系对应于一个表,表可以有一到多个索引,以提高查询速度一个表,表可以有一到多个索引,以提高查询速度n视图(视图(View)从一个或多个表或视图中导出的表,对应于外模式从一个或多个表或视图中导出的表,对应于外模式,本身不独立存在,数据库中只存放其定义,是虚,本身不独立存在,数据库中只存放其定义,是虚表。表。一般可以象使用基本表一样来使用视图?一般可以象使用基本表一样来使用视图?。102022-3-2n3.2.1 定义、删除与修改基本表定义、删除与修改基本表n3.2.2 建立与删除索引建立与删除索引112022-3-2n

7、1. 定义基本表定义基本表CREATE TABLE ( , , ););:所要定义的基本表的名字:所要定义的基本表的名字:组成该表的各个属性(列):组成该表的各个属性(列):涉及相应属性列的完整性约束条件:涉及相应属性列的完整性约束条件:涉及一个或多个属性列的完整性约:涉及一个或多个属性列的完整性约束条件束条件 122022-3-2例例1 建立一个建立一个“学生学生”表表Student,它由学号,它由学号Sno、姓名、姓名Sname、性别、性别Ssex、年龄、年龄Sage、所在系、所在系Sdept五个属性五个属性组成。其中学号不能为空,值是唯一的,并且姓名取组成。其中学号不能为空,值是唯一的,

8、并且姓名取值也唯一。值也唯一。CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(1) , Sage INT, Sdept CHAR(15); SnoSnameSsexSageSdept 字字符符型型 字字符符型型 字字符符型型 整整数数 字字符符型型 长长度度为为5 5 长长度度为为2 20 0 长长度度为为1 1 长长度度为为1 15 5 不不能能为为空空值值132022-3-2n常用完整性约束常用完整性约束主码约束:主码约束: PRIMARY KEY唯一性约束:唯一性约束:

9、UNIQUE非空值约束:非空值约束:NOT NULL参照完整性约束参照完整性约束PRIMARY KEY与与 UNIQUE的区别?的区别?142022-3-2nPRIMARY KEY通过主键可强制表的实体完整性通过主键可强制表的实体完整性; PRIMARY KEY 约束中的列不能接受空值。约束中的列不能接受空值。当为表指定当为表指定 PRIMARY KEY 约束时,约束时,SQL Server2000 通过通过为主键列创建唯一索引强制数据的唯一性。当在查询中使用为主键列创建唯一索引强制数据的唯一性。当在查询中使用主键时,该索引还可用来对数据进行快速访问主键时,该索引还可用来对数据进行快速访问nU

10、NIQUE可使用可使用 UNIQUE 约束确保在非主键列中不输入重复值。约束确保在非主键列中不输入重复值。尽管尽管 UNIQUE 约束和约束和 PRIMARY KEY约束都强制唯一性,约束都强制唯一性,但在强制下面的唯一性时应使用但在强制下面的唯一性时应使用 UNIQUE 约束:约束: 非主键的一列或列组合:一个表可以定义多个非主键的一列或列组合:一个表可以定义多个 UNIQUE 约束,而只能定义一个约束,而只能定义一个 PRIMARY KEY 约束。约束。允许空值的列:允许空值的列上可以定义允许空值的列:允许空值的列上可以定义 UNIQUE 约束约束,而不能定义,而不能定义 PRIMARY

11、KEY 约束。约束。152022-3-2例例 建立一个建立一个“学生选课学生选课”表表SC,它由学号,它由学号Sno、课程、课程号号Cno,修课成绩,修课成绩Grade组成,其中组成,其中(Sno, Cno)为主码为主码CREATE TABLE SC( Sno CHAR(5) , Cno CHAR(3) , Grade int, Primary key (Sno, Cno);162022-3-2ALTER TABLE ADD 完整性约束完整性约束 DROP MODIFY ;:要修改的基本表:要修改的基本表ADD子句子句:增加新列和新的完整性约束条件:增加新列和新的完整性约束条件DROP子句子句

12、:删除指定的完整性约束条件:删除指定的完整性约束条件MODIFY子句子句:用于修改列名和数据类型:用于修改列名和数据类型172022-3-2n例例2 向向Student表增加表增加“入学时间入学时间”列,其数据类型列,其数据类型为日期型。为日期型。 ALTER TABLE Student ADD Scome DATE;不论基本表中原来是否已有数据,新增加的列一律不论基本表中原来是否已有数据,新增加的列一律为空值。为空值。 n删除属性列:删除属性列: 间接删除间接删除把表中要保留的列及其内容复制到一个新表中把表中要保留的列及其内容复制到一个新表中删除原表删除原表再将新表重命名为原表名再将新表重命

13、名为原表名直接删除属性列直接删除属性列:(新新)例:例:ALTER TABLE Student Drop Scome;182022-3-2n例例3 将年龄的数据类型改为半字长整数。将年龄的数据类型改为半字长整数。 ALTER TABLE Student MODIFY Sage SMALLINT注:修改原有的列定义有可能会破坏已有数据注:修改原有的列定义有可能会破坏已有数据n例例4 删除学生姓名必须取唯一值的约束。删除学生姓名必须取唯一值的约束。ALTER TABLE Student DROP UNIQUE (Sname)192022-3-2nDROP TABLE ; n基本表删除基本表删除数据

14、、表上的索引都删除数据、表上的索引都删除表上的视图往往仍然保留,但无法引用表上的视图往往仍然保留,但无法引用n删除基本表时,系统会从数据字典中删去有关该基本删除基本表时,系统会从数据字典中删去有关该基本表及其索引的描述表及其索引的描述 n例例5 删除删除Student表表 DROP TABLEStudent ;202022-3-2n数据库查询是数据库的核心操作,数据库查询是数据库的核心操作,select具有灵活的使具有灵活的使用方式和丰富的功能用方式和丰富的功能3.1.1 单表查询单表查询3.1.2 连接查询连接查询3.1.3 嵌套查询嵌套查询3.1.4 集合查询集合查询3.1.5 selec

15、t 语句的一般格式语句的一般格式 212022-3-2n语句格式语句格式SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;SELECT子句子句:指定要显示的属性列:指定要显示的属性列FROM子句子句:指定查询对象:指定查询对象(基本表或视图基本表或视图)WHERE子句子句:指定查询条件:指定查询条件 GROUP BY子句子句:对查询结果按指定列的值分组,该属性列:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。值相等的元组为一个组。通常会在每组中作用集函数。HAVING

16、短语短语:筛选出只有满足指定条件的组:筛选出只有满足指定条件的组ORDER BY子句子句:对查询结果表按指定列值的升序或降序排:对查询结果表按指定列值的升序或降序排序序 222022-3-2数据查询是数据库应用的核心功能数据查询是数据库应用的核心功能n 基本结构基本结构nSelect A1, A2, ., An From R1, R2, ., Rm Where Pn关系代数中基于关系是一个集合这样的数学概念关系代数中基于关系是一个集合这样的数学概念,因此因此,重复的元组不会在关系中出现。重复的元组不会在关系中出现。n但在实践中但在实践中,要删除查询结果中的重复元组是相当费时要删除查询结果中的重

17、复元组是相当费时的的,所以在商用数据库产品中所以在商用数据库产品中,允许在关系和允许在关系和SQL表达式表达式的结果中出现重复元组。的结果中出现重复元组。232022-3-2SELECTSELECTFROMFROM常用语句执行过程常用语句执行过程 SELECTSELECT 投影投影 FROMFROM TABLE TABLE内存内存 WHEREWHERE 选取元组选取元组 GROUPGROUP 分组分组 HAVINGHAVING 选择分组选择分组 UNION|UNION| 查徇结果的集合运算查徇结果的集合运算 SELECTSELECT ORDER BY ORDER BY 排序输出排序输出2420

18、22-3-2学生学生-课程数据库课程数据库n学生表:学生表:Student(Sno,Sname,Ssex,Sage,Sdept)n课程表:课程表:Course(Cno,Cname,Cpno,Ccredit)n 学生选课表:学生选课表:SC(Sno,Cno,Grade) 252022-3-2n查询仅涉及一个表,是一种最简单的查询操作查询仅涉及一个表,是一种最简单的查询操作一、选择表中的若干列一、选择表中的若干列二、选择表中的若干元组二、选择表中的若干元组三、对查询结果排序三、对查询结果排序四、使用集函数四、使用集函数五、对查询结果分组五、对查询结果分组 262022-3-2n1.查询指定列查询指

19、定列例例1 查询全体学生的学号与姓名。查询全体学生的学号与姓名。SELECT Sno,Sname FROM Student; 例例2 查询全体学生的姓名、学号、所在系。查询全体学生的姓名、学号、所在系。 SELECT Sname,Sno,Sdept FROM Student;n2.查询全部列查询全部列例例3 查询全体学生的详细记录。查询全体学生的详细记录。SELECT Sno, Sname, Ssex, Sage, Sdept FROM Student;或或 SELECT * FROM Student;272022-3-2n1.消除取值重复的行消除取值重复的行n2.查询满足条件的元组查询满足条

20、件的元组 282022-3-2n在在SELECT子句中使用子句中使用DISTINCT短语短语假设假设SC表中有下列数据表中有下列数据 Sno Cno Grade - - - 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80例例6 查询选修了课程的学生学号查询选修了课程的学生学号(1)SELECT Sno FROM SC;或或(默认默认 ALL) SELECT ALL Sno FROM SC; 结果:结果: Sno - 95001 95001 95001 95002 95002 (2) SELECT DISTINCT Sno FROM

21、SC; 结果:结果: Sno - 95001 95002 292022-3-2n注意注意 DISTINCT短语的作用范围是所有目标列短语的作用范围是所有目标列例:查询选修课程的各种成绩例:查询选修课程的各种成绩错误的写法错误的写法SELECT DISTINCT Cno,DISTINCT GradeFROM SC;正确的写法正确的写法 SELECT DISTINCT Cno,Grade FROM SC; 302022-3-2表表 3.3 常常用用的的查查询询条条件件查查 询询 条条 件件谓谓 词词比比 较较=,=,=,!=,!,!;NOT + 上上述述比比较较运运算算符符确确定定范范围围BETW

22、EEN AND,NOT BETWEEN AND确确定定集集合合IN,NOT IN字字符符匹匹配配LIKE,NOT LIKE空空 值值IS NULL,IS NOT NULL多多重重条条件件AND,ORWHERE子句常用的查询条件子句常用的查询条件312022-3-2n在在WHERE子句的子句的中使用比较运算符中使用比较运算符=,=,=,!= 或或 ,!,!, 逻辑运算符逻辑运算符NOT + 比较运算符比较运算符n例例8 查询所有年龄在查询所有年龄在20岁以下的学生姓名及其年岁以下的学生姓名及其年龄龄 SELECT Sname,Sage FROM Student WHERE Sage = 20;

23、322022-3-2n使用谓词使用谓词 BETWEEN AND NOT BETWEEN AND n例例10 查询年龄在查询年龄在2023岁(岁(包括包括20岁和岁和23岁岁)之)之间的学生的姓名、系别和年龄。间的学生的姓名、系别和年龄。 SELECT Sname,Sdept,Sage FROM StudentWHERE Sage BETWEEN 20 AND 23; (WHERE Sage = 20 AND Sage =23)n例例11 查询年龄不在查询年龄不在2023岁之间的学生姓名、系岁之间的学生姓名、系别和年龄别和年龄SELECT Sname,Sdept,Sage FROM Studen

24、tWHERE Sage NOT BETWEEN 20 AND 23;332022-3-2 NOT LIKE ESCAPE n:指定匹配模板:指定匹配模板匹配模板:固定字符串或含通配符的字符串匹配模板:固定字符串或含通配符的字符串当匹配模板为固定字符串时当匹配模板为固定字符串时,可以用可以用 = 运算符取代运算符取代 LIKE 谓词谓词,用用 != 或或 运算符取代运算符取代 NOT LIKE谓词谓词通配符通配符% 代表任意长度(长度可以为代表任意长度(长度可以为0)的字符串)的字符串例:例:a%b表示以表示以a开头,以开头,以b结尾的任意长度的字符结尾的任意长度的字符串。如串。如acb,add

25、gb,ab 等都满足该匹配串等都满足该匹配串_ (下横线下横线) 代表任意单个字符代表任意单个字符例:例:a_b表示以表示以a开头,以开头,以b结尾的长度为结尾的长度为3的任意字符的任意字符串。如串。如acb,afb等都满足该匹配串等都满足该匹配串342022-3-21) 匹配模板为固定字符串匹配模板为固定字符串 例例14 查询学号为查询学号为95001的学生的详细情况。的学生的详细情况。 SELECT * FROM Student WHERE Sno LIKE 95001;等价于:等价于: SELECT * FROM Student WHERE Sno = 95001;352022-3-22

26、) 匹配模板为含通配符的字符串匹配模板为含通配符的字符串例例15 查询所有姓刘学生的姓名、学号和性别。查询所有姓刘学生的姓名、学号和性别。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 刘刘%;例例16 查询姓查询姓欧阳欧阳且全名为三个汉字的学生的姓名。且全名为三个汉字的学生的姓名。 SELECT Sname FROM Student WHERE Sname LIKE 欧阳欧阳_ _;362022-3-22) 匹配模板为含通配符的字符串匹配模板为含通配符的字符串例例17 查询名字中第查询名字中第2个字为个字为阳阳字的学生的姓名和学字的学

27、生的姓名和学号号 SELECT Sname,Sno FROM Student WHERE Sname LIKE _ _阳阳%;例例18 查询所有不姓刘的学生姓名。查询所有不姓刘的学生姓名。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 刘刘%;372022-3-2n 使用谓词使用谓词 IS NULL 或或 IS NOT NULLn “IS NULL” 不能用不能用 “= NULL” 代替代替例例21 某些学生选修课程后没有参加考试,所以有选课某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号

28、记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。和相应的课程号。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL;例例22 查所有有成绩的学生学号和课程号。查所有有成绩的学生学号和课程号。 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL382022-3-2nSQL允许属性有一个特殊值允许属性有一个特殊值NULL称作空值。称作空值。未知值:有值但是不知道是什么,例如未知生日未知值:有值但是不知道是什么,例如未知生日不适用的值:例如配偶的名字不适用的值:例如配偶的名字保留的值:无权知道的值,例未公布的

29、电话号码保留的值:无权知道的值,例未公布的电话号码n空值的运算空值的运算空值不同于空白或零值。没有两个相等的空值。空空值不同于空白或零值。没有两个相等的空值。空值和任何值进行算术运算,结果仍为空值。值和任何值进行算术运算,结果仍为空值。执行计算时消除空值很重要,因为如果包含空值执行计算时消除空值很重要,因为如果包含空值列,某些计算(如平均值)会不准确。列,某些计算(如平均值)会不准确。 当使用逻辑运算符和比较运算符,有可能返回当使用逻辑运算符和比较运算符,有可能返回 TRUE 或或 FALSE 以外的第三种结果以外的第三种结果 UNKNOWN, UNKNOWN是与是与TRUE 和和 FALSE

30、 相同的布尔值相同的布尔值392022-3-2n空空 (NULL) 值表示数值未知。值表示数值未知。空值不同于空白或零值。没有两个相等的空值。空值不同于空白或零值。没有两个相等的空值。n空串指的是零长度字符串空串指的是零长度字符串,空字符串文字空字符串文字 ( ) 将作为空将作为空字符串解释字符串解释 当当 m = 0 时,时,RIGHT(123, m) 返回空字符串。返回空字符串。当当 m 是负数时,是负数时,RIGHT(123, m) 返回空字符串。返回空字符串。RTRIM( ) 返回空字符串。返回空字符串。402022-3-2n用逻辑运算符用逻辑运算符AND和和 OR来联结多个查询条件来

31、联结多个查询条件 AND的优先级高于的优先级高于OR 可以用括号改变优先级可以用括号改变优先级n可用来实现多种其他谓词可用来实现多种其他谓词 NOT IN NOT BETWEEN AND 例例23 查询计算机系年龄在查询计算机系年龄在20岁以下的学生姓名。岁以下的学生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage20;412022-3-2n使用使用ORDER BY子句子句 可以按一个或多个属性列排序可以按一个或多个属性列排序 升序:升序:ASC;降序:;降序:DESC;缺省值为升序缺省值为升序n空值将作为最大值排序空值将作为最大值排序ASC:排序列为空值的元

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论