SQL语言基础基本概念 SQL的数据类型基本表的定义删除及修改数据查询功能数据更改功能建立与删除索引.pptx
《SQL语言基础基本概念 SQL的数据类型基本表的定义删除及修改数据查询功能数据更改功能建立与删除索引.pptx》由会员分享,可在线阅读,更多相关《SQL语言基础基本概念 SQL的数据类型基本表的定义删除及修改数据查询功能数据更改功能建立与删除索引.pptx(117页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、4.1 4.1 基本概念基本概念语言的发展 语言的特点语言功能概述 第1页/共117页语言的发展1986年10月由美国ANSI 公布最早的SQL标准。1989年4月,ISO提出了具备完整性特征的SQL,称为SQL-89。1992年11月,ISO又公布了新的SQL标准,称为SQL-92(以上均为关系形式)。1999年颁布SQL-99,是SQL92的扩展。第2页/共117页语言的特点1.一体化。2.高度非过程化。3.简洁。4.使用方式多样。第3页/共117页语言功能概述SQL功能功能命令动词命令动词数据查询数据查询SELECT数据定义数据定义CREATE、DROP、ALTER数据操纵数据操纵INS
2、ERT、UPDATE、DELETE数据控制数据控制GRANT、REVOKE四大功能:数据定义功能、数据控制功能、数据查询功能和数据操纵功能。第4页/共117页4.2 SQL的数据类型SQL Server SQL Server 为例为例:数值型 字符串型日期时间型货币型第5页/共117页数值型准确型准确型 整数整数Bigint:8字节,字节,Int:4字节字节Smallint:2字节,字节,Tinyint:1字节字节 Bit:1位,存储位,存储1或或0小数小数Numeric(p,q)或)或 Decimal(p,q),),其中:其中:p为数字位长度,为数字位长度,q为小数位长度。为小数位长度。近似
3、型近似型 Float:8字节字节 Real:4字节字节第6页/共117页字符串型普通编码字符串类型统一字符编码字符串类型二进制字符串类型第7页/共117页普通编码字符串类型Char(n):定长存储,n=8000 Varchar(n):不定长存储(按实际长度存储),长度最大不超过n,n=8000 注:n 为字符个数Text:存储大于8000字节的文本第8页/共117页统一字符编码(统一字符编码(UnicodeUnicode)字符串类型)字符串类型nchar(n):定长存储,n=4000 nvarchar(n):不定长存储,长度最大不超过n,n=4000 ntext:存储大于8000字节的文本特点
4、:每个字符占两个字节第9页/共117页二进制字符串类型Binary(n):固定长度,n=8000。Varbinary(n):可变长度,n 8000。注:n为二进制数据的字节数image:大容量、可变长二进制字符数据,可用于存储文件。第10页/共117页日期时间型日期时间型Datetime:8字节,年月日时分秒毫秒(例:2001/08/03 10:30:00.000)SmallDateTime:4字节,年月日时分 (例:2001/08/03 10:30:00)日期、时间的输入格式第11页/共117页货币类型Money:8 个字节,精确到货币单位的千分之十。Smallmoney:4 个字节,精确到
5、货币单位的千分之十。限制到小数点后 4 位。可以带有适当的货币符号。例如,100 英镑可表示为 100。第12页/共117页4.3 基本表的定义、删除及修改 基本表的定义与删除 修改表结构 第13页/共117页基本表的定义与删除1定义基本表 使用SQL语言中的CREATE TABLE 语句实现,其一般格式为:CREATE TABLE (列级完整性约束定义列级完整性约束定义 ,列级完整性约束定义列级完整性约束定义,列级完整性约束定义列级完整性约束定义,表级完整性约束定义表级完整性约束定义 );第14页/共117页在列级完整性约束定义处可以定义的约束在列级完整性约束定义处可以定义的约束NOT NU
6、LL:限制列取值非空。DEFAULT:给定列的默认值。UNIQUE:限制列取值不重。CHECK:限制列的取值范围。PRIMARY KEY:指定本列为主码。FOREIGN KEY:定义本列为引用其他表的外码。使用形式为:FOREIGN KEY()REFERENCES()第15页/共117页几点说明NOT NULLNOT NULL和和DEFAULTDEFAULT只能是列级完整性约束;只能是列级完整性约束;其他约束均可在表级完整性约束处定义。其他约束均可在表级完整性约束处定义。注意以下几点:注意以下几点:第一,如果第一,如果CHECKCHECK约束是定义多列之间的取值约束,约束是定义多列之间的取值约
7、束,则只能在表级完整性约束处定义;则只能在表级完整性约束处定义;第二,如果表的主码由多个列组成,则也只能在表第二,如果表的主码由多个列组成,则也只能在表级完整性约束处定义,并将主码列用括号括起来,级完整性约束处定义,并将主码列用括号括起来,即:即:PRIMARY KEY PRIMARY KEY(列(列1 1,列,列2 2 ););第三,如果在表级完整性约束处定义外码,第三,如果在表级完整性约束处定义外码,则则“FOREIGN KEY(FOREIGN KEY()”)”部分不能省。部分不能省。第16页/共117页约束定义 列取值非空约束 NOT NULL例:sname char(10)NOT NU
8、LL第17页/共117页约束定义(续)表主码约束表主码约束在定义列时定义主码(仅用于单列主码)列定义 PRIMARY KEY例:SNO char(7)PRIMARY KEY在定义完列时定义主码(用于单列或多列主码)PRIMARY KEY()例:PRIMARY KEY(SNO)PRIMARY KEY(SNO,CNO)第18页/共117页约束定义(续)外码引用约束外码引用约束指明本表外码列引用的表及表中的主码列。FOREIGN KEY()REFERENCES()例:FOREIGN KEY(sno)REFERENCES 学生表(sno)第19页/共117页约束定义(续)默认值约束默认值约束格式:DE
9、FAULT 默认值例:定义系的默认值为“计算机系”。DEFAULT 计算机系第20页/共117页约束定义(续)CHECKCHECK约束约束格式:CHECK(约束表达式)例:定义成绩大于等于0。CHECK(grade=0)第21页/共117页约束定义(续)UNIQUEUNIQUE约束约束在列级约束定义(仅用于单列约束)列定义 UNIQUE例:SNAME char(7)UNIQUE在表级约束定义(用于单列或多列组合约束)UNIQUE()例:UNIQUE(SNO,CNO)第22页/共117页创建学生表创建学生表CREATE TABLE Student(Sno char(7)PRIMARY KEY,S
10、name char(10)NOT NULL,Ssex char(2)CHECK(Ssex=男OR Ssex=女),Sage tinyint CHECK(Sage=15 AND Sage0),Semester tinyint CHECK(Semester0),Period int CHECK(Period0),PRIMARY KEY(Cno)第24页/共117页创建创建SC表表CREATE TABLE SC(Sno char(7)NOT NULL,Cno char(10)NOT NULL,Grade tinyint CHECK(Grade=0 and Grade=100),PRIMARY KEY
11、(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno),FOREIGN KEY(Cno)REFERENCES Course(Cno)第25页/共117页删除表删除表当确信不再需要某个表时,可以将其删除删除表时会将与表有关的所有对象一起删掉,包括表中的数据。删除表的语句格式为:DROP TABLE ,例:删除test表的语句为:DROP TABLE test第26页/共117页修改表结构 在定义完表之后,如果需求有变化,比如添加列、删除列或修改列定义,可以使用ALTER TABLE语句实现。ALTER TABLE语句可以对表添加列、删除列、修改列的定义
12、、定义主码、外码,也可以添加和删除约束。第27页/共117页修改表结构语法ALTER TABLE ALTER COLUMN|ADD COLUMN|DROP COLUMN|ADD PRIMARY KEY(列名,n )|ADD FOREIGN KEY(列名)REFERNECES 表名(列名)第28页/共117页示例例2为SC表添加“修课类别”列,此列的定义为:XKLB char(4)ALTER TABLE SC ADD XKLB char(4)NULL 第29页/共117页示例例3将新添加的XKLB的类型改为 char(6)。ALTER TABLE SC ALTER COLUMN XKLB cha
13、r(6)第30页/共117页示例例4删除Course表的Period列。ALTER TABLE Course DROP COLUMN Period 第31页/共117页4.4 数据查询功能 查询语句的基本结构简单查询多表连接查询子查询 第32页/共117页查询语句基本格式SELECT -需要哪些列 FROM -来自于哪些表 WHERE -根据什么条件 GROUP BY HAVING ORDER BY 第33页/共117页简单查询1.选择表中若干列 第34页/共117页1.查询指定的列查询指定的列查询表中用户感兴趣的部分属性列。例5:查询全体学生的学号与姓名。SELECT Sno,Sname F
14、ROM Student例6:查询全体学生的姓名、学号和所在系。SELECT Sname,Sno,Sdept FROM Student 第35页/共117页2.查询全部列查询全部列 例7查询全体学生的记录SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student等价于:SELECT *FROM Student 第36页/共117页3.查询经过计算的列查询经过计算的列 例8查询全体学生的姓名及其出生年份。SELECT Sname,2006-Sage FROM Student例9查询全体学生的姓名和出生年份所在系,并在出生年份列前加入一个列,此列的每行数据均为出生年份
15、常量值。SELECT Sname,出生年份,2006-Sage FROM Student 第37页/共117页改变列标题改变列标题 语法:列名|表达式 AS 列标题或:列标题 列名|表达式例:SELECT Sname 姓名,Year of Birth 出生年份,2006-Sage 年份,FROM Student 第38页/共117页简单查询2.选择表中若干元组 第39页/共117页1.消除取值相同的记录消除取值相同的记录例10在修课表中查询有哪些学生修了课程,要求列出学生的学号。SELECT Sno FROM SC结果中有重复的行。用DISTINCT关键字可以去掉结果中的重复行。DISTINC
16、T关键字放在SELECT词的后边、目标列名序列的前边。SELECT DISTINCT Sno FROM SC第40页/共117页2.查询满足条件的元组查询满足条件的元组 查询条件查询条件谓谓 词词比较运算符=,=,=,(或!=)NOT+比较运算符 确定范围BETWEENAND,NOT BETWEENAND确定集合IN,NOT IN字符匹配LIKE,NOT LIKE 空值IS NULL,IS NOT NULL逻辑谓词)AND,OR第41页/共117页比较大小比较大小例11查询计算机系全体学生的姓名。SELECT Sname FROM Student WHERE Sdept=计算机系例12查询年龄
17、在20岁以下的学生的姓名及年龄。SELECT Sname,Sage FROM Student WHERE Sage 20例13查询考试成绩有不及格的学生的学号 SELECT DISTINCT Sno FROM SC WHERE Grade 60第42页/共117页确定范围确定范围用BETWEENAND和NOT BETWEENAND是逻辑运算符,可以用来查找属性值在或不在指定范围内的元组,其中BETWEEN后边指定范围的下限,AND后边指定范围的上限。BETWEENAND的格式为:列名|表达式 NOT BETWEEN 下限值 AND 上限值如果列或表达式的值在不在下限值和上限值范围内,则结果为T
18、rue,表明此记录符合查询条件。第43页/共117页示例例14查询年龄在2023岁之间的学生的姓名、所在系和年龄。SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23例15查询年龄不在2023之间的学生姓名、所在系和年龄。SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23第44页/共117页确定集合使用IN运算符。用来查找属性值属于指定集合的元组。格式为:列名 NOT IN(常量1,常量2,常量n)当列中的值与IN中的某个常量值相
19、等时,则结果为True,表明此记录为符合查询条件的记录;NOT IN:当列中的值与某个常量值相同时,则结果为False,表明此记录为不符合查询条件的记录 第45页/共117页示例例16查询信息系、数学系和计算机系学生的姓名和性别。SELECT Sname,Ssex FROM Student WHERE Sdept IN(信息系信息系,数学系数学系,计算机系计算机系)例17查询既不是信息系、数学系,也不是计算机系学生的姓名和性别。SELECT Sname,Ssex FROM Student WHERE Sdept NOT IN(信息系信息系,数学系数学系,计算机系计算机系)第46页/共117页字
20、符匹配使用LIKE运算符一般形式为:列名 NOT LIKE 匹配串中可包含如下四种通配符:_:匹配任意一个字符;%:匹配0个或多个字符;:匹配 中的任意一个字符;:不匹配 中的任意一个字符 第47页/共117页示例例18查询姓张的学生的详细信息。SELECT*FROM Student WHERE Sname LIKE 张张%例19查询学生表中姓张、李和刘的学生的情况。SELECT*FROM Student WHERE Sname LIKE 张李刘张李刘%例20查询名字中第2个字为小或大的学生的姓名和学号 SELECT Sname,Sno FROM Student WHERE Sname LIK
21、E _小大小大%第48页/共117页示例(续)例21查询所有不姓“刘”的学生。SELECT Sname FROM Student WHERE Sname NOT LIKE 刘刘%例22查询学号的最后一位不是2、3、5的学生情况。SELECT*FROM Student WHERE Sno LIKE%235 第49页/共117页涉及空值的查询涉及空值的查询空值(NULL)在数据库中表示不确定的值。例如,学生选修课程后还没有考试时,这些学生有选课记录,但没有考试成绩,因此考试成绩为空值。判断某个值是否为NULL值,不能使用普通的比较运算符。判断取值为空的语句格式为:列名 IS NULL判断取值不为空
22、的语句格式为:列名 IS NOT NULL 第50页/共117页示例例23查询无考试成绩的学生的学号和相应的课程号。SELECT Sno,Cno FROM SC WHERE Grade IS NULL例24查询所有有考试成绩的学生的学号和课程号。SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL 第51页/共117页多重条件查询在WHERE子句中可以使用逻辑运算符AND和OR来组成多条件查询。用AND连接的条件表示必须全部满足所有的条件的结果才为True;用OR连接的条件表示只要满足其中一个条件结果即为True。例25查询计算机系年龄在20岁以下的学生
23、姓名。SELECT Sname FROM Student WHERE Sdept=CS AND Sage 20 第52页/共117页简单查询3.对查询结果进行排序 第53页/共117页对查询结果进行排序可对查询结果进行排序。排序子句为:ORDER BY ASC|DESC ,说明:按进行升序(ASC)或降序(DESC)排序。第54页/共117页示例例26将学生按年龄的升序排序。SELECT*FROM Student ORDER BY Sage例27查询选修了c02号课程的学生的学号及其成绩,查询结果按成绩降序排列。SELECT Sno,Grade FROM SCWHERE Cno=c02 ORD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL语言基础 基本概念 SQL的数据类型 基本表的定义删除及修改 数据查询功能 数据更改功能 建立与删除索引 SQL 语言 基础 数据类型 基本 定义 删除 修改 数据 查询 功能 更改 建立 索引
链接地址:https://www.taowenge.com/p-82687501.html
限制150内