第4章_结构化查询语言SQL-6学时
第4章结构化查询语言SQL

第4章结构化查询语言SQLSQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。
它提供了一种简单而强大的方式来查询、插入、更新和删除数据库中的数据。
结构化查询语言SQL被广泛用于开发Web应用程序、管理企业数据库以及进行数据分析。
SQL的基本功能包括:1.数据查询:使用SELECT语句可以从数据库中检索数据。
SELECT语句可以指定要检索的列、要查询的表以及条件,并可以对检索结果进行排序和分组。
例如,可以使用以下SQL语句从"users"表中查询所有名字为"John"的用户:SELECT * FROM users WHERE name = 'John';2.数据插入:使用INSERT语句可以向数据库中插入新的数据。
INSERT语句可以指定要插入的表、要插入的列以及要插入的值。
例如,可以使用以下SQL语句将一个新的用户插入"users"表中:INSERT INTO users (name, age) VALUES ('John', 25);3.数据更新:使用UPDATE语句可以更新数据库中的现有数据。
UPDATE语句可以指定要更新的表、要更新的列以及新的值,还可以使用条件来确定要更新的数据行。
例如,可以使用以下SQL语句将"users"表中名字为"John"的用户的年龄更新为30:UPDATE users SET age = 30 WHERE name = 'John';4.数据删除:使用DELETE语句可以从数据库中删除数据。
DELETE语句可以指定要删除的表以及要删除的数据行的条件。
例如,可以使用以下SQL语句删除"users"表中名字为"John"的用户:DELETE FROM users WHERE name = 'John';SQL还提供了其他一些高级功能,例如聚合函数、连接查询、子查询、排序和分组等。
第四章结构化查询语言SQL

第四章 结构化查询语言——SQL
2、修改表结构
语句格式:
ALTER TABLE [<数据库名>. <所有者名>.]<基 本表名>{ADD<列定义>,…| ADD<表级完整 性约束>,…|DROP COLUMN<列名 >,…|DROP<约束名>,… }
语句说明:
❖由关键字可大体了解语句的含义; ❖用户给定的标识符由汉字、英文字母、
数字等组成的一串字符;
❖语句中英文字母不区分大小写 ❖每条SQL语句都可单独作为命令来使用,
又称SQL命令。 ❖该语句执行后,可用“USE<数据库名>”
语句把该数据库置为当前数据库。进行 操作时,在不指定的情况下默认是对当 前数据库的。
一般比较式:比较两个同类型的表达式的值, 属于单值与单值的比较;
第四章 结构化查询语言——SQL
专门比较式:又称判断式,单值与集合(多值)、 单值与一个取值范围的比较及对一个集合是否 为空的判断。常用的如下六种格式:
1.<列名><比较符>ALL<子查询> 当子查询(一条完整的SELECT语句)结果中的
3、删除记录: 语句格式: DELETE[FROM][<数据库名>. <所有者名
>.]<目的表名> [FROM=<源表名 >,…][WHERE<逻辑表达式>] 功能: 删除一个表中满足条件的所有行。 语句说明:P81
第四章 结构化查询语言——SQL
四、视图的建立、修改和删除
第4章结构化查询语言SQL

二、SQL数据库的体系结构
SQL支持数据库的三级模式结构,如图4―1所示。从图中可以看出,模式与基 本表相对应,外模式与视图相对应,内模式对应于存储文件。基本表和视图都 是关系。
1.基本表(Base Table) 基本表是模式的基本内容。每个基本表都是一个实际存在的关系。
SQ L用 户
SQ L用 户
基本表 1
视图 1 基本表 2
视图 2
外 模式
基本表 3
模式
存 储文 件1
存 储文 件2
存 储文 件3 内 模式
图4―1 SQL支持的数据库模式
二、SQL数据库的体系结构
2.视图(View) 视图是外模式的基本单位,用户通过视图使用数据库中基于基本表的数据(基本表也可作
为外模式使用)。 视图是虚表,实际并不存在,只有定义存放在数据字典中。
学会关系数据库规范设计的方法和步骤;
了解数据库系统的实现技术;
具备使用关系数据库软件开发数据库应用
系统的能力 。
《数据库原理一》课堂教学+研讨(30学时)内容及安排:
第四章 结构化查询语言SQL (12学时)
第一章 数据库发展史
(3学时)
第二章 数据库系统结构 (3学时)
第六章 实体联系模型
2. 确定范围:列名 [NOT] BETWEEN <下限> AND <上限>
例: 查询年龄在20到25之间的学生姓名
3. 确定集合:列名 [NOT] IN(<值序列>
例: 查询选择了c1、c4、c6课号的学生学号和成绩
4. 涉及空值的查询:列名 IS [NOT] NULL
例:列出所有成绩为空的学生学号
SELECT语句中:
第4章 结构化查询语言SQL

4.2.2 定义视图
1.视图的建立 (1)从单个表派生的视图 (2)从多个表派生的视图 2.视图的删除 视图由于是从表中派生出来的,所以不存在修改结 构的问题,但是视图可以删除。
第4章 结构化查询语言SQL
SQL查询功能 4.3 SQL查询功能
SQL查询命令 4.3.1 SQL查询命令
标准SQL基本查询命令: 命令格式:
第4章 结构化查询语言SQL
4.3.4 嵌套查询
嵌套查询是指在SELECT-FROM-WHERE查询模块内部再 嵌入另一个查询模块,称之为子查询。嵌套查询只能对 外层查询排序,不能对内层查询排序。集合成员资格的 比较操作的形式如下:
(集合1)IN(集合2):用于指出包含在子查询模块的查询结果中。 (集合1)NOT IN(集合2):用于指出不包含在子查询模块的查询结果 中。
第4章 结构化查询语言SQL
③VALUES(<表达式1>[,<表达式2>,...]): 指定新记录中字段的值。如果省略了字段名,那么 必须以表结构中字段的顺序指定字段值。 ④FROM ARRAY<数组名>: 将指定一维数组中的元素值插入到新记录中。 ⑤FROMMEMVAR: 将内存中与字段名相同的内存变量的值插入到新记 录的字段中。如果与字段同名的内存变量不存在,该字 段则保持为默认值或空。
4.4.3 修改
命令格式: UPDATE<表名> SET<字段名1>=<表达式1>[,<字段名2>=<表达式 2>...] WHERE<条件>
第4章 结构化查询语言SQL
功能: 用指定的表达式值,更新表中相应记录的字段值。 说明: ①SET<字段名1>=<表达式1>[,<字段名2>=<表达 式2>...]: 指定要改写的字段名和相应的新值。 ②WHERE<条件>: 只有满足条件的记录中相应字段值才会被改写。可 以指定多个条件,各个条件之间用AND或OR连接。
第4章结构化查询语言SQL

第4章结构化查询语言SQL学习目标在本章中将学习:l SQL语言的特点及功能l SQL的数据查询功能l SQL的数据操作功能l SQL的数据定义功能4.1SQL语言概述SQL全称是“结构化查询语言(Structured Query Language)”,最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。
SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。
如今无论是Oracle,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual FoxPro,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。
4.1.1 SQL语言的特点1.综合统一SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据以建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求,这就为数据库应用系统开发提供了良好的环境。
在关系模型中实体和实体间的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一。
2.非过程化语言SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。
所有SQL语句接受集合作为输入,返回集合作为输出。
SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。
SQL不要求用户指定对数据的存放方法。
这种特性使用户更易集中精力于要得到的结果。
所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段。
3.面向集合的操作方式SQL语言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
第4章SQL结构化查询语言.

说明: ① 主数据文件扩展名为.mdf; ② 次数据文件扩展名为.ndf; ③ 日志文件扩展名均为.ldf。
3.修改数据库(ALTER DATABASE)
Alter Database命令语法: ALTER DATABASE 数据库名 { ADD FILE < filespec > [ ,...n ] | MODIFY FILE < filespec > | REMOVE FILE 逻辑文件名 | ADD LOG FILE < filespec > [ ,...n ] | MODIFY NAME = 新数据库名 } <filespec>::= ( NAME = 逻辑文件名 [ , NEWNAME = 新逻辑文件名 ] [ , FILENAME = ‘OS文件的路径及名字’ ] [ , SIZE =文件的初始大小 ] [ , MAXSIZE =最大的文件尺寸 [ , FILEGROWTH = 文件大小增量 ] )
说明:<数据值>的写法决定具体的插入方式。
2.数据插入的两种方式
(1) 插入一行 INSERT [INTO] 表名或视图名 [(列名表)]
VALUES (列值表)
(2) 插入一行或多行 INSERT [INTO] 表名或视图名 [(列名表)]
SELECT子句
三.数据修改(UPDATE)
1.数据修改命令的语法
<列级约束> ::=[ CONSTRAINT 约束名] { [ NULL | NOT NULL ] | [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] ] | [ [ FOREIGN KEY ] REFERENCES 参照表 [ (参照列) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] ] | CHECK ( 逻辑表达式) } <表级约束 > ::= [ CONSTRAINT 约束名 ] { [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] {(列名[ASC | DESC] [ ,... ])} | FOREIGN KEY [ ( 列名 [ ,... ] ) ] REFERENCES 参照表 [ ( 参照列 [ ,... ] ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] | CHECK ( 条件表达式 ) }
第4章1 结构化查询语言SQL

第4章结构化查询语言SQL
4.1 SQL简介
SQL(Structured Query Language):1986年提出,最
终成为关系数据库的标准语言。
Transact-SQL:SQL Server中扩展的SQL实现。
增加了变量、运算符、函数、流程控制等语言元素。
4.2 数据库的创建、删除
4.2.1 创建数据库
SQL Server的内部流程:
①使用 model 数据库的复本初始化数据库及其元数据。
②SQL Server 使用空页填充数据库的剩余部分,除了包含记录数据库中空间使用情况以外的内部数据页。
4.2.2 设置当前数据库
4.2.3 删除数据库
4.3.1 建立表结构及表内约束
4.3.2 建立表间约束(约束参照完整性)
4.3.3 观察、理解表结构
理解查询分析器的对象浏览器中的层次结构:
操作细节:命令执行后,效果需要刷新才能显示。
4.3.4 修改基本表的结构
4.3.5 基本表的删除
不能删除被FOREIGN KEY约束的表
4.4 表数据的插入、修改和删除
4.4.1 插入数据
4.4.2 修改数据
4.4.3 删除数据
由于参照完整性约束,有些记录不能删除
数据被删除,但表结构保留。
数据库入门4结构化查询语言SQL

数据库⼊门4结构化查询语⾔SQL知识内容:1.了解SQL2.库、表操作及索引3.select语句及insert语句4.update语句与delete语句5.SQL常⽤函数6.多表连接及组合查询7.视图操作及数据控制参考资料:SQL必知必会及⼀、了解SQL1.数据库基础数据库:保存有组织的数据的容器表:某种特定类型数据的结构化清单模式:关于数据库和表的布局及特性的信息列:表中的⼀个字段,所有表都是由⼀个或多个列组成的数据类型:所允许的数据的类型,每个表的列都有相应的数据类型,它限制(或允许)该列中存储什么样的数据⾏:表中的⼀个记录主键:⼀列(或⼀组列),其值可以唯⼀标识表中每⼀⾏关于主键:任意两⾏都不具有相同的主键值每⼀⾏都必须具有⼀个主键值(主键值不允许为空)主键列中的值不允许修改或更新主键值不能重⽤(如果某⾏从表中删除,它的主键不能赋给以后的新⾏)2.什么是SQLSQL:结构化查询语⾔(Structured Query Language)简称SQL是⼀种的编程语⾔,是⼀种数据库查询和程序设计语⾔,⽤于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本⽂件的扩展名。
说简单点SQL就是专门⽤来和数据库沟通的语⾔注:SQL中不区分⼤⼩写,但是⼀般提倡使⽤⼤写SQL中注释使⽤--3.SQL四⼤功能查询:select操纵:insert delete update定义:create drop alter控制:grant revoke4.本篇博客中的SQL命令相关环境使⽤的数据库:SqlServer2012学⽣信息管理数据库中的表如下图所⽰:⼆、库、表相关操作及索引1.create语句1 CREATE DATABASE database_name -- 创建数据库23 CREATE TABLE 表名称 -- 创建表4 (5列名称1 数据类型,6列名称2 数据类型,7列名称3 数据类型,8 ....9 ) [in 数据库名]实例:1创建学⽣表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
说明1:
SELECT S••F联Tro接Um条D短件E语:N:两T后.个学面表接号进多行,姓个联表名接时查,,性询两别的个前,表成提之是绩间一用;定逗有号“隔相开同。” FROM STUDENT,S的C字O段R名E。; WHERE 成•联绩接>的8方0法A:如N:D表“名Ss1Tt.u字Ud段eDn名tE.学=N表号T名=.学s2c.字o号r段e.=学名S号C”ORE.学号
无条件查询小结:
6)结果排序 【例】查询显示COURSE表中的所有信息,并按学分 升序排序。
SELECT * FROM COURSE ORDER BY 学分
2、单表条件查询----SELECT … FROM …WHERE …
【格式】SELECT [ALL | DISTINCT] <字段列表> FROM <表> [WHERE <条件表达式> ]
1975~1979,IBM San Jose Research Lab的关系数据库管 理系统原型System R实施了这种语言
SQL-86是第一个SQL标准
(ANSI)
SQL-89、SQL-92(SQL2)、SQL-99(SQL3) (ANSI)
●现状:大部分DBMS产品都支持SQL,成为操作数据库的标 准语言
第四章 结构化查询语言SQL
本章主要内容
4.1 数据查询 4.2 数据操作 4.3 数据定义 本章作业
SQL语言的基本概述
●SQL:Structured Query Language 缩写
结构化查询语言,目前关系型数据库的通用语言。
●SQL的发展
1974年,由Boyce和Chamberlin提出
TO PRINTER:将查询结果送打印机打印。
无条件查询小结:
1)投影查询,SELECT子句指定获取部分列。 【例】查询学生的学号、姓名、性别。
2) 查询结果去掉重复值,用DISTINCT子句在查询结果中剔除重 复的行,DISTINCT与ALL(默认)对应。 【例】查询学生选修课的课程编号,去掉重复值。
例6:SELECT 姓名,YEAR(DATE())-YEAR(出生日期); AS 年龄 FROM STUDENT
例7:显示SCORE(课程成绩表)中的所有记录,并将 成绩一项乘以0.7。
SELECT 学号,课程编号,成绩*0.7 AS 成绩; FROM SCORE TO SCREEN
查询去向 P139
TO SCREEN:将查询结果在屏幕上显示。 INTO ARRAY 数组名:将查询结果保存到一个数组中。 INTO DBF | TABLE <表名>:将查询结果保存到一个永久表中 INTO CURSOR< 临时表名>:将查询结果保存到一个临时表中。 TO FILE<文件名>[ADDITIVE]:将查询结果保存到文本文件中。 如果带“ADDITIVE”关键字,查询结果以追加方式添加到<文件 名>指定的文件,否则,以新建或覆盖方式添加到<文件名>指定的 文件。
3)查询全部列:SELECT * 表示查询结果中包括全部列的信息。 【例】查询全体学生的详细记录
4)查询经过计算的值 【例】查询全体学生的年龄。
5)查询结果使用别名 【例】查询全体学生的年龄,并使用别名年龄。
6)结果排序 【例】查询显示COURSE表中的所有信息,并按学分升序排序。 SELECT * FROM COURSE ORDER BY 学分
3、多表联接查询(连接查询): 【格式】SELECT [ALL |DISTINCT] <字段列表>
FROM <表1>[,表2…..] WHERE <连接条件表达式>
连接条件
<表名1>.<公共字段名>=<表名2>.<公共字段名>
例1:检索出学生的学号、姓名、性别、选修课程名称、成 绩等信息。
SELECT STUDENT.学号 , STUDENT.姓名; 性别,课程名称,成绩; FROM STUDENT,SCORE; WHERE STUDENT.学号=SCORE.学号
期为1981年8月10日的学生的学号、姓名、性别、 专业和年龄信息。
SELECT 学号,姓名,性别,专业,; YEAR(DATE())-YEAR(出生日期) AS 年龄 ; FROM STUDENT ; WHERE 出生日期={^1981-08-10} AND 性别=“男”
单表条件查询:
(1)条件中,涉及到字符型字段值,加定界符 (“”)
分组汇总。
6、HAVING短语:用来限定分组。
本节用的几个表:
SRUDENT COURSE SCORE
一、 基本查询
单表查询
单表无条件查询 单表有条件查询
多表连接查询
多表无条件的连接查询 多表有条件连接查询
select…from…where…
字段名
表名
查询条件
1、单表无条件查询:SELECT … FROM …
说明:
SELECT短语后面接检索项,即具体要查询的 内容。
FROM短语指明检索项来自的表。 当查询内容为表中所有信息时,可以用通配
符“*”,表示输出表中所有字符的值。 DISTINCT短语的作用是去掉查询结果中的
重复项,其位置位于需要去掉重复值的字段 名前面。
注意:
【格式】SELECT [ALL | DISTINCT] <字段列表> FROM <表>
FROM
STUDENT
例3:从STUDENT表中检索出学生的学号、姓名、专业名称信
息 SELECT 学号 ,姓名,专业名称 FROM STUDENT
例4:查询SSCEOLRECET表课中程的编号所,有课程信名息称。,学号,姓名,成绩 FROM SCORE 方法一:
方法二: SELECT * FROM SCORE
【格式】SELECT [ALL | DISTINCT] <字段列表>
FROM <表>
【功能】无条件查询。
例1:将STUDENT表中的专业名称信息检索出来。
SELECT 专业名称 FROM STUDENT
例2:将STUDENT表中的专业名称信息检索出来,并去掉重复
元组。
SELECT
DISTINCT
专业名称
【功能】从一个表中查询满足条件的数据。
例1:从SCORE表中查询成绩大于80分的学号。
SELECT DISTINCT 学号 FROM SCORE; WHERE 成绩>80
例2:从SCORE表中检索出选修了课程编号为 “10002101”的,并且成绩大于80分的成绩信息。
SELECT * FROM SCORE; WHERE 课程编号=“10002101" AND 成绩>80
ALL: 表示显示全部查询记录,包括重复记录。 DISTINCT: 表示显示无重复结果的记录。 <字段列表>:* 是通配符,表示所有的字段。
DISTINCT
*
,
去掉重复元组 所有属性 SELECT后多字段名之间
注意:
例5:SELECT 姓名,YEAR(DATE())-YEAR(出生日期); FROM STUDENT &&可采用 表达式 AS 名字
包括三个基本子句:SELECT子句、FROM子句、WHERE子句,包括 操作子句:ORDER子句、GROUP子句、HAVING子句以及其他 一些选项。
SELECT语句的格式 :P119
说明:
1、SELECT短语:用于说明要查询的数据。 2、FROM短语:用于说明要查询的数据来自哪个或哪些表。 3、WHERE短语:用于说明查询条件。 4、ORDER BY短语:用于对查询的结果进行排序。 5、GROUP BY短语:用于对查询进行分组,可利用它进行
注 (2)多个条件之间用and/or相连 意 (3)一行书写不下,除最后一行,各行结尾加
分号(;)
注意: <条件表达式>的选用
(1)<字段名1><关系运算符><字段名2>。 (2)<字段名><关系运算符><表达式>。 (3)<字段名><关系运算符>ALL(<子查询>) (4)<字段名><关系运算符> ANY|SOME (<子查询>) (5)<字段名>[NOT]BETWEEN <起始值> AND <终止值> (6)[NOT] EXISTS (<子查询>) (7)<字段名> [NOT] IN ( <值表> ) (8)<字段名> [NOT] IN (<子查询>) (9)<字段名> [NOT] LINK <字符表达式>
SELECT语句的格式 :P119
SELECT [*|ALL|DISTINCT][ TOP〈表达式〉 ] [〈别名〉] 〈Select表达式〉 [AS〈列名〉][,[〈别名 ] 〈Select表达式〉 [AS〈列名〉]…] FORM[ 〈数据库名〉 !] 〈表名〉[[AS]Local_Alias] [[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN[ 〈数据库名〉 !] 〈表名〉 [[AS]Local_Alias][ON〈联接条件〉]] [INTO 〈查询结果〉 |TO FILE 〈文件名〉 [ADDITIVE] | TO PRINTER [PROMPT] | TO SCREEN] [PREFERENCE PreferenceName][NOCONSOLE][PLAIN][NOWAIT] [WHERE〈联接条件1〉[AND〈联接条件2〉…][AND | OR 〈筛选条件〉…]] [GROUP BY 〈组表达式〉 ][,〈组表达式〉…]] [HAVING ]〈筛选条件〉 ] [UNION [ALL] 〈SELECT命令〉 ] [ORDER BY 〈关键字表达式〉 [ASC |DESC] [, 〈关键字表达式〉 [ASC |DESC]…]]