第4章 SQL语言基础及数据定义功能

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库系统教程
第4章 SQL语言基础及 数据定义功能
1
第4章 SQL语言基础及数据定义功能
4.1 SQL语言概述
4.2 SQL语言支持的数据类型
4.3数据定义功能
2016年12月17日11时50 分
2
4.1 SQL语言概述
4.1.1 SQL语言的发展 4.1.2 SQL语言的特点 4.1.3 SQL语言功能概述
注:n 为字符个数
Text:存储大于8000字节的文本
2016年12月17日11时50 分
10
统一字符编码字符串类型
nchar(n):定长存储,n<=4000
nvarchar(n):不定长存储,长度最大 不超过n , n<=4000 ntext:存储大于8000字节的文本
特点:每个字符占两个字节
33
修改表结构
ALTER TABLE <表名> [ ALTER COLUMN <列名> <新数据类型>] | [ ADD <列名> <数据类型> [约束]] | [ DROP COLUMN <列名> ] | [ ADD [constraint <约束名>] 约束定义] | [ DROP [constraint] <约束名>]
2016年12月17日11时50 分 23
定义基本表
CREATE TABLE <表名>( <列名> <数据类型> [列级完整性约束定义]
{, <列名> <数据类型>
[列级完整性约束定义] … } [, 表级完整性约束定义 ] )
2016年12月17日11时50 分
24
在列级完整性约束定义处可定义的约束
Datetime:8字节,年月日时分秒毫秒
(例:‘2001/08/03 10:30:00.000 ’ )
存储从1753年1月1日到9999年12月31日的 日期和时间数据
SmallDateTime:4字节,年月日时分 (例:‘2001/08/03 10:30:00’ )
存储从1900年1月1日到2079年6月6日的日期 和时间数据
ALTER VIEW
ALTER INDEX
DROP VIEW
DROP INDEX
2016年12月17日11时50 分
16
架构基本概念
架构(schema,也称为模式)是数据 库下的一个逻辑命名空间, 可以存放表、视图等数据库对象, 是一个数据库对象的容器。 如果将数据库比喻为操作系统,则架 构就相当于操作系统中的目录,架构 中的对象就相当于目录下的文件。
NOT NULL和DEFAULT只能是列级完整性约束;
其他约束均可在表级完整性约束处定义。
注意以下几点:
如果CHECK约束是定义多列之间的取值约束,则 只能在表级完整性约束处定义;
如果在表级完整性约束处定义主键和唯一值约束 ,则应将主键列和唯一值约束列用圆括号括起来 ,如:PRIMARY KEY(列1{[,列2 ] …}) 本章只介绍非空约束、主键约束和外键约束。
2016年12月17日11时50 分 26
非空约束 <列名> <类型> NOT NULL
例:sname char(10) NOT NULL
2016年12月17日11时50 分
27
主键约束
PRIMARY KEY [(<列名> [, … n] )]
如果在列级完整性约束处定义单列主键, 则可省略括号。
例1: SNO char(7) PRIMARY KEY
例2: PRIMARY KEY(SNO)
PRIMARY KEY(SNO,CNO)
2016年12月17日11时50 分
28
外键约束
[ FOREIGN KEY (<外键列名>)]
REFERENCES <表名>(<主键列名>)
如果是在列级完整性约束处,则可省略 “FOREIGN KEY (<列名>)”部分。 例:定义SC表的Sno外键。 FOREIGN KEY(Sno) REFERENCES Student(Sno)
2016年12月17日11时50 分
11
二进制字符串类型
Binary(n):固定长度,n<=8000 Varbinary(n):可变长度,n<=8000 注:n为二进制数据的字节数 image:大容量、可变长二进制字符数 据,可用于存储文件。
2016年12月17日11时50 分
12
日期时间型
2016年12月17日11时50 分 13
货币类型
Money:8字节,精确到小数点后4位。 Smallmoney:4字节,精确到小数点后 4位。 可以带有适当的货币符号。例如,100 英镑可表示为 £ 100。
2016年12月17日11时50 分
14
4.3 数据定义功能
4.3.1 架构定义与删除
2016年12月17日11时50 分
34
示例
例1.为SC表添加“修课类别”列,此 列的列名为Type,数据类型为NCHAR(2) ,允许空。 ALTER TABLE SC
ADD Type NCHAR(2) NULL
2016年12月17日11时50 分
35
示例
例2.将Type列的类型改为NCHAR(4)。
DROP TABLE test
2016年12月17日11时50 分
37
2016年12月17日11时50 分
38
Sno
Cno
CHAR(7)
CHAR(6)
NOT NULL,
NOT NULL,
Grade
TINYINT,
PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) )
CREATE SCHEMA TEST AUTHORIZATION ZHANG CREATE TABLE T1( C1 INT,
C2 CHAR(10),
C3 SMALLDATETIME, C4 NUMERIC(4,1) )
2016年12月17日11时50 分 21
删除架构
DROP SCHEMA <架构名> { <CASCADE> | <RESTRICT> }
CREATE SCHEMA [<架构名>] AUTHORIZATION <用户名> 如果没有指定<架构名>,则<架构名> 隐含为<用户名>。 一个<用户名>可以拥有多个架构。 执行创建架构语句的用户必须具有管 理员权限,或CREATE SCHEMA权限。
2016年12月17日11时50 分 19
NOT NULL:限制列取值非空。 DEFAULT:给定列的默认值。 UNIQUE:限制列取值不重。
CHECK:限制列的取值范围。
PRIMARY KEY:指定本列为主键。
FOREIGN KEY:定义本列为引用其他表的外 键。
2016年12月17日11时50 分 25
几点说明
ALTER TABLE SC
ALTER COLUMN Type NCHAR(4)
例3.删除SC表的Type列。
ALTER TABLE SC
DROP COLUMN Type
2016年12月17日11时50 分 36
删除表
DROP TABLE <表名> { [, <表名> ] … } 例4.删除test表的语句为:
CASCADE:删除架构的同时将该架构中 所有的对象一起删除。 RESTRICT:如果被删除的架构中包含 对象,则拒绝删除此架构。
2016年12月17日11时50 分
22
说明
不同DBMS的DROP SCHEMA语句的语法 格式和执行略有不同。 SQL Server 2005的DROP SCHEMA语 句没有可选项,其语法格式为: DROP SCHEMA <架构名> 在SQL Server 2005中只能删除不包 含任何对象的架构。
4.3.2 基本表
2016年12月17日11时50 分
15
SQL数据定义功能
对 象 架构 表 创 建 CREATE SCHEMA CREATE TABLE ALTER TABLE 修 改 删 除 DROP SCHEMA DROP TABLE
视图
索引
CREATE VIEW
CREATE INDEX
1999年颁布SQL-99,是SQL92的扩展。
2016年12月17日11时50 分 4
4.1.2 SQL语言的特点
1. 一体化 2. 高度非过程化 3. 简洁 4. 使用方式多样
2016年12月17日11时50 分
5
4.1.3 SQL语言功能概述
四部分:数据定义功能、数据控制功能、数据 查询功能和数据操纵功能。 SQL功能 命令动词
示例
例1.为用户“ZHANG”定义一个架构 ,架构名为“S_C”。
CREATE SCHEMA S_C AUTHORIZATION ZHANG
例2.定义一个用隐含名字的架构。
CREATE SCHEMA AUTHORIZATION ZHANG
2016年12月17日11时50 分
20
示例
例3.在定义架构的同时定义表。
30
创建课程表
CREATE TABLE Course ( Cno Cname CHAR(6), NVARCHAR(20) NOT NULL,
Credit
TINYINT,
Semester TINYINT,
PRIMARY KEY(Cno)
)
2016年12月17日11时50 分 31
创建SC表
CREATE TABLE SC (
2016年12月17日11时50 分 8
字符串型
普通编码字符串类型 统一字符编码字符串类型 二进制字符串类型
2016年12月17日11时50 分
9
普通编码字符串类型
Char(n):定长存储,n<=8000 Varchar(n):不定长存储(按实际长度 存储),长度最大不超过n , n<=8000
数值型
准确型
整数 Bigint: 8字节, Int:4字节 Smallint:2字节, Tinyint:1字节(0~255) Bit:1位,存储1或0 小数 Numeric(p,q)或Decimal(p,q), 其中:p为数字位长度,q:小数位长度。
近似型
Float:8字节 Real:4字节
2016年12月17日11时50 分
3
4.1.1 SQL语言的发展
1986年10月由美国ANSI 公布最早的SQL标 准。
1989年4月,ISO提出了具备完整性特征的 SQL,称为SQL-89 。 1992年11月,ISO又公布了新的SQL标准, 称为SQL-92(以上均为关系形式)。
2016年12月17日11时50 分 17
架构基本概念
一个数据库可以包含一个或多个架构 ,由特定的授权用户名所拥有。 在同一个数据Fra Baidu bibliotek中,架构的名字必须 是唯一的。 属于一个架构的对象称为架构对象。 架构对象可以是:基本表、视图、触 发器等。
2016年12月17日11时50 分 18
定义架构
2016年12月17日11时50 分 32
修改表结构
在定义完表之后,如果需求有变化, 比如添加列、删除列或修改列定义, 可以使用ALTER TABLE语句实现。 ALTER TABLE语句可以对表添加列、 删除列、修改列的定义、定义主键、 外键,也可以添加和删除约束。
2016年12月17日11时50 分
数据查询 数据定义 SELECT CREATE、DROP、ALTER
数据操纵
数据控制
2016年12月17日11时50 分
INSERT、UPDATE、DELETE
GRANT、REVOKE
6
4.2 SQL支持的数据类型
数值型
字符串型
日期时间型
货币型
2016年12月17日11时50 分
7
2016年12月17日11时50 分 29
创建学生表
CREATE TABLE Student ( Sno Sname CHAR(7) NCHAR(5) PRIMARY KEY, NOT NULL,
Ssex
Sage
NCHAR(1),
TINYINT,
Sdept
)
2016年12月17日11时50 分
NVARCHAR(20)
相关文档
最新文档