第4章结构化查询语言SQL_第1页
第4章结构化查询语言SQL_第2页
第4章结构化查询语言SQL_第3页
第4章结构化查询语言SQL_第4页
第4章结构化查询语言SQL_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、第第4 4章章 结构化查询语言结构化查询语言-SQL-SQL一、一、SQLSQL简介和库简介和库操作操作1 1SQLSQL语言概述语言概述SQLSQL是是英文Structured Query Language的缩写,中文含义是结构化查询语言。它是美国国家标准化组织ANSI批准使用的一种关系数据库语言标准。如微软公司推出的Access和SQL Server数据库管理系统,其中所采用的SQL,都与标准SQL有所不同。SQL具有数据定义DDL、数据操纵DML和数据控制DCL等丰富功能。它定义有一组操作命令,用户通过命令交互方式,或者程序执行方式,使用它们来实现对数据库的相应操作功能。在SQL中,外模

2、式又叫做视图视图(view),全局模式简称模式(schema)或数据库(database),内模式通常不需要专门定义,可由DBMS自动完成。在SQL语言中,每个关系又叫做基本表基本表或表表(table),每个关系中的属性又叫做字段字段(field)或列列(column),元组又叫做行行(row)。每个视图视图也是一个关系,它由基本表产生出来,有自己独立的结构定义结构定义,但没有独立的数据存在数据存在,它的数据来自基本表。把视图称为虚表虚表,把基本表称为实表。SQL的数据操纵功能包括对基本表和视图的数据查询、插入、删除和修改。SQL是一种高度非过程化的、面向集合操作的语言。2 2数据库的建立数据

3、库的建立建立数据库的命令格式命令格式为: CREATE SCHEMA | DATABASE AUTHORIZATION 命令功能:命令功能:将在数据库管理系统中建立一个名称为所给的一个空数据库,它的所有者,也就是创建者属于所给的。命令格式说明:命令格式说明:大写英文单词是命令关键字;用尖括号括起来的语法成分是用户定义的标识符,它可以是由汉字、英文字母、数字组成的字符串,作为一个名称使用;一对花括号中用一个或若干个竖线分开的每个语法成分,只能并且必须选用其一;中括号中的语法成分可以被选用,也可以被省略。使用英文字母时,默认为大小写是等效的,如大写BA和 小写ba相同。命令格式举例:命令格式举例:

4、 (1) create schema xuesh authorization xxk (2) create database 教学库当执行了此create命令建立数据库后,此数据库将立即成为当前数当前数据库据库,若要改变另一个数据库为当前数据库,则可以使用“USE ”命令;如使用“USE xuesh”命令后,xuesh数据库就成为了当前数据库。3 3数据库的删除数据库的删除删除数据库的命令格式如下: DROP SCHEMA | DATABASE 命令功能:命令功能:删除掉由命令中所指定的一个数据库应用系统。当然会同时把该库中已经存在的所有内容和信息一并删除掉。 命令格式举例:命令格式举例: d

5、rop database xuesh 该命令把刚建立的名称为xuesh的空数据库从数据库管理系统中删除掉。二、表结构二、表结构操作操作1 1建立表结构命令的定义建立表结构命令的定义 命令定义格式如下:命令定义格式如下: CREATE TABLE . (,.,.) 命令功能:命令功能:在当前或给定的数据库中定义一个基本表的结构。2 2列的数据类型列的数据类型在表结构的定义体内,对每个字段(列)的定义,都需要给出字段名称、字段的数据类型、字段的完整性约束等信息。可把SQL语言中的数据类型主要分为以下四种: char(n) 为定长字符型,或者称为字符串型,其长度定义为n,能够用来保存具有n个字符的字

6、符串,如可以将姓名定义为定长字符型,姓名的数据类型被定义为char(6)。现在所有字符都采用unicode国际标准编码,每个字符(无论是西文字符或汉字)都统一采用两个字节编码。 int为整数型,简称整型。该类型占用4个字节,能够用来表示-2147483648到+2147483647之间的所有整数,如可以将年龄、工龄等字段定义为整型。 float为浮点型,又称实数型。该类型占4个或8个字节,能够表示相当大范围内的任何浮点数或实数,包括该范围内的所有整数和小数。如职工工资、产品重量等字段都可以采用float类型。 date或datetime为日期型,表示日期和时间。该类型占用4个或8个字节,能够表

7、示任何一个日期,日期数据格式为yyyy/mm/dd或yyyy-mm-dd。为了区别于数值型数据,字符char型数据和日期date型数据在书写时都需要用单引号括起来。如20整数表示,-3.26为实数表示,学习成绩就是一个字符串表示,2013/3/27就是一个日期数据表示。3 3列级列级完整性约束完整性约束在定义一个基本表中,在每个列的列名及数据类型定义的后面,还有时需要给出该列的完整性约束的定义,称此为列级完整性约束。列级完整性约束被分为以下6种情况。 (1)默认值约束。表示为:DEFAULT DEFAULT 。如DEFAULT 0 可作为职工工资列的默认值,DEFAULT 18 可作为职工年龄

8、列的默认值。 (2)空值/非空值约束。表示为:NULL/NOT NULL/NOT NULLNULL。如姓名列的定义为:“姓名 char(6) NOT NULL”,就定义了姓名列为字符型,非空约束。3)主码约束。表示为:PRIMARY KEYPRIMARY KEY。一个表中被注明主码后,数据库管理系统将按主码值的升序自动建立一个对应的索引,以后在显示或处理表中的内容时,将自动按照主码的升序。如学生号列的定义为:“学生号 char(7) PRIMARY KEY”,这就定义了学生号列为字符型,主码约束,学生号成为学生表中的主码。 (4)单值约束。表示为:UNIQUEUNIQUE。注明该列上的所有取值

9、必须互不相同。如身份证号列可定义为:“身份证号 char(18) UNIQUE”。 (5)外码约束。表示为:REFERENCES REFERENCES ()。注明该列为外码,并给出对应的父表及父表中被参照的主码。学生号列可定义为:“学生号 char(7) REFERENCES 学生表(学生号)”。 (6)检查约束。表示为:CHECK(CHECK()。注明该列的取值条件,或称取值限制。如性别列的定义可以为:“性别 char(2) not null check(性别=男 OR 性别=女)”。4 4表级表级完整性约束完整性约束列级完整性约束的定义只针对所在的列,而表级完整性约束的定义可以针对该表定义

10、中的任何一个列或多个列,当需要涉及到多个列的完整性约束的定义时,则必须使用表级完整性约束的定义。 的定义被分为以下4种情况。 (1)主码约束。表示为:PRIMARY KEY(PRIMARY KEY(,.),.)。注明一个或同时多个列为该表中的主码。如在选课表的定义中,在所有列的定义之后,可以使用表级主码约束的定义:primary key(学生号,课程号)。 (2)单值约束。表示为:UNIQUE(UNIQUE(,.),.)。注明一个或同时若干个列为单值。如unique(长途区号,电话号码)。3)外码约束。表示为:FOREIGN KEY(FOREIGN KEY(,.) ,.) REFERENCES

11、REFERENCES(,.),.)。它注明一个或同时多个列为外码,并给出对应的父表及父表中被参照的主码。如在一个选课表的定义中,使用的表级完整性外码约束的定义为:foreign key (学生号) references 学生(学生号)。 (4)检查约束。表示为:CHECK(CHECK()。注明表中一个或一些列上的取值必须满足的约束条件。如假定在职工表中采用的表级完整性检查约束的定义为:check(工龄年龄)。表级完整性约束共有4种,列级完整性约束共有6种。在表级完整性约束中缺少列级的默认值约束和空值/非空值约束,其他4个约束是共有的,包括主码约束、外码约束、单值约束和检查约束。5 5基本表定义

12、格式基本表定义格式举例举例(1 1)定义学生表)定义学生表 create table 学生 ( 学生号 char(7) primary key, 姓名 char(6) not null unique, 性别 char(2) not null check(性别=男 or 性别=女), 出生日期 datetime not null check(出生日期=1 and 年级=2 and 课程学分=0 and 成绩=100), primary key(学生号,课程号), foreign key(学生号) references 学生(学生号), foreign key(课程号) references 课程

13、(课程号) )6 6修改和删除表结构修改和删除表结构建立表结构使用的是CREATE TABLE命令。当建立一个表之后,就可以向其输入数据。SQL语言提供了修改表结构的命令,这就是教材中给出的ALTER TABLE命令。SQL语言也提供了删除表结构的命令,这就是教材中给出的DROP TABLE命令。三、表、视图和索引三、表、视图和索引操作操作1.1.向表中插入记录的语句向表中插入记录的语句向表中插入记录有两种语句格式,一种是单行插入语句格式,另一种是多行插入语句格式,它们的语句关键字都是INSERT。 单行插入语句格式如下:单行插入语句格式如下: INSERT INTO . (,.) VALUE

14、S(,.) 此单行插入语句的功能就是向一个给定的表中插入一行记录数据。例如:例如:在当前数据库中进行了如下一个职工表的定义: create table 职工 ( 职工号 char(6) primary key, 姓名 char(8) not null, 性别 char(2) not null, 年龄 int, 基本工资 float );针对这个职工表,使用下面一条插入语句: insert into 职工(职工号,姓名,性别,年龄,基本工资) values(010405,李羽,女,28,3560); 职工号 姓名 性别 年龄 基本工资 010405 李羽 女 28 3560 多行插入语句格式如下

15、:多行插入语句格式如下: INSERT INTO . (,.) 例如:例如:假定在当前数据库中已建立了一个职工1表,它的当前内容如下: 职工号 姓名 性别 年龄 职务 基本工资 职务津贴 010203 李英 女 32 副处 3750 2450 010408 刘秀 男 25 科员 3250 1550 010506 王强 男 52 处长 4400 2800 010526 赵红 女 38 科长 3600 2000 010715 朱通 男 46 科长 3700 2000 假定要执行下面的插入语句: insert 职工(职工号,姓名,性别,年龄,基本工资) select 职工号,姓名,性别,年龄,基本工

16、资 from 职工1 where 性别=男 职工号 姓名 性别 年龄 基本工资 010405 李羽 女 28 3560 010408 刘秀 男 25 3250 010506 王强 男 52 4400 010715 朱通 男 46 37002 2修改表中记录的修改表中记录的语句语句 修改表中记录的语句为UPDATE语句,具体语句格式如下: UPDATE . SET=,. FROM,. WHERE 例如:有如下一条修改记录语句:例如:有如下一条修改记录语句: update 职工 set 年龄=年龄+1 该语句把职工表中所有职工的年龄都增加1,执行后职工表中的记录如下: 职工号 姓名 性别 年龄 基

17、本工资 010405 李羽 女 29 3560 010408 刘秀 男 26 3250 010506 王强 男 53 4400 010715 朱通 男 47 3700又例:有如下的又例:有如下的update修改记录的语句: update 职工 set 职工.基本工资=职工1.基本工资+职工1.职务津贴 from 职工1 where 职工.职工号=职工1.职工号为了在语句中区分所使用的列名属于哪个表,需要在列名前加上表名和圆点分隔符,如职工.职工号,职工1.职工号,职工.基本工资,职工1.基本工资。 职工号 姓名 性别 年龄 基本工资 010405 李羽 女 29 3560 010408 刘秀

18、男 26 4800 010506 王强 男 53 7200 010715 朱通 男 47 57003 3删除记录语句删除记录语句 删除表中记录的语句为DELETE语句,具体语句格式如下: DELETE FROM . FROM,. WHERE4.4.视图的建立、修改和视图的建立、修改和删除删除(1 1)视图概念)视图概念视图视图(view)是在基本表之上建立的表,它的结构,即所有列定义取自基本表,它的内容,即所有数据行也取自基本表。基本表在数据库存储空间中有对应的存储文件,而视图则没有对应的存储文件,它只与基本表相对应。(2 2)建立视图语句)建立视图语句建立视图的语句格式如下: CREATE VIEW (,.) AS 假定在职工库中已经建立有如下结构和内容的职工表。 职工号 姓名 性别 年龄 基本工资 010405 李羽 女 29 3

温馨提示

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

评论

0/150

提交评论