第四章结构化查询语言.pdf
《第四章结构化查询语言.pdf》由会员分享,可在线阅读,更多相关《第四章结构化查询语言.pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章 结构化查询语言SQL SQL 概述 数据的查询是最基本的操作。SQL 语言是结构化查询语言的缩写,是一种标准的关系数据库查询语言。它用于对关系数据库中的数据进行存储、查询、更新等操作。一、SQL 的历史与特点 Structured Query Language 结构化查询语言 1974 年提出,称为 SEQUEL 语言;75-79 年,由 IBM 公司修改成 SEQUEL2 语言目前的 SQL 语言 86 年,ANSI(美国国家标准协会)确定 SQL 为关系型数据库系统的工业标准,命名为 SQL-86 92 年,SQL-92 为目前最新版本的 SQL 语言 99 年,出版 SQL3 绝
2、大多数流行的关系型数据库管理系统,如 Oracle,Sybase,Microsoft SQL Server,Access 等都采用了 SQL 语言标准,但又都会有自己的一些扩充。二、SQL 有两种使用方法:1、与用户交互的方式联机使用交互式 SQL;适用于非计算机专业人员,即最终用户即时查询。称为自含型 2、作为子语言嵌入到其他程序设计语言中使用。宿主型 SQL,适合于程序设计人员用高级语言编写应用程序。三、SQL 的体系结构:1、SQL 的体系结构:视图全局模式内模式 外模式视图(View);全局模式称为模式,或叫数据库,由基本表组成;内模式由系统根据数据库模式自动实现,不需要用户过问。2、
3、SQL 术语 基本表:每个关系又叫做基本表或表(Table),元组行(Row),关系中的属性称为字段(Field)列(Column);视图:从一个或几个基本表或其它视图导出来的表。是个虚表,有自己独立的结构定义,但没有独立的数据存在,它的数据来源于基本表。四、SQL 的主要功能 是实现数据库查询,其他功能:DDL 数据定义功能(Data Definition Language):用于定义数据的结构,包括定义基本表、定义视图、定义索引三个部分。能够实现数据库的三级体系结构 DML 数据操纵(Data Manipularion Language):包括对基本表和视图的数据的操作。它的操作对象是元组
4、的集合,其结果也是元组的集合。SQL 是一各高度非过程化的面向集合的语言。DCL 数据控制(Data Control Language):用于定义数据库用户的权限,以保证系统的安全性。一般由DBA 来使用。五、SQL 特点:综合统一、高度非过程化、集合操作、自含与宿主、三级体系 4。1 数据库模式的建立和删除 一、建立数据库模式 1、语句格式:CREATE SCHEMA|DATABASE AUTHORIZATION 2、语句说明:(1)功能:建立一个空数据库,缺省状态下,该数据库为创建者自己所有。加上授权语句,还可以将此数据库权交给其他人。(2)语句关键字不区分大小写。(3)括号内为必需项 3
5、、例 P:73 二、删除数据库模式 1、语句格式:DROP SCHEMA|DATABASE 2、语句说明:(1)删除已存在的数据库,包括其中所有对象。3、例 P:74 4。2 SQL 语句对表的操作 一、建立表结构:1、语句格式:CREATE TABLE .(,.,)2、语句说明:(1)功能:在当前或给定的数据库中建立一个基本表结构(关系)。(2)表名自定,要符合命名规则。(3)列定义一般出现多个,即一个表的属性有多个。列定义至少包括列名 列数据类型两项,必要性可以有该列的完整性控制说明。3、SQL 中常用的数据类型 二进制 Binary(n)N+4 字节 N 为 18000 这间的值,但最后
6、用检索输出的是二进制表示 二进数据长度基本相同时可以使用 文本 Text 实际大小 最大可存储 231-1 存储文本数据 图形 image 实际大小 最大可存储 231 照片、图、画 整型 Int 4 个字节-231(231-1)内所有正负整数数 存储可直接运算的数值 Smallint 2 个字节-215(215-1)内所有正负整数数 Tinyint 1 个字节 0255 范围的所有正整数 浮点数据类型 Real 4 个字节 精确到 7 位小数 存储十进制小数。采用只入不舍的方式存储。Float *8 个字节 精确到 15 位小数 Decimal *Numeric 实际存储空间 Decimal
7、(p,s),p 表示总位数,s 表示小数点后的位数。字符型 Char(n)N 字节 若输入的字符少于 n,以空格填满。若超长,则会截掉。存储字符 1-8000 个 日期与时间型 Datetime 8 个字节(精度3.33ms)MM DD YYYY hh:mm AM/PM 1753.1.19999.12.31 23:59:59 存储日期和时间的结合体,引用时用单引号 Smalldatetime 4 个字节 1900.1.12079.6.6,精确度 1 分钟 货币型 Money 8 个字节 精确度为万分之一 用于存储货币 第四章 结构化查询语言SQL 第 3 页 共 12 页 位型 Bit 1 个
8、字节 只能输入 0 与 1,非此值当为 1 常用作逻辑变量表真假 A、只有字符与二进制数据类型需要指定长度,其他如整型、日期时间、浮点数据类型,定义时不用指定长度,也就是长度是默认值。B、不同的数据库系统支持的数据类型各不相同。在 ACCESS 中使用 SQL 的 Create Table 语句,数据类型会做自动转换。4、列完整性约束:有六种(1)定义主键约束:PRIMARY KEY(2)默认值约束:DEFAULT (3)单值约束(唯一性约束):UNIQUE,即在该列上的所有取值必须互不相同,用在某一列不是主键但其值又是唯一的列上。(4)外码约束:references()(5)检查约束:che
9、ck(),用于对该列的取值做限制。(6)非空/空值约束:not null/null,专明此列的值是否可以为空,默认是可空值。5、示例 (1)create table tu (总编号 Char(6),分类号 Char(8),书名 Char(16),日期 Datetime)注意:表名与括号之间用空格分开,字段名与类型之间也必须有空格,各字段之间用逗号分开,可以一行多列或一行列。系统默认字段长度可以省略。(2)CREATE TABLE 商品基本信息表 (货号 char(8),货名 char(20),进口 bit,品牌 char(10),单价 money);(3)CREATE TABLE 商品基本信息
10、表(货号 char(8)PRIMARY KEY,货名 char(20)unique,进口 bit ,品牌 char(10),单价 money check(单价100),供应商号 char(10)references 供应商表(供应商号);注:ACCESS 不支持 DEFAULT、check,其他都可以。6、表级完整性约束:有四种 (1)主键约束:PRIMARY KEY(列名,。)(2)外部键约束:foreign key(列名)references 父表名(参照主码)(3)单值约束:UNIQE(列名。)(4)检查约束:CHECK(逻辑表达式)表级约束基本上与列级约束相同,但在写法上有一些差别,另
11、外,表级约束可以一次对多个列定义。例:CREATE TABLE 商品基本信息表 (货号 char(8),货名 char(20),进口 bit ,品牌 char(10),单价 money check(单价500),供应商号 char(10),PRIMARY KEY(货号,货名),foreign key(供应商号)references 供应商表(供应商号)UNIQUE(货名));注意:外码必须与被参照关系中对应的主码具有完全相同的数据类型。每个约束都会由系统自动产生一个约束名。课本例 P:7677 二、修改表结构:修改基本表是指对已经定义的基本表增加新的属性名(列)或删除,扩展关系模式 1、语句格
12、式:ALTER TABLE .ADD,.|ADD,.|DROP COLUMN,|DROP,.2、语句说明:(1)功能:可以增加也可以删除列或完整性约束 (2)新增的列不能规定为空值;删除列前要先删除与该列有关的约束,一次增加或删除多个列时,只用一个 ADD 或 DROP。3、alter table tu add 单价 money,总价 money;给图书表增加单价与总价列;alter able tu drop 单价,总价;删除单价与总价 三、删除基本表 1、语句格式:DROP TABLE .2、语句说明:(1)功能:删除一个表。该 表的所有内容全部都删除。(2)如果该表与其他有关系,应该先删除
13、关系才能删除表。3、例:DROP TABLE TU 四、表内容的操作:1、插入记录(数据)(1)单行插入记录 语句格式:P:78 insert into 表名列名values(各列值,用逗号分开)例:建立 tu 表 create table tu (总编号 Char(6),分类号 Char(8),书名 Char(16),日期 Datetime)在表中插入一条记录:insert into tu (总编号,分类号,书名,日期)values(0101,TP-1,计算机应用基础,1991-01-01)也可省略为:insert into tu values(0101,TP-1,计算机应用基础,1991-
14、01-01)还可能只写入部分列的值:insert into tu (总编号,书名,日期)values(0102,计算机应用,1991-01-01)注意:对应列的值数据类型也要对应书写格式。如字符、日期要用。(2)插入多行记录:可以利用 SELECT 语句从另一表中获取多条记录并加入到另一表中。语句格式:insert into 表名列名 说明:注意两表的字段应该一致。例:P:79 2、修改记录 (1)语句格式:P:80 第四章 结构化查询语言SQL 第 5 页 共 12 页 UPDATE 表名 SET 列名=表达式 WHERE 逻辑表达式 (2)功能:修改某些列的值,可按条件修改。例:图书表 T
15、U,设做如下操作:A、alter table tu add 库存量 int,单价 money,总价 money B、insert into tu(总编号,库存量,单价)values(02001,2,25)C、update tu set 总价=单价*库存量 D、update tu set 书名=操作系统 where 总编号=02001 E、update tu set 分类号=TP34where 书名=操作系统 例:课本 P:80(1)、(2)从其他表中获取数据。3、删除记录 (1)语句格式 P:81 delete from 表名 where 逻辑表达式 (2)功能:删除一个表中满足条件的行 (3
16、)例:delete from tu where 库存量 is null 删除库存量为空的记录。例:课本 P:8182 练习与作业:1、用 create 语句建立教师任课表(课程 ID,课程名称,系(部门)ID,教师 ID,学分,学时,考试类型)并作完整性约束(可用列完整性也可用表完整性)课程 ID 为主键,考试类型默认值为“闭卷”,系(部门)ID 是系(部门)表的外码,教师 ID 是教师情况表的外码。2、说明下面语句的功能:(1)create table emlpoyee(first_n char(9)not null primary key,last_n char(8),age int,ci
17、ty char(20);(2)alter table emlpoyee add address char(30),sex char(2)default 男;4。4 视图的建立 视图:依赖基本表而产生的虚表,可以是一个几个基本表的映象。视图的建立与删除不影响基本表,但视图内记录的更新会影响基本的内容。视图能够增加数据库的安全性,因为视图的使用可以授权。一、建立视图:1、语句格式 P:82 create view 视图名(列名表)as select 列名表 from 基本表名 2、功能:当前数据库中根据 SELECT 子句的查询结果建立一个视图,视图包括结构与内容。3、例:P:83 4、视图的列名
18、可以自定,列值也可以由基本表的数据计算产生。如课本 P:84 二、视图内容的修改 语句格式 P:84 UPDATE 视图名 SET 列名=表达式 与基本表的更新语句一样。三、修改视图的定义:语句格式 P:85 ALTER VIEW 视图名(列名,。)AS SELECT 子句 例 P:85 四、删除视图:语句格式与示例:P:85 DROP view 视图名 数据定义与数据操作命令概括 建立命令 database 库名 Create table 表名 view 视图名 as 源表数据 建立命令 database 库名 Create table 表名 view 视图名 as 源表数据 4.5查询 一
19、、SQLSELECT 查询语句格式 1、完整的语句格式:P86。SQL-SELECT:用于检索数据,根据一个或多个表按条件进行查询,产生出一个新表(查询结果)并显示出来。可以在查询设计器中使用 SELECT 命令。2、简单的语句格式:select*from 基本表名 SELECTALL|DISTINCT AS|*FROM临时别名 1,如:select*from spk1 where 分类名=电视机 to screen SQL 中所用到的任何表都不用预先打开。&将查询的结果定向到某一窗口中。二、参数及子句说明:ALL|DISTINCT:指定要包含在查询结果中的字段、常量和表达式,distinct
20、 将排队查询结果中所有重复的行。关系运算中的投影运算的具体实现(1)*:表示所有的字段,等同于 ALL,默认也是 ALL;例:select*from 商品表 1;从商品表中显示所有记录内容(所有的行与列)例 4-1:select ALL 分类名 from 商品表 1;从商品表中查询商品表 1 中的所有分类名(有重复值)P:88 例 4-2:select DISTINCT 分类名 from 商品表 1;从商品表中查询商品表 1 的分类名(去掉重复值)P:89(2)字段函数(列函数 P:89)有:AVG(字段名)、COUNT(字段名)、MIN(字段名)、MAX(字段名)、SUM(字段名)例 4-7
21、,例 4-8,例 4-9,例 4-10AS 标题名,用于指定该列显示的标题 例:查询教师情况表中有多少位教师:SELECT count 教师姓名 AS 总人数 FROM 教师情况一览表 例:查询教师情况表中有几位副教授以上职称的人 SELECT count(职称)AS 高级职称人数 FROM 教师情况一览表 where 职称=教授 or 职称=副教授 例:查询教师情况表中最高工资与最低工资及平均工资:SELECT max(工资)as 最高工资,min(工资)AS 最低工资,avg(工资)AS 平均工资 FROM 教师情况一览表 注意:部分 DBMS 只能用单引号,所以尽量采用单引号。使用列函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 结构 查询 语言
限制150内