第4章 表和数据完整性

类别 数据类型 字节数 取值范围 作用
Integer bigint 8 -2E63~2E63-1 存储非常大的正负整数
int 4 -2E31~2E31-1 存储正负整数
smallint 2 -32 768~32 767 存储正负整数
tinyint 1 0~255 存储小范围的正整数
Exact decimal(p,s) 5~17 -10E38+1~10E38-1 最大可存储38位十进制数
numeric numeric(p,s) 5~17 -10E38+1~10E38-1 可以与decimal交换使用
float§ 4/8 -2.23E308~2.23E308 存储大型浮点数,超过十进制数据类型的容量
real 4 -3.4E38~3.4E38 仍有效,为满足SQL-92标准,已经被float替换了
数据类型 字节数 字符数
char(n) 1~8 000 最多8 000个字符
varchar(n) 1~8 000 最多8 000个字符
varchar(max) 最大2 G 最多1 073 741 824个字符
text 最大2 G 最多1 073 741 824个字符
nchar(n) 2~8 000 最多4 000个字符
nvarchar(n) 2~8 000 最多4 000个字符
nvarchar(max) 最大2 G 最多536 870 912个字符
ntext 最大2 G 最多536 870 912个字符
日期时间类型 字节数 取值范围
date 10 从0001年1月1到9999年12月31日,
datetime 8 从到,精度为3.33毫秒
Datetime2(n) 8 从到,精度为0. 0001毫秒
smalldatetime 4 从到,精度为1分钟
datetimeooffset(n) 26~34 从到,精度为0. 0001毫秒
time(n) 3~5 从00:00:00~24:00:00点,精度为0. 0001毫秒
数据类型 字节数 取值范围
money 8 -922 337 203 685 477.5808~922 337 203 685 477.5807
smallmoney 4 -214 748.3648~214 748.3647
数据类型 字节数 作用
binary(n) 1~8 000 存储固定大小的二进制数据
varbinary(n) 1~8 000 存储可变大小的二进制数据
varbinary(max) 最多2 G 存储可变大小的二进制数据
image 最多2 G 存储可变大小的二进制数据

【例4.1】利用CREATE TABLE命令建立课程信息表course,表结构如表4-9所示。

列序号 列名 类型 取值说明
1 courseno nchar(6) 主键
2 cname nchar(20)
3 type nchar(8)
4 period tinyint
5 credit numeric(4,1)
在数据库teaching建立课程信息表course的程序代码如下
CREATE TABLE teaching.dbo.course(courseno nchar(6) NOT NULL,cname nchar(20) NULL,type nchar(8) NULL,period tinyint NULL,credit numeric(4, 1) NULL,CONSTRAINT PK_course PRIMARY KEY CLUSTERED (Courseno  ASC )
) ON [PRIMARY]

【例4.2】利用CREATE TABLE命令建立学生分数表score,表结构如表4-10所示。该表中主键由两个列构成。

CREATE TABLE dbo.score(studentno nchar(11)  NOT NULL,courseno  nchar(6)  NOT NULL,usually numeric(6, 2) NULL,final numeric(6, 2) NULL,CONSTRAINT PK_score PRIMARY KEY CLUSTERED (studentno ASC,courseno ASC  ))

【例4.3 】利用CREATE TABLE命令建立教师信息表teacher,表结构如表4-11所示。

列序号 列名 类型 取值说明
1 teacherno nchar(6) 主键
2 tname nchar(8)
3 major nchar(10)
4 prof nchar(10)
5 department nchar(12)
CREATE TABLE dbo.teacher(teacherno nchar(6) NOT NULL,tname nchar(8) NULL,major nchar(10) NULL,prof nchar(10) NOT NULL,department nchar(12)  NULL,CONSTRAINT PK_teacher PRIMARY KEY CLUSTERED
(   teacherno ASC )
)

【例4.4】创建表结构如表4-12所示的班级信息表class。然后查看该表的有关CREATE TABLE命令脚本信息。

列序号 列名 类型 取值说明
1 classno nchar(7) 主键
2 classname nchar(12)
3 department nchar(12)
4 monitor nchar(8)

【例4.5】为了完善teaching数据库的表间联系,创建表结构如所示的纽带表teach_class。

列序号 列名 类型 取值说明 列含义
1 teacherno nchar(6) 主键 教师编号
2 classno nchar(7) 主键 班级编号
3 courseno nchar(6) 主键 课程编号
CREATE TABLE [dbo].[teach_class]([teacherno] [nchar](6) COLLATE Chinese_PRC_CI_AS NOT NULL,[classno] [nchar](7) COLLATE Chinese_PRC_CI_AS NOT NULL,[courseno] [nchar](6) COLLATE Chinese_PRC_CI_AS NOT NULL,CONSTRAINT [PK_teach_class] PRIMARY KEY CLUSTERED
(   [teacherno] ASC,[classno] ASC,[courseno] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

例4.6】在test01数据库中创建一个新表student1,然后修改其列属性。
程序代码如下:

CREATE TABLE student1 (column_grade   int) --创建新表
GOEXEC sp_help student1                       --查看表的信息
GOALTER TABLE student1
ADD column_class VARCHAR(20) NULL          --添加列
GOEXEC sp_help student1
GOALTER TABLE student1
DROP COLUMN column_grade       --删除列
GOEXEC sp_help student1
GO

【例4.7】修改test01中表student1的列column_class数据类型和名称。
程序代码如下:

Use test01
GO
ALTER TABLE student1
ALTER COLUMN column_class  char(20) NOT NULL
GO
EXEC sp_rename ‘student1.column_class’,‘st_class‘
GO

【例4.8】向teaching数据库中的score表中添加数据。
程序代码如下:

INSERT  INTO score (usually,courseno,final,studentno)
VALUES (79, 'c05109',91,'16137221508'  )INSERT  INTO  score
VALUES('17124113307','c05127',93,78)

【例4.9】更改teaching数据库中的score表中的学号为17124113307、课程号为c05127的期末成绩修改为87
程序代码如下:

UPDATE  score
SET final =87
WHERE studentno=‘17124113307’ AND courseno=‘c05127’

【例4.10】为数据库test01中表student1输入3行数据,然后将列st_class的值全部改为jsj1012。
程序代码如下:

INSERT INTO student1 VALUES('jixie1709')
INSERT INTO student1 VALUES('huag1602')
INSERT INTO student1 VALUES('txun1612')
GO
UPDATE student1
SET st_class=’ jsj1812’
GO

【例4.11】删除数据库test01中表student1的列st_class的值为jsj1012的行。
程序代码如下:

DELETE  FROM  student1
WHERE  st_class=‘jsj1812’

【例4.16】为数据库teaching中的学生表student的列Email创建一个UNIQUE约束。
程序代码如下:(PRIMARY KEY 约束默认为 CLUSTERED;UNIQUE 约束默认为 NONCLUSTERED)

ALTER TABLE student
ADD CONSTRAINT u_Email UNIQUE NONCLUSTERED (Email)
GO

【例4.17】为数据库teaching中表score的列studentno创建一个FOREIGN KEY约束。

ALTER TABLE  score     WITH CHECK
ADD  CONSTRAINT FK_sc_stud FOREIGN KEY (studentno)
REFERENCES   student (studentno)
GO

【例4.18】利用命令删除数据库teaching中表score的一个约束CK_usually。
程序代码如下:

ALTER TABLE score
DROP CONSTRAINT CK_usually

【例4.19】为数据库teaching创建一条规则score_rule,该规则规定凡是分数类的列值必须在0~100之间。
程序代码如下:

CREATE RULE score_rule
AS  @score BETWEEN 0 and 100
GO

SQL Server 2008 复习(二)相关推荐

  1. SQL Server 2008 复习(一)

    导入 有关数据库系统的基本概念 1.信息与数据: 数据(Data)是描述事物的符号记录,数据的表现形式,可以是文本.图表.图形.图像.声音.语言.视频等. 信息(Information)是具有特定意义 ...

  2. SQL Server 2008 复习(三)

    第3章 创建和管理数据库 利用Transact-SQL语句创建数据库 [例3.1] 创建数据库student,并指定数据库的数据文件所在位置.初始容量.最大容量和文件增长量. 程序代码如下: CREA ...

  3. Microsoft 数据库三版本共存:SQL Server 2000(SP4) + SQL Server 2005(SP2) + SQL Server 2008

    Microsoft 数据库三版本共存: SQL Server 2000(SP4) + SQL Server 2005(SP2) + SQL Server 2008 一.服务项: 1.SQL Serve ...

  4. SQL Server 2008性能故障排查(二)——CPU

    原文: SQL Server 2008性能故障排查(二)--CPU 承接上一篇:SQL Server 2008性能故障排查(一)--概论 说明一下,CSDN的博客编辑非常不人性化,我在word里面都排 ...

  5. PowerShell 2.0 实践(十二)管理 SQL Server 2008 R2(1)

    DBA可以使用的工具很多,对于SQL Server来说,有查询分析器.事件探查器.命令行工具等,其中SQL语句是重中之重,但是PowerShell的出现使得DBA又多了一种选择. 测试脚本下载 本系列 ...

  6. 《Microsoft Sql server 2008 Internals》读书笔记--第六章Indexes:Internals and Management(3)

    <Microsoft Sql server 2008 Internals>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397 ...

  7. [转]实战 SQL Server 2008 数据库误删除数据的恢复

    实战 SQL Server 2008 数据库误删除数据的恢复 关键字:SQL Server 2008, recover deleted records 今天有个朋友很着急地打电话给我,他用delete ...

  8. SQL Server 2008高可用性系列:数据库快照

    SQL Server 2008高可用性系列:数据库快照 http://database.51cto.com  2010-09-13 14:45  我爱菊花  博客园  我要评论(0) 摘要:我们今天要 ...

  9. python使用pyodbc连接sql server 2008

    一.PyODBC的下载地址: http://code.google.com/p/pyodbc/ 二.测试语句 import pyodbc cnxn = pyodbc.connect( DRIVER=' ...

最新文章

  1. netty系列之:内置的Frame detection
  2. java反向映射_opencv 直方图和直方图反向映射
  3. C语言结构体的应用——万年历
  4. 子网划分,主机号,网络号计算
  5. HTML5无人机产品官网专题模板
  6. python 读取excel表数据_5分钟学会用Python 读取Excel
  7. ExtAspNet v3.1.0
  8. Python六大框架对比
  9. python文本聚类分析作用_文本聚类应用意义
  10. [算法]px4位置估计-inav (2017/10/26更新)
  11. pip 卸载包失败的文件夹处理
  12. UI——day3.IOS设计规范
  13. 万年历(hao123)代码
  14. 在墨刀中使用思维导图
  15. 【毕业设计】基于STM32的宠物自动喂食装置
  16. SpringAop两种配置:xml配置和注解方式
  17. Ch11. Threads 线程
  18. linux 通过手机上网,Linux系统通过手机GPRS上网设置简介有哪些呢?
  19. 笨木头Lua专栏 函数的几个特别之处
  20. 14、W601之AHT10温湿度传感器

热门文章

  1. Python开发技巧:scrapy-redis爬虫如何发送POST请求
  2. Java如何实现跨平台?原理是怎样的?
  3. 不允许使用不完整的类型_河南:限速标志不达标,坚决不允许通车!
  4. pyqt5讲解6:菜单栏,工具栏,状态栏
  5. wxWidgets:wxWeakRef< T >类模板的用法
  6. boost::irange相关的测试程序
  7. boost::process::throw_on_error相关的测试程序
  8. boost::mpl模块实现empty相关的测试程序
  9. boost::hana::contains用法的测试程序
  10. hana::detail::variadic::split_at用法的测试程序