数据库第3章sql_第1页
数据库第3章sql_第2页
数据库第3章sql_第3页
数据库第3章sql_第4页
数据库第3章sql_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 关系数据库语言SQL本章概要本章概要 SQLSQL是结构化查询语言(是结构化查询语言(Structured Query Structured Query LanguageLanguage)的缩写,其功能包括数据查询、数)的缩写,其功能包括数据查询、数据操纵、数据定义和数据控制四个部分。据操纵、数据定义和数据控制四个部分。 SQL SQL 语言简洁、方便实用、功能齐全,已成为语言简洁、方便实用、功能齐全,已成为目前应用最广的关系数据库语言。目前应用最广的关系数据库语言。 本章要求本章要求 了解 SQL语言的特点, 掌握SQL语言的四大功能及使用方法, 重点掌握其数据查询功能及其使用。 S

2、QLSQL语言的发展及标准化语言的发展及标准化SQLSQL语言发展史语言发展史 SQLSQL语言是当前最为成功、应用最为广泛的关系语言是当前最为成功、应用最为广泛的关系数据库语言,其发展主要经历了以下几个阶段:数据库语言,其发展主要经历了以下几个阶段:1. 1974年由CHAMBERLIN和BOYEE提出,当时称为SEQUEL(STUCTURED ENGLISH QUERY LANGUAGE);2. IBM公司对其进行了修改,并用于其SYSTEM R关系数据库系统中;3. 1981年 IBM推出其商用关系关系数据库SQL/DS,并将其名字改为SQL,由于SQL语言功能强大,简洁易用,因此得到了

3、广泛的使用; 4. 今天广泛应用于各种大型数据库,如SYBASE、INFORMIX、 ORACLE、DB2、INGRES等,也用于各种小型数据库,如FOXPRO、ACCESS。 SQLSQL语言标准化语言标准化 随着关系数据库系统和随着关系数据库系统和SQLSQL语言应用的日益广泛,语言应用的日益广泛,SQLSQL语言的标准化工作也在紧张革进行着,十多年来语言的标准化工作也在紧张革进行着,十多年来已制订了多个已制订了多个SQLSQL标准;标准;1. 1982年,美国国家标准化局(AMERICAN NATIONAL STANDARD INSTITUTE,简称ANSI)开始制定SQL标准;2. 1

4、986年,美国国家标准化协会公布了SQL语言的第一个标准SQL86;3. 1987年,国际标准化组织(ISO)通过了SQL86标准;4. 1989年,国际标准化组织(ISO)对SQL86进行了补充,推出了SQL89标准;5. 1992年,ISO又推出了SQL92标准,也称为SQL2;6. 目前SQL99(也称为SQL3)在起草中,增加了面向对象的功能。1. SQL的主要特点:的主要特点:一体化一体化 集集DDL、DML、DCL功能为一体:定义、操作、功能为一体:定义、操作、控制。控制。交互式和嵌入式两种使用方式交互式和嵌入式两种使用方式 交互式交互式 :( SQL Server 的查询分析器中

5、的用法)的查询分析器中的用法) 嵌入式嵌入式 :( 插入到指定的语言中,如插入到指定的语言中,如C、COBOL等等 )3.1 SQL非过程化非过程化 用用SQLSQL语言进行数据操作,只要提出做语言进行数据操作,只要提出做“什么什么 ” ”而不必表示怎么做。而不必表示怎么做。 (WHAT WHAT HOW HOW )面向集合的操作方式面向集合的操作方式 操作对象和结果都是关系。关系是元组操作对象和结果都是关系。关系是元组的集合。的集合。 语言简洁,易学易用语言简洁,易学易用 完成核心功能只有完成核心功能只有9个动词个动词:数据查询:数据查询: SELECT数据定义:数据定义: CREATE,D

6、ROP,ALTER数据操纵:数据操纵: INSERT,DELETE,UPDATE数据控制:数据控制: GRANT,REVOKE基本概念基本概念 基本表基本表 视图视图 存储文件存储文件 索引索引 模式模式数据库对象之数据库对象之表表 是独立存在的表,不是由其它的表导出的表。是独立存在的表,不是由其它的表导出的表。一个关系对应一个基本表,一个或多个基本表一个关系对应一个基本表,一个或多个基本表对应一个存储文件。对应一个存储文件。 表是数据库中保存数据的对象,表是保存在数表是数据库中保存数据的对象,表是保存在数据库中的,因此在创建表之前,一定要先创建据库中的,因此在创建表之前,一定要先创建数据库。

7、数据库。 创建数据库和创建表都可以通过创建数据库和创建表都可以通过SQL Server Management Studio管理工具或管理工具或SQL代码来实代码来实现。现。数据库对象之数据库对象之视图视图 视图可以被看成是虚拟表或存储查询。数据库中视图可以被看成是虚拟表或存储查询。数据库中实际存储的是实际存储的是SQL语句,即只存放视图的定义,语句,即只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在导而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。当基本表中的数据发生变化出视图的基本表中。当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变。时,从视图中查询出来的

8、数据也随之改变。 SELECT语句的结果集将构成视图所返回的虚拟语句的结果集将构成视图所返回的虚拟表。用户可以采用引用表时所使用的方法,在表。用户可以采用引用表时所使用的方法,在Transact-SQL语句中引用的视图名称来使用此虚语句中引用的视图名称来使用此虚拟表。拟表。数据库对象之数据库对象之视图视图 对于视图所引用的基础表来说,视图的对于视图所引用的基础表来说,视图的作用类似于筛选器。定义视图的筛选数据作用类似于筛选器。定义视图的筛选数据可以来自当前或其它数据库的一个或多个可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于表,或者其它视图。分布式查询也可用于定义多个

9、异类源数据的视图。定义多个异类源数据的视图。通过视图进行查询没有任何限制,通过通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。它们进行数据修改时的限制也很少。 例如:例如:学生数据库中有学生基本情况表学生数据库中有学生基本情况表STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT)STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT),此表为基此表为基本表,对应一个存储文件。本表,对应一个存储文件。 可以在其基础上定义一个男生基本情况视图STUDENT_MALE(SNO,SNAME,SAGE,SDEPT), 它是从STUDENT中选择SSEX=男的

10、各个行,然后在SNO,SNAME,SAGE,SDEPT上投影得到的。 在数据库中只存有STUDENT_MALE的定义,而STUDENT_MALE的记录不重复存储。 在用户看来,视图是通过不同路径去看一个实际表,就象一个窗口一样,我们通过窗户去看外面的高楼,可以看到高楼的不同部分,而透过视图可以看到数据库中自己感兴趣的内容。数据库对象之数据库对象之存储文件 数据库的所有信息都保存在存储文件中。数据库的所有信息都保存在存储文件中。数据库是逻辑的,存储文件是物理的。数据库是逻辑的,存储文件是物理的。用户对数据库的操作,最终都映射为对用户对数据库的操作,最终都映射为对存储文件的操作。一个基本表可以用一

11、存储文件的操作。一个基本表可以用一个或多个文件存储,一个文件也可以存个或多个文件存储,一个文件也可以存储一个或多个基本表。储一个或多个基本表。数据库对象之数据库对象之索引 表中的记录通常按输入顺序存放,这种表中的记录通常按输入顺序存放,这种顺序称为记录的物理顺序。顺序称为记录的物理顺序。 为了实现对表记录的快速查询,可以对为了实现对表记录的快速查询,可以对表文件中的记录按某个和某些属性进行表文件中的记录按某个和某些属性进行排序,这种顺序称为逻辑顺序。排序,这种顺序称为逻辑顺序。 索引即根据索引表达式的值进行逻辑排索引即根据索引表达式的值进行逻辑排序的一组指针,它可以实现对数据的快序的一组指针,

12、它可以实现对数据的快速访问。索引的实现技术一般对用户是速访问。索引的实现技术一般对用户是不可见的。不可见的。数据库的三级模式结构数据库的三级模式结构 视图视图 + +(部分)基本表(部分)基本表 外模式外模式 基本表(的集合)基本表(的集合) 概念模式概念模式 存储文件和索引存储文件和索引 内模式内模式SQL视图1视图2基本表1基本表2基本表3基本表4存储文件1存储文件2外模式模式内模式图5.1 SQL语言支持的关系数据库的三级逻辑结构 SQLSQL语言支持数据库的三级模式结构,如图语言支持数据库的三级模式结构,如图3.13.1所示。其中所示。其中外模式外模式对应于视图和部分基本表,对应于视图

13、和部分基本表,模式模式对应于基本表,对应于基本表,内模式内模式对应于存储文件。对应于存储文件。 SQL Server 2005数据库及数据库对象数据库及数据库对象 SQL Server 2005中数据库是由表的集合组成中数据库是由表的集合组成的,这些表用于存储一组特定的结构化数据。的,这些表用于存储一组特定的结构化数据。表中包含行(也称为记录或元组)和列(也称表中包含行(也称为记录或元组)和列(也称为属性)的集合。表中的每一列都用于存储某为属性)的集合。表中的每一列都用于存储某种类型的信息。例如:日期、名称、金额和数种类型的信息。例如:日期、名称、金额和数字等。字等。 表中有几种类型的控制(例

14、如:约束、触发器、表中有几种类型的控制(例如:约束、触发器、默认值和自定义用户数据类型),用于保证数默认值和自定义用户数据类型),用于保证数据的有效性。据的有效性。SQL Server 2005数据库及数据库对象数据库及数据库对象 一个一个SQL Server实例可以支持多个数据实例可以支持多个数据库。每个数据库可以存储来自其它数据库。每个数据库可以存储来自其它数据库的相关数据或不相关数据。例如,库的相关数据或不相关数据。例如,SQL Server实例可以有一个数据库用于实例可以有一个数据库用于存储职员数据,另一个数据库用于存储存储职员数据,另一个数据库用于存储与产品相关的数据。或者,一个数据

15、库与产品相关的数据。或者,一个数据库可以存储当前客户订单数据,而另一个可以存储当前客户订单数据,而另一个相关数据库可以存储用于年度报告的历相关数据库可以存储用于年度报告的历史客户订单。史客户订单。系统数据库功能表系统数据库功能表系统数据库系统数据库功能功能master数据库数据库记录记录SQL Server实例的所有系统级信息。实例的所有系统级信息。msdb数据库数据库用于用于SQL Server代理计划警报和作业。代理计划警报和作业。model数据库数据库用作在用作在SQL Server实例上创建的所有数据库实例上创建的所有数据库的模板。对的模板。对model数据库进行的修改(如数据数据库进

16、行的修改(如数据库大小、排序规则、恢复模式和其它数据库库大小、排序规则、恢复模式和其它数据库选项)将应用于以后创建的所有数据库。选项)将应用于以后创建的所有数据库。resource数据库数据库一个只读数据库,包含一个只读数据库,包含SQL Server 2005包括包括的系统对象。系统对象在物理上保留在的系统对象。系统对象在物理上保留在resource数据库中,但在逻辑上显示在每个数数据库中,但在逻辑上显示在每个数据库的据库的sys 架构中。架构中。tempdb数据库数据库一个工作空间,用于保存临时对象或中间结一个工作空间,用于保存临时对象或中间结果集。果集。数据库对象是数据库功能的直接体现者

17、,它主要包括数据库对象是数据库功能的直接体现者,它主要包括关系图关系图表表视图视图同义词同义词存储过程存储过程函数函数触发器触发器类型类型规则规则默认值默认值SQLSQL语言具有语言具有: :数据查询(数据查询(QUERYQUERY)数据定义(数据定义(DEFINITIONDEFINITION)数据操纵(数据操纵(MANIPULATIONMANIPULATION)数据控制(数据控制(CONTROLCONTROL)四种语言一体化的功能。四种语言一体化的功能。下面以下面以SQL SERVER SQL SERVER 为例分别介绍其为例分别介绍其各个功能。各个功能。1、一个数据库的创建、一个数据库的创

18、建创建一个数据库:创建一个数据库:语法语法:Create database 数据库名数据库名 数据库选项定义 例例: Create database temp1; Create database t2; 在在SQL Server 中,建立一个数据库时在空间上就建中,建立一个数据库时在空间上就建立了一个新的数据文件和一个对应的日志文件。立了一个新的数据文件和一个对应的日志文件。在同一个系统上,在同一个系统上,数据库不能同名。数据库不能同名。 数据库选项定义:主要用于指出与数据库创建有关的一些属性,如数据文件存储的路径、数据文件允许的最大容量、定义字符集等,当不指定数据库选项时,采用默认选项。 由

19、于不同的DBMS组织管理数据采用的结构不同,因此,其数据库选项定义的内容也有一定差异,对于具体的DBMS,使用时应参考其对应SQL语法手册。 【例【例3.1】 创建数据库创建数据库XSCJ。CREATEDATABASE XSCJON(NAME=xs1_dat,FILENAME = c:program filesmicrosoft sql servermssqldataxs1dat1.mdf )GONAME:逻辑文件名FILENAME :是创建文件时由操作系统使用的路径和文件名。 【例【例3.2】 创建一个名为DB2的数据库,它有3个数据文件,其中主数据文件为10MB,最大容量为100MB,按1

20、0MB增长;2个辅数据文件为10MB,最大容量不限,按10%增长;有2个日志文件,大小均为5MB,最大容量均为50MB,按5MB增长。创建指定数据和事务日志文件的创建指定数据和事务日志文件的数据库数据库 CREATE DATABASE Sales ON ( NAME = Sales_dat, FILENAME = c:program filesmicrosoft sql servermssqldataxs1dat1.mdf , SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = Sales_log, FILENAME = c:pr

21、ogram filesmicrosoft sql servermssqldataxs1dat1.ldf ,SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) ); 通过指定多个数据文件创建数据通过指定多个数据文件创建数据库库 CREATE DATABASE Archive ON PRIMARY (NAME = Arch1, FILENAME = c:program filesmicrosoft sql servermssqldataxs1dat1.mdf , SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20),

22、( NAME = Arch2, FILENAME = c:program filesmicrosoft sql servermssqldataxs1dat2.mdf , SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20)2 使用数据库使用数据库 语法:USE 数据库名 该语句用于选择当前数据库,以便进行下一步操作。 【例【例3.3】 使用数据库XSCJ。 USE XSCJ 一旦选择了当前数据库,若不对操作的数据库对象加以限定,则其后的命令均是针对当前数据库中的对象进行的。3 更新数据库 语法格式: ALTER DATABASE | 该语句用于增加、删除或

23、修改与一个数据库文件有关的一些属性,如变更数据库物理文件的存储路径、增加、删除数据库物理文件等。【例【例3.4】 设已创建了数据库DB,它只有一个主数据文件,其逻辑文件名为db_data,物理文件名为C:Program filesMicrosoft SQL ServerMSSQLdatadb_data.mdf,大小为10MB,最大容量为100MB,增长方式为按10%增长;有一个日志文件,逻辑名为db_log,物理名为C: Program filesMicrosoft SQL ServerMSSQLdatadb_log.ldf,大小为2MB,最大容量为10MB,每次增长2MB。对数据库DB按如下

24、要求进行修改:修改数据库DB现有数据文件的属性,将主数据文件的最大容量改为不限,增长方式改为按每次5MB增长。分析:因为需修改主数据文件的两个属性,而使用ALTER DATABASE语句一次只能修改数据文件的一个属性,所以需要执行两次ALTER DATABASE命令。ALTER DATABASE DBMODIFY FILE (NAME = db_data,MAXSIZE = UNLIMITED)GO /*第一次修改,将主数据文件的最大容量改为不限制。*/ALTER DATABASE DBMODIFY FILE (NAME = db_data,FILEGROWTH = 5MB)GO /*第二次修

25、改,将主数据文件的增长方式改为按5MB增长。*/4删除数据库语法格式:DROP DATABASE 该语句会删除整个数据库,使用时一定要小心。【例【例3.53.5】 删除XSCJ数据库。DROP DATABASE XSCJ3.2.2 模式的定义与撤销“模式”指在数据库中定义的由用户、角色拥有的命名空间(架构 ),在这个空间中可以进一步定义其包含的数据库对象,如基本表、视图、索引等。如果把数据库看成是一个“房子”,模式则是房子的一个一个“房间”,每个房间有相应的“主人”,每个“房间”存放的“物品”就是数据库对象。是否支持“模式”这一概念与具体的DBMS有关。需要注意的是:此处“模式”的概念完全不同

26、于数据库三级模式中的“模式”概念。1创建模式语法格式:CREATE SCHEMA AUTHORIZATION 执行该语句的用户必须拥有DBA权限,或者获得了由DBA授予的CREATE SCHEMA权限。如果语句中默认模式名,则模式名同用户名。【例【例3.63.6】 定义一个学生课程模式XS_KC。CREATE SCHEMA XS_KC AUTHORIZATION 马玉 以下示例将创建由以下示例将创建由 Annik 拥有的拥有的Sprockets 架架构。此语句向构。此语句向 Mandar 授予授予 SELECT 权限,权限,而对而对 Prasanna 拒绝授予拒绝授予 SELECT 权限。请注

27、权限。请注意,意,Sprockets 和和 NineProngs 在一个语句中创在一个语句中创建。建。 USE AdventureWorks; CREATE SCHEMA Sprockets AUTHORIZATION Annik GRANT SELECT TO Mandar DENY SELECT TO Prasanna; GO 2撤销模式当一个SQL模式及其所属的基本表、视图等都不需要时,可撤销模式。语法格式:DROP SCHEMA 该语句中CASCADE(级联),表示执行DROP语句时,同时把该模式下的所有数据库对象(基本表、视图、索引等)一并删除;RESTRICT(约束),表示执行DR

28、OP语句时,只有当SQL模式中没有任何下属元素时,才能执行,否则拒绝该语句的执行。【例【例3.73.7】 撤销学生课程模式XS_KC。DROP SCHEMA XS_KC CASCADE SQL的数据描述与操作的数据描述与操作 操作对象操作对象 操操 作作 方方 式式 创建创建 删除删除 修改修改 表表 CREATE TABLE DROP TABLE ALTER TABLE 视图视图 CREATE VIEW DROP VIEW 索引索引 CREATE INDEX DROP INDEXSQL的数据定义包括对基本表、视图、索引的的数据定义包括对基本表、视图、索引的创建、删除和修改。创建、删除和修改。

29、1、定义和修改基本表、定义和修改基本表(定义概念模式,全局逻辑结构):(定义概念模式,全局逻辑结构): CREATE TABLE DROP TABLE ALTER TABLE 2、定义视图、定义视图(定义外模式,局部逻辑结构):(定义外模式,局部逻辑结构): CREATE VIEW SQL系统的外模式还可以包括基本表系统的外模式还可以包括基本表 DROP VIEW 3、定义索引、定义索引(定义内模式,存储结构):(定义内模式,存储结构): CREATE INDEX DROP INDEX数据定义语句数据定义语句3.2.3 表的创建、修改与删除 表是数据库最基本的对象,在数据库中,通过表有效地对数

30、据进行管理。一个表由表结构和表数据两部分构成,在创建数据库、模式之后,下一步就是创建表。1. 基本表的定义基本表的定义 基本格式:基本格式: CREATE TABLE 表名(列名表名(列名1 数据类型数据类型 列级完整性约束列级完整性约束 ,列名,列名2 数据类型数据类型 列级完整性约束列级完整性约束 ,表级表级完整性约束完整性约束) IN 数据库空间名数据库空间名; 一个表必须有一个表名,在数据库里表名不能重复。一个表必须有一个表名,在数据库里表名不能重复。 一个表应该有若干个属性,每个属性有名字和数据类型。一个表应该有若干个属性,每个属性有名字和数据类型。 在一个表里,属性名(列名)不能重

31、复。在一个表里,属性名(列名)不能重复。 列级完整性约束和表级完整性约束可以定义,也可以不定义列级完整性约束和表级完整性约束可以定义,也可以不定义 CREATE TABLE Supplier ( SNO CHAR (6) , SName CHAR (20) , Status INT , City CHAR(20); 例例 : 创建供应商表创建供应商表 :供应商号码,供应商名称,信誉:供应商号码,供应商名称,信誉值,所在城市值,所在城市 Supplier ( SNO, SName, Status, City)一个表的创建起码要分两步一个表的创建起码要分两步:1.1. 确定表的属性和名字,属性名最

32、好用英语表示确定表的属性和名字,属性名最好用英语表示 。2.2. 确定每个属性的数据类型,类型的确定数据语义确定每个属性的数据类型,类型的确定数据语义有关。有关。数据类型:数据类型: 含义:数据的表达方式、取值范围和可含义:数据的表达方式、取值范围和可以施加的操作。以施加的操作。 如:苹果的个数如:苹果的个数- - 整数;整数; 人的体重人的体重 - - 实数;实数; 人的名字字符串人的名字字符串 字段的长度:字段的长度:指字段所能容纳的最大数据指字段所能容纳的最大数据量,但对不同的数据类型来说,长度对字量,但对不同的数据类型来说,长度对字段的意义可能有些不同。段的意义可能有些不同。对字符串与

33、UNICODE数据类型而言,长度代表字段所能容纳的字符的数目,因此它会限制用户所能输入的文本长度。对数值类的数据类型而言,长度则代表字段使用多少个字节来存放数字。对BINARY、VARBINARY、IMAGE数据类型而言,长度代表字段所能容纳的字节数。精度和小数位数精度和小数位数精度是指数中数字的位数,包括小数点左侧的整数部分和小数点右侧的小数部分;小数位数则是指数字小数点右侧的位数。例如:数字12345.678,其精度为8,小数位数为3;所以只有数值类的数据类型才有必要指定精度和小数位数。 经常以如下所示的格式来表示数据经常以如下所示的格式来表示数据类型以及它所采用的长度、精度和类型以及它所

34、采用的长度、精度和小数位数,其中的小数位数,其中的N代表长度,代表长度,P代代表精度,表精度,S表示小数位数。表示小数位数。BINARY(N) - BINARY(10)CHAR(N) - CHAR(20)N U M E R I C ( P, S ) - - - - - - - NUMERIC(8,3) 但有的数据类型的精度与小数位数但有的数据类型的精度与小数位数是固定的,对采用此类数据类型的是固定的,对采用此类数据类型的字段而言,不需设置精度与小数位字段而言,不需设置精度与小数位数,数,如:如果某字段采用INT数据类型,其长度固定是4,精度固定是10,小数位数则固定是0,这表示字段将能存放10

35、位数没有小数点的整数。存储大小则是4个字节。标准标准SQL语言支持的数据类型:语言支持的数据类型:常用的数据类型:常用的数据类型: 整型整型 例子:例子:10,200,302 浮点型浮点型 例子:例子: 10.12 , 23.098 字符串型字符串型 例子:例子:“This is an example”, “ a sample string” 日期型日期型 例子:例子: 2002/09/09 , 2001-02-01, yyyy-mm-dd 时间型时间型 例子:例子: hh:mm:ss,12:02:09, 23:23:23 定义表的属性时要指明属性的数据类型,注意定义表的属性时要指明属性的数据

36、类型,注意不同的不同的DBMS支持的数据类型不完全相同。支持的数据类型不完全相同。表3.1 数值型数数 据据 类类 型型注注 释释INTEGER长整型,可缩写为长整型,可缩写为INT,范围,范围231231 1SMALLINT短整型,范围短整型,范围215215DECIMAL(m,n)实型数,有实型数,有m位数,其中小数点后位数,其中小数点后n位位数字数字NUMERIC(m,n)实型数,有实型数,有m位数字,其中小数点后位数字,其中小数点后n位数字位数字FLOAT(n)浮点数,精度为浮点数,精度为n位数字位数字SQL中常用的数据类型中常用的数据类型 ( 类型不区分大小写)类型不区分大小写)表3

37、.2 字符型数数 据据 类类 型型注注 释释CHAR(n)长度为长度为n的定长字符串,最大的定长字符串,最大254个个字符字符VARCHAR(n)长度为长度为n的变长字符串,最大的变长字符串,最大32767个字符个字符LONG VARCHAR(n)长度为长度为n的变长字符串,最大的变长字符串,最大32700个字符个字符SQL中常用的数据类型中常用的数据类型 ( 类型不区分大小写)类型不区分大小写)表3.3 时间型数数 据据 类类 型型注注 释释DATE日期,形式为日期,形式为YYYYMMDDTIME时间,形式为时间,形式为HH:MM:SSTIMESTAMP时间戳类型时间戳类型SQL中常用的数据

38、类型中常用的数据类型 ( 类型不区分大小写)类型不区分大小写)SQL Server 数据类型数据类型 char, varchar, text, nvarchar, ntext decimal, numeric, bit, binary, varbinary, image, int,smallint, tinyint ,float , real ,money, smallmoney ,datetime, smalldatetime (4)NULL值与值与DEFAULT值值 DEFAULT值值表示某一字段的默表示某一字段的默认值,当没有输入数据时,则使认值,当没有输入数据时,则使用此默认的值。用此

39、默认的值。空值空值(NULL) 空值时不存在的值,即未知的或者不可用空值时不存在的值,即未知的或者不可用的。的。 空值可以参加真值运算 AND OR NOT 在算术表达式中,如果任一运算分量为空值,则表达式的值为空值 在逻辑表达式中,如果有一个值为空值,则整个逻辑表达式的值为空值Create Table创建一张表合同表创建一张表合同表Contract,该表中含有,该表中含有五个字段,分别是五个字段,分别是 合同号ContractID字符型数据 单位代码 CompanyID 字符型数据 合同名称 ContractName 字符型数据 合同总金额 ContractVolume 数值型数据 签定日期

40、 SignDate 日期型数据ContractIDCompanyIDContractNameContractVolumeSignDateContractCREATE TABLE Contract (ContractID varchar (10) NOT NULL ,CompanyID varchar (10) NOT NULL ,ContractName varchar (30) NULL ,ContractVolume numeric(18, 2) NULL,SignDate Datetime NULL)2 2 修改基本表修改基本表 由于应用环境和应用需求的变化,经由于应用环境和应用需求的变

41、化,经常需要修改基本表的结构,比如,增常需要修改基本表的结构,比如,增加新列、修改原有的列定义等。加新列、修改原有的列定义等。 SQLSQL语言使用语言使用ALTER TABLEALTER TABLE命令来完成命令来完成这一功能,有如下两种修改方式:这一功能,有如下两种修改方式:1) ADD1) ADD方式方式2) ALTER 2) ALTER 方式方式3) DROP 3) DROP 方式方式1) ADD方式方式 用于增加新列,定义方式同用于增加新列,定义方式同CREATE TABLE语句中的定义方式相同,其语法格语句中的定义方式相同,其语法格式为:式为:ALTER TABLE ADD 例例

42、在在S表中增加一个班号列和住址列。表中增加一个班号列和住址列。ALTER TABLE S ADDCLASS_NO CHAR(6),ADDRESS CHAR(40) 注意:使用此方式增加的新列注意:使用此方式增加的新列自动自动填充填充NULL值值,所以不能为增加的新,所以不能为增加的新列指定列指定NOT NULL约束约束 。2) ALTER 方式方式 用于修改某些列,其语法格式为:用于修改某些列,其语法格式为:ALTER TABLEALTER COLUMN NULL|NOT NULL 例例 把把S表中的表中的SNO列加宽到列加宽到8位字符宽度位字符宽度ALTER TABLE S ALTER CO

43、LUMNSNO CHAR(8)3) DROP方式方式注意:使用此方式有如下一些限制:注意:使用此方式有如下一些限制:不能改变列名;不能改变列名;不能将含有空值的列的定义修改为不能将含有空值的列的定义修改为NOT NOT NULLNULL约束;约束;若列中已有数据,则不能减少该列的宽度,若列中已有数据,则不能减少该列的宽度,也不能改变其数据类型;也不能改变其数据类型;只能修改只能修改NULL|NOT NULLNULL|NOT NULL约束,其它类型约束,其它类型的约束在修改之前必须先删除,然后再重的约束在修改之前必须先删除,然后再重新添加修改过的约束定义。新添加修改过的约束定义。 【例【例3.9

44、】 设已在数据库XSCJ中创建了学生表XS,现在对XS表按如下要求进行修改: 在表XS中增加一个新字段“政治面貌”。USE XSCJ /*打开XSCJ数据库*/ALTER TABLE XSADD 政治面貌 varchar(12) 在表XS中删除名为“班级”的字段。USE XSCJALTER TABLE XSDROP COLUMN 班级 修改表XS中已有字段的属性:将名为“姓名”的字段长度由原来的8改为10;将名为“出生日期”的字段的数据类型由原来的smalldatetime改为datetime。USE XSCJALTER TABLE XSALTER COLUMN 姓名 char(10)ALTE

45、R COLUMN 出生日期 datetime3 删除基本表删除基本表当某个基本表无用时,可将其删除。当某个基本表无用时,可将其删除。删除后,该表中的数据和在此表上所建的删除后,该表中的数据和在此表上所建的索引都被删除,而建立在该表上的视图不索引都被删除,而建立在该表上的视图不会随之删除,系统将继续保留其定义,但会随之删除,系统将继续保留其定义,但已无法使用。已无法使用。如果重新恢复该表,这些视图可重新使用。如果重新恢复该表,这些视图可重新使用。删除表的语法格式:删除表的语法格式:DROP TABLE 例:例: 删除表删除表STUDENT DROP TABLE STUDENT 注意:只能删除自己

46、建立的表,注意:只能删除自己建立的表,不能删除其他用户所建的表。不能删除其他用户所建的表。索引的作用:索引的作用: 在日常生活中我们会经常遇到索引,例如图书目录、词典索引等。 借助索引,人们会很快地找到需要的东西。 索引是数据库随机检索的常用手段,它实际上就是记录的关键字与其相应地址的对应表。 例如,当我们要在本书中查找有关“SQL查询”的内容时,应该先通过目录找到“SQL查询”所对应的页码,然后从该页码中找出所要的信息。这种方法比直接翻阅书的内容要快。 如果把数据库表比作一本书,则表的索引就如书的目录一样,通过索引可大大提高查询速度。3.2.4 索引的创建与删除索引的创建与删除 索引的作用可

47、归纳为:索引的作用可归纳为:1. 加快查询速度;2. 保证行的唯一性。1 建立索引建立索引 建立索引的语句是建立索引的语句是CREATE INDEX,其,其语法格式为:语法格式为:CREATE UNIQUE CLUSTER INDEX ON ( 次序次序 , 次序次序) UNIQUE表明建立唯一索引。 CLUSTER表示建立聚集索引。 次序用来指定索引值的排列顺序,可为ASC(升序)或DESC(降序),缺省值为ASC。 例例 为表为表SC在在SNO和和CNO上建立唯一索引。上建立唯一索引。 CREATE UNIQUE INDEX SCI ON SC(SNO,CNO) 执行此命令后,为执行此命令

48、后,为SCSC表建立一个索引名为表建立一个索引名为SCISCI的唯一索引,的唯一索引, 此索引为此索引为SNOSNO和和CNOCNO两列的两列的复合索引复合索引,即对,即对SCSC表中的行先按表中的行先按SNOSNO的递增顺序索引,对于的递增顺序索引,对于相同的相同的SNOSNO,又按,又按CNOCNO的递增顺序索引。的递增顺序索引。 由于有由于有UNIQUEUNIQUE的限制,所以该索引在的限制,所以该索引在(SNO,CNO)(SNO,CNO)组合列的排序上具有唯一性,不组合列的排序上具有唯一性,不存在重复值。存在重复值。 例例 为教师表为教师表T在在TN上建立聚集索引。上建立聚集索引。CR

49、EATE CLUSTER INDEX TI ON T(TN)执行此命令后,为T表建立一个索引名为TI的聚集索引,T表中的记录将按照TN值的升序存放。 注意:注意:1. 1. 改变表中的数据(如增加或删除记改变表中的数据(如增加或删除记录)时,索引将自动更新。录)时,索引将自动更新。索引建立后,在查询使用该列时,系统将自动使用索引进行查询。 2. 2. 索引数目无限制,但索引越多,更索引数目无限制,但索引越多,更新数据的速度越慢。对于仅用于查询新数据的速度越慢。对于仅用于查询的表可多建索引,对于数据更新频繁的表可多建索引,对于数据更新频繁的表则应少建索引。的表则应少建索引。2 2 删除索引删除索引 建立索引是为了提高查询速度,但随建立索引是为了提高查询速度,但随着索引的增多,数据更新时,系统会着索引的增多,数据更新时,系统会花费许多时间来维护索引。这时,应花费许多时间来维护索引。这时,应删除不必要的索引。删

温馨提示

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

评论

0/150

提交评论