关系数据库标准语言ppt课件.ppt
《关系数据库标准语言ppt课件.ppt》由会员分享,可在线阅读,更多相关《关系数据库标准语言ppt课件.ppt(69页珍藏版)》请在三一办公上搜索。
1、2022/11/18,3.1 SQL概述3.2 数据定义3.3 数据查询3.4 数据更新 3.5 视图 3.6 案例2:活期储蓄管理系统 数据库上的查询,2022/11/18,3.1 SQL概述,SQL(Structured Query Language) 的字面意思是结构化的查询语言,但它的功能并不仅仅是查询,它是关系数据库管理系统的标准语言。3.1.1 SQL的主要功能 SQL语言按照功能可以分为3大类:DDL(Data Definition Language) 数据定义语言 用于定义关系数据库的模式、外模式和内模式,以实现对数据库基本表、视图及索引文件的定义、修改和删除等操作。 最常用的
2、DDL语句是CREATE、DROP和ALTER命令。DML(Data Manipulation Language)数据操纵语言 用于完成数据查询和数据更新操作。其中数据更新指对数据进行插入、删除和修改操作。 最常使用的DML语句是SELECT、INSERT、UPDATE和DELETE命令。,2022/11/18,DCL(Data Control Language)数据控制语言 用于控制对数据库的访问,服务器的关闭、启动等操作。 常使用的DCL命令有:GRANT、REVOKE等。3.1.2 SQL的特点语言简洁,风格统一,易学易懂 SQL语言接近英语,只用几个英文单词的组合就能完成所有功能,因此
3、初学者非常容易上手。既是自含式语言,又是嵌入式语言 作为自含式语言,SQL能够独立地用于联机交互的使用方式。 当作为嵌入式语言使用时,SQL语句几乎可以不加修改地嵌入到如VB、PB这样的前端开发平台上,利用前端工具的计算能力和SQL的数据库操纵能力,可以快速地建立数据库应用程序。高度非过程化 用SQL语言进行数据操作,只要提出“做什么”,而无须知道“怎么做”,SQL语句的实现过程由系统自动完成。,2022/11/18,3.1.3 SQL对象命名约定 SQL对象包括数据库、表、视图、属性名等。这些对象名必须符合一定规则或约定,一般应遵守下列规则。数据对象名可以为1-30个字符(在MS Acces
4、s为64个字符),但有些DBMS限制为8个字符,例如:Oracle数据库就是如此。数据对象名应以字母开头,其余字符可以由字母、数字、下划线组成。3.1.4 SQL语句结构和书写准则在SQL语句语法格式中的一些约定符号:尖括号“”中的内容为实际语义。中括号“ ”中的内容为任选项。,. . .意思是“等等”,即前面的项可以重复。,2022/11/18,大括号“”与竖线“|”表明此处为选择项,在所列出的各项中仅需选择一项。 例如: A | B | C | D 意思是A、B、C、D中取其一。SQL中的数据项(包括列项、表和视图)分隔符为“,”;其字符串常数的定界符用单引号“”表示。在编写SQL语句时,
5、遵从某种准则以提高语句的可读性,使其易于编辑,是很有好处的。 以下是一些通常的准则:SQL语句对大小写不敏感 为了提高SQL语句的可读性,子句开头的关键字通常采用大写形式。SQL语句可写成一行或多行,习惯上每个子句占用一行。关键字不能在行与行之间分开,并且很少采用缩写形式。SQL语句的结束符为分号“;”,分号必须放在语句中的最后一个子句后面,但可以不在同一行。,2022/11/18,3.2 数据定义,SQL语言的数据定义功能包括定义数据库、定义基本表、定义索引和定义视图。其基本语句如表3-1所示。 表3-1 SQL的数据定义语句,2022/11/18,基本表是独立存储在数据库中的表 在SQL中
6、一个关系对应一个基本表,一个(或多个)基本表对应一个存储文件,基本表对应的数据必须在数据库中存放。存储文件的物理结构对用户而言是透明的,用户无需关心。 一个基本表可以根据需要带一个或多个索引,索引也存放在存储文件中。视图是由一个或几个基本表导出的,它的外部形式也是一个表,是由基本表中选取的行和列组成的 视图本身不独立,它依附于基本表,在数据库中不存放视图对应的数据,而只存放关于视图的定义,因此视图只是一个虚表。,2022/11/18,3.2.1 数据库的创建与删除 创建数据库 SQL使用命令CREATE DATABASE创建数据库,其一般语法如下: CREATE DATABASE ; 【例3-
7、1】创建一个简单数据库。 CREATE DATABASE MyDb; 删除数据库 SQL使用命令DROP DATABASE删除一个或多个数据库,其一般语法如下: DROP DATABASE ,,;【例3-2】删除数据库MyDb。 DROP DATABASE MyDb;,2022/11/18,3.2.2 表的创建与删除 创建基本表 创建基本表的结构是建立数据库最重要的一步,其一般语法如下: CREATE TABLE ( , , ,); 说明: 是指要创建的基本表的名称,该名称应符合具体DBMS的标识符的命名规则。指的是表的属性名称。,2022/11/18,定义表的各个属性时应指出其相应的数据类型
8、和长度,不同DBMS支持的数据类型不完全相同,表3-2列出的是IBM DB2 SQL支持的主要数据类型:,2022/11/18,关于完整性约束条件,需要说明以下几点:完整性约束条件分为列级完整性约束条件和表级完整性约束条件,它们之间的区别在于:列级完整性约束条件只能用于列,而表级完整性约束条件能够用于一张表中的多列。SQL的完整性约束条件有以下几种:NOT NULL 或NULL约束 这个约束条件为列级完整性约束条件。NOT NULL 为不允许该列存在空值,而NULL 为允许该列存在空值。UNIQUE约束 UNIQUE约束是惟一性约束。即不允许表中的某一列或者某几列有重复的属性值。DEFAULT
9、约束 DEFAULT约束为默认值约束,是列级完整性约束条件。当向表中插入一个新行时,如果对于特定列没有指定数值,则使用DEFAULT子句指定的默认值。,2022/11/18,CHECK约束 CHECK约束是检验约束,为插入列中的数据指定约束条件。PRIMARY KEY 约束 PRIMARY KEY 约束即主键约束,是表级完整性约束条件。表中的主键可以是一列或列组,PRIMARY KEY 约束可以使得主键的数值在每一行中各不相同。 注意:PRIMARY KEY约束类似于UNIQUE约束,差别在于PRIMARY KEY约束中的列不可以为空。FOREIGN KEY约束 FOREIGN KEY约束是参
10、照完整性约束,是用于约束外键的,也是表级完整性约束条件。,2022/11/18,【例3-3】创建“学生表”student,它由学号id、姓名name、性别sex、班级号class、出生日期birthday等5个属性组成。其中学号不能为空,值必须惟一,且姓名也必须惟一和非空。 CREATE TABLE student ( id CHAR(8) NOT NULL UNIQUE, name VARCHAR(20) NOT NULL UNIQUE, sex CHAR(1) DEFAULT 男 NOT NULL, class CHAR(4), birthday DATE, sum int constra
11、int c2 check sum2000, CONSTRAINT C1 CHECK (sex IN (男,女);,2022/11/18,【例3-4】创建“班级信息表”class,它由班级号id、班级名name、班长monitor等3个属性组成,其中班级号是主键,班长是外键,它是【例3-3】学生表中学号的某个值。 CREATE TABLE class ( id CHAR(4) NOT NULL , name VARCHAR(50) NOT NULL , monitor CHAR(8) CONSTRAINT C2 PRIMARY KEY(id), CONSTRAINT C3 FOREIGN KEY
12、(monitor) REFERENCES student(id); 说明:本例定义了2个列级约束、2个表级约束。CONSTRAINT子句定义的是表级约束,C2、C3是约束名,分别将id定义为主键,monitor定义为外键。,2022/11/18,删除基本表 当某个基本表不再需要时,可以使用DROP TABLE 语句将它删除。其一般语法为: DROP TABLE ; 【例3-5】删除student表。 DROP TABLE student; 该语句一旦执行,基本表的定义、数据、此表上建立的索引和视图都将自动被删除掉。,2022/11/18,3.2.3 表结构的修改 SQL语言用ALTER TAB
13、LE命令修改基本表,其基本语法为: ALTER TABLE ADD (完整性约束 ,) DROP MODIFY ( ,); 基本表的修改分3种情况:使用ADD子句增加新列和新的完整性约束条件 【例3-6】在student表中增加“籍贯native_place”列,数据类型为字符型。 ALTER TABLE student ADD native_place VARCHAR(50);,1,1,2022/11/18,使用DROP子句删除指定的完整性约束条件 【例3-7】 删除student表学生姓名必须取惟一值的约束条件。 ALTER TABLE student DROP UNIQUE(name);
14、使用MODIFY子句修改基本表的列定义 【例3-8】 将student 表name列的数据类型改为定长字符串型。 ALTER TABLE student MODIFY name char(8) NOT NULL; 注意:(1)修改列定义时,要将原来的列级约束条件写上,否则原有的列级约束会不起作用。(2)修改列定义时,有可能会破坏已有的数据,应事先作好备份工作。(3)SQL未提供删除属性列的语句,只能采取间接的方法。,2022/11/18,3.2.4 建立索引 索引的概念 索引是建立在列上的一种数据库对象,它对表中的数据提供逻辑顺序,当在数据库表中搜索某一行时,可以通过使用索引来找到它的物理位置
15、。索引建立后,什么时候使用索引以及使用哪一个索引(当有多个索引存在时),由DBMS内部根据情况自行决定,不需要人员干预。索引是动态的,每当数据库表的数据更新一次,相应的索引也随之更新。,2022/11/18,建立索引 在SQL语言中,建立索引使用CREATE INDEX命令,其一般语法为: CREATE UNIQUE CLUSTER INDEX ON (,,); 说明: (1)表名是要建立索引的基本表的名字。 (2)列名是被建立索引的列的名称。索引可以建立在某一列或多个列上。 (3)次序是指按照该列名的索引值的排列顺序。次序可以取值ASC(升序)或DESC(降序),默认值是ASC。 (4)UN
16、IQUE表示创建的索引是惟一索引,索引列上的数据不能有重复值。 (5)CLUSTER表示要建立的是聚簇索引。聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引。,2022/11/18,【例3-9】为学生表student和班级信息表class建立索引。其中,student表按学号id升序建立惟一索引,class表按班级号降序建立惟一索引。 CREATE UNIQUE INDEX stuid_ind ON student(id ASC); CREATE UNIQUE INDEX claid_ind ON class(id DESC); 【例3-10】为表student在姓名name列上建立一个
17、聚簇索引。 CREATE CLUSTER INDEX stu_cluind ON student(name); 该语句执行后,student表中记录的物理顺序将按照name列值的升序存放。一个基本表只能建立一个聚簇索引,因为表中的数据不能以多种方式进行物理排序。可以在经常查询的列上建立聚簇索引,以提高查询效率。但对于经常更新的列则不宜建立聚簇索引,因为建立聚簇索引后,更新索引列数据时,要更新表中记录的物理顺序,开销较大。,2022/11/18,删除索引 在SQL语言中,使用DROP INDEX命令删除索引,其语法如下: DROP INDEX ; 【例3-11】删除为student表建立的索引s
18、tu_cluind。 DROP INDEX stu_cluind; 删除索引时,系统会同时从数据库中删去有关该索引的描述。 对于数据库系统而言,索引一经建立,一般不应随意删除。SQL没有提供修改索引的语句,对于一些在使用中证明不合适的索引,只能先删除后重建。,2022/11/18,3.3数据查询,3.3.1 SELECT语句的结构 SQL语言提供的SELECT语句的一般格式如下: SELECT ALL|DISTINCT ,, FROM , , WHERE GROUP BY HAVING ORDER BY ASC|DESC; 说明: SELECT语句的含义是,根据WHERE子句指定的条件,从FR
19、OM子句后面的基本表或视图中找出满足条件的记录,再按照SELECT子句指定的目标列表达式,选出这些记录相应的列形成结果集返回。其中,SELECT子句和FROM子句是必选的,而WHERE子句、GROUP BY子句、HAVING子句以及ORDER BY子句都是可选的。,2022/11/18,3.3.2 选择行和列-选择和投影运算的实现 下面以人事工资管理系统的员工表employee和部门表dept为例介绍SELECT语句的使用方法。 Employee(emp_id,ename,job,mgr_id, workdate,sal, comm,dept_id) 员工号 姓名 职位 主管 参加工作时间 月
20、薪 岗位津贴 部门号 Dept(dept_id,dname, tel) 部门号, 部门名称, 电话 用下面语句创建表结构: CREATE TABLE employee (emp_id CHAR(4) PRIMARY KEY, ename VARCHAR(20), job VARCHAR(9) , mgr_id CHAR(4),workdate DATE, sal SMALLINT, comm SMALLINT, dept_id CHAR(2) NOT NULL FOREIGN KEY (dept_id) REFERENCES Dept(dept_id), FOREIGN KEY(mgr_id)
21、 REFERENCES employee(emp_id);,2022/11/18,CREATE TABLE dept (dept_id CHAR(2) PRIMARY KEY, dname VARCHAR(12) , tel VARCHAR(20); 选择运算的实现查询一个表的所有行 在SELECT语句中只要没有WHERE子句,查询结果就包含了所有行。 【例3-12】查询表employee的所有员工的员工号和姓名。 SELECT emp_id,ename FROM employee;查询满足条件的某些行 查询满足条件的某些行,可以通过WHERE子句来实现。 【例3-13】查询月薪超过1800的
22、员工姓名和月薪。 SELECT ename,sal FROM employee WHERE sal1800;,2022/11/18,【例3-14】查询员工号为1001的员工姓名及部门号。 SELECT ename,dept_id FROM employee WHERE emp_id=1001; 投影运算的实现查询表的全部列 【例3-15】查询部门表中部门号为11的全部内容。 SELECT dept_id,dname,tel FROM dept WHERE dept_id=11; 在SQL语言中,可以用星号“*”代表所有列名,列的显示顺序与基本表中列的顺序一致。 【例3-16】下面语句的结果等价
23、于【例3-15】的语句。 SELECT * FROM dept WHERE dept_id=11;,2022/11/18,查询表的部分列 【例3-17】查询全体员工的员工号,姓名和参加工作时间。 SELECT emp_id,ename,workdate FROM employee ;查询经过计算的值 SELECT子句的不仅可以是基本表的属性,也可以是表达式,包括算术表达式、字符串常量和函数等。 【例3-18】查询全体员工的姓名及年薪。 SELECT ename,sal*12 FROM employee ; 结果: ename sal*12 吴伟 15600 岳玲 13200 王斌 18000
24、徐欢 9600,2022/11/18,【例3-19】上例查询如果在中使用字符串常量,结果会更清晰。 SELECT ename,年薪:,sal*12 FROM employee ; 查询结果如下: ename 年薪: sal*12 吴伟 年薪: 15600 岳玲 年薪: 13200 王斌 年薪: 18000 徐欢 年薪: 9600,2022/11/18,【例3-20】对【例3-18】查询可以通过指定别名来改变查询结果的列标题,这样也可以使结果更清晰。 SELECT ename AS 姓名 ,sal*12 AS 年薪 FROM employee ; 查询结果如下: 姓名 年薪 吴伟 15600 岳
25、玲 13200 王斌 18000 徐欢 9600,2022/11/18,3.3.3 SQL的运算符SQL语言使用的运算符包括算术运算符、比较运算符、逻辑运算符等。 算术运算符 算术运算符有4种:+、-、*、/ 比较运算符基本比较运算符 共9种:=、=、!=或、 !(不大于)、!(不小于)特殊比较运算符 有4类:BETWEENAND、IN、LIKE 和 IS NULL,2022/11/18,运算符BETWEENAND 运算符BETWEENAND是用于确定记录的范围,即某属性值在指定的范围之内(包括边界值)的记录,其中BETWEEN后面是下限,AND后面是上限。 【例3-21】查询月薪在1000到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系 数据库 标准 语言 ppt 课件
链接地址:https://www.31ppt.com/p-1395369.html