数据库系统概论:第4章 关系数据库标准语言——SQL语言1_第1页
数据库系统概论:第4章 关系数据库标准语言——SQL语言1_第2页
数据库系统概论:第4章 关系数据库标准语言——SQL语言1_第3页
数据库系统概论:第4章 关系数据库标准语言——SQL语言1_第4页
数据库系统概论:第4章 关系数据库标准语言——SQL语言1_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、第4章 关系数据库标准语言-SQL语言第一节 SQL概述第二节 数据定义第四节 数据操纵 第五节 视图 第三节 数据查询 1第一节 SQL概述1、什么是SQL语言 SQL(Structured Query Language)是结构化查询语言。 SQL语言集数据定义、查询、更新和控制功能于一体。 22、SQL语言应用情况(1) Oracle、Sybase、Informix、Ingres、DB2、SQL Server、Rdb等大型数据库管理系统实现了SQL语言;(2) Dbase、Foxpro、Acess等PC机数据库管理系统部分实现了SQL语言;(3)可以在HTML(Hypertext Mark

2、up Language, 超文本标记语言)中嵌入SQL语句,通过WWW访问数据库;(4)在VC、VB、Delphi、PB也可嵌入SQL语句。3 SQL语言已经成为关系数据库的标准语言,是关系数据库的基础,oracle,SQL Server和DB2都使用SQL。 目前,很多数据库产品都对SQL语句进行再开发与扩展,如oracle提供的PL/SQL(Procedure Language and SQL)就是对SQL的一种扩展。43、SQL语言的特点(1)SQL是一种一体化的语言 集数据定义、查询、更新和控制功能于一体,能够完成数据库生命周期中的全部活动,以及合并、求差、相交、乘积、投影、选择、连接

3、等所有关系运算。(2)语言简捷、易学易用 完成核心功能只用9个动词,SQL接近英语口语或自然语言,简单易学。这9个动词为:CREATE、DROP、ALTER,INSERT、UPDATE、DELETE、SELECT、GRANT、REVOKE。5(3)面向集合的操作方式 SQL语言不仅操作对象、运算结果是集合,而且一次插入、删除、更新的对象也是集合。(4)高度非过程化语言 只需指出“做什么”,不必指明“怎么做”。(5)同一语法结构提供两种使用方式 可作为交互式语言独立使用、也可作为子语言嵌入宿主语言中使用,但语法结构一致。6SQL功能 命令动词 数据定义CREATE、DROP、ALTER 数据操纵

4、INSERT、UPDATE、DELETE数据查询SELECT数据控制 GRANT、REVOKE、 COMMIT、ROLLBACK 4、SQL语言的分类7第二节 数据定义 SQL的数据定义部分包括对数据库、SQL模式、基本表、视图和索引、存储过程、触发器、数据库链路等对象的创建、修改、删除操作。 本节只介绍基本表的创建、删除、修改等操作,以及约束条件的问题。8一、基本表的定义、修改和删除1、定义基本表CREATE TABLE ( 列级完整性约束条件 , 列级完整性约束条件 ,表级完整性约束条件); 如果完整性约束条件涉及到该表的多个属性列时,必须在表级定义该约束条件,否则既可以定义在列级,也可以

5、定义在表级。(1)创建基本表的语法9 创建基本表的三个组成部分CREATE TABLE ( 列级完整性约束条件 , 列级完整性约束条件 ,表级完整性约束条件);必须要写的关键字表名列名数据类型 完整性约束条件10建表时的注意事项: 表命或列名不得超过30个字符。 表名或列名命名规则:第一个字符必须是字母, 后 面可以跟字母、数字、三个特殊符号(_、$、#) , 表名或列名中不可以包含空格。 一个用户中表名要唯一,一个表中列名要唯一。 表名和列名不区分大小写,但显示出来都是大写。 保留字不能用作表名或列名。11(2) 数据类型:数值型INTEGER定义数据类型为整数类型,可简写成INT。SMAL

6、LINT定义数据类型为短整数类型。NUMERIC(p,s)定义数据类型为数值型,并给定精度p(总的有效位,不包含符号位及小数点)或标度s(十进制小数点右边的位数)。FLOAT(p)定义数据类型为浮点数值型,p为指定的精度。REAL定义数据类型为浮点数值型,它的精度由执行机构确定。DOUBLE PRECISION定义数据类型为双精度浮点类型,它的精度由执行机构确定。12字符类型CHAR(n)定义指定长度的字符串,n为字符数的固定长度。VARCHAR(n)定义可变长度的字符串,其最大长度为n,n不可省略。位串型BIT(n)定义数据类型为二进制位串,其长度为n。BIT VARYING(n)定义可变长

7、度的二进制位串,其最大长度为n,n不可省略。时间型DATE用于定义日期,包含年、月、日,格式为YYYY-MM-DD。TIME用于定义时间,包含时、分、秒,其格式为HH:MM:SS。布尔型BOOLEAN定义布尔类型,其值可以是:TRUE(真)、FALSE(假)。13例1:建立职工关系模式 emp(eno,ename,dno,sex,birthday) CREATE TABLE emp (eno number(10), ename varchar2(10), dno varchar(6), sex varchar(2), birthday date);14 例2:建立部门关系模式 dept(dno

8、,dname,loc ) CREATE TABLE dept (dno varchar2(6), dname varchar(8), loc varchar(10);15主键约束(PRIMARY KEY):体现了实体完整性。要求某一列的值既不能为空,也不能重复。外键约束(FOREIGN KEY):体现参照完整性。外键的取值或者为空或者参考父表的主键。 属性约束:体现了用户定义的完整性。属性约束主要限制某一属性的取值范围。分为以下几类:非空约束(NOT NULL):要求某一属性的值不允许为空值。唯一约束(UNIQUE):要求某一属性的值不允许重复。检查约束(CHECK):CHECK约束可以对某一

9、个属性列的值加以限制。 (3)约束条件16CREATE TABLE dept (dno varchar2(10) primary key, dname varchar2(10) , loc varchar2(3) );17列级约束: CREATE TABLE emp (eno number(6) primary key, ename varchar2(10) unique, sex varchar2(3) not null, dno varchar2(10) references dept(dno), sal number(6) check(sal1000 and sal16), /*检查约束

10、*/Dept VARCHAR(15) );20例2:建立一个课程表Course,所有约束条件均为列级完整性约束。 CREATE TABLE Course (Cno CHAR(8) PRIMARY KEY, /*主键约束*/ Cname VARCHAR(10) NOT NULL, /*非空约束*/ Tname VARCHAR(10), Cpno CHAR(8) REFERENCES Course(Cno), /*外键约束*/ Credit NUMBER);21例3:建立一个学生选课表SC,所有约束条件均为表级完整性约束。 CREATE TABLE SC ( Sno CHAR(8), Cno CH

11、AR(8), Grade NUMBER, PRIMARY KEY(Sno,Cno), /*主键约束*/ FOREIGN KEY(Sno) REFERENCES Student(Sno), /*外键约束*/ FOREIGN KEY (Cno) REFERENCES Course(Cno) /*外键约束*/ ); 222.修改基本表结构 修改基本表的结构包括增加、删除和修改表的属性列,默认值和约束条件。语法:ALTER TABLE ADD 列级完整性约束 DROP COLUMN MODIFY ADD CONSTRAINT DROP CONSTRAINT ;231)对表增加列:例:向Student表

12、中增加一个身高“Height”属性列,数据类型为INT。 ALTER TABLE Student ADD Height INT;新增加的属性列总是表的最后一列。不论表中是否已经有数据,新增加的列值为空。所以新增加的属性列不能有NOT NULL约束,否则就会产生矛盾。24 2)修改属性列的数据类型例:将Student表中的“Height”属性列的数据类型改为real。 ALTER TABLE Student MODIFY Height real;修改原有的列定义有可能会破坏已有数据,所以在修改时需要注意:可以增加列值的宽度及小数点的长度,只有当某列所有行的值为空或整张表是空时,才能减少其列值宽度

13、,或改变其列值的数据类型。25 3)增加完整性约束例:给Student表中“Height”属性列增加一个CHECK约束,要求学生的身高要超过140厘米才行。ALTER TABLE Student ADD CONSTRAINT Chk1 CHECK(Height140); Chk1是Height属性列上新增加的CHECK约束的名字。264)删除完整性约束例:删除“Height”属性列上的CHECK约束。ALTER TABLE Student DROP CONSTRAINT Chk1;275)删除属性列例:删除Student表中新增加的“Height”属性列。 ALTER TABLE Studen

14、t DROP COLUMN Height;28查看表中约束名称:Select constraint_name,constraint_type Form user_constraintsWhere table_name=STUDENT;P-主键,R-外键,U-unique约束C-check约束,not null约束也归为check约束。296)重命名基本表语法:RENAME old_name TO new_name; 例:RENAME emp TO employees; RENAME student TO s;表中某一个属性列的重新命名: Alter table student rename c

15、olumn sname to name; 303.基本表的删除语法: DROP TABLE CASCADE CONSTRAINTS; 例:DROP TABLE emp; DROP TABLE dept;表一旦被删除,则无法恢复。如果表中有数据,则表结构连同数据,约束一起删除。 只有表的创建者或者拥有DROP TABLE权限的用户才能删除表。 如果两张表有主外键约束的话,先删从表,再删主表。31建立索引是为了加快查询速度;对较大的表才建立索引,小表没必用建立索引;有两种重要的索引:聚簇索引(clustered index)和非聚簇索引(non-clustered index)。二、索引的定义和删

16、除321创建索引在SQL语言中,建立索引使用CREATE INDEX语句,其一般格式为:CREATE UNIQUE CLUSTER INDEX ON ( , );说明:UNIQUE:规定此索引为唯一性索引。每一个索引值只对应于表中唯一的记录。CLUSTER:规定此索引为聚簇索引。省略CLUSTER则表示创建的索引为非聚簇索引。:建立索引时指定列名的索引表是ASC(升序)或DESC(降序)。若不指定,默认为升序。33例:为Student,Course,SC三张表建立索引。其中Student表按学号Sno升序建唯一索引, Course表按课程号Cno降序建唯一索引,SC表按学号Sno升序和课程号Cno降序建唯一索引。 CREATE UNIQUE INDEX Index_stu ON Student(Sno

温馨提示

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

评论

0/150

提交评论