SQL Server 2008 复习(二)
第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 复习(二)相关推荐
- SQL Server 2008 复习(一)
导入 有关数据库系统的基本概念 1.信息与数据: 数据(Data)是描述事物的符号记录,数据的表现形式,可以是文本.图表.图形.图像.声音.语言.视频等. 信息(Information)是具有特定意义 ...
- SQL Server 2008 复习(三)
第3章 创建和管理数据库 利用Transact-SQL语句创建数据库 [例3.1] 创建数据库student,并指定数据库的数据文件所在位置.初始容量.最大容量和文件增长量. 程序代码如下: CREA ...
- 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 ...
- SQL Server 2008性能故障排查(二)——CPU
原文: SQL Server 2008性能故障排查(二)--CPU 承接上一篇:SQL Server 2008性能故障排查(一)--概论 说明一下,CSDN的博客编辑非常不人性化,我在word里面都排 ...
- PowerShell 2.0 实践(十二)管理 SQL Server 2008 R2(1)
DBA可以使用的工具很多,对于SQL Server来说,有查询分析器.事件探查器.命令行工具等,其中SQL语句是重中之重,但是PowerShell的出现使得DBA又多了一种选择. 测试脚本下载 本系列 ...
- 《Microsoft Sql server 2008 Internals》读书笔记--第六章Indexes:Internals and Management(3)
<Microsoft Sql server 2008 Internals>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397 ...
- [转]实战 SQL Server 2008 数据库误删除数据的恢复
实战 SQL Server 2008 数据库误删除数据的恢复 关键字:SQL Server 2008, recover deleted records 今天有个朋友很着急地打电话给我,他用delete ...
- SQL Server 2008高可用性系列:数据库快照
SQL Server 2008高可用性系列:数据库快照 http://database.51cto.com 2010-09-13 14:45 我爱菊花 博客园 我要评论(0) 摘要:我们今天要 ...
- python使用pyodbc连接sql server 2008
一.PyODBC的下载地址: http://code.google.com/p/pyodbc/ 二.测试语句 import pyodbc cnxn = pyodbc.connect( DRIVER=' ...
最新文章
- netty系列之:内置的Frame detection
- java反向映射_opencv 直方图和直方图反向映射
- C语言结构体的应用——万年历
- 子网划分,主机号,网络号计算
- HTML5无人机产品官网专题模板
- python 读取excel表数据_5分钟学会用Python 读取Excel
- ExtAspNet v3.1.0
- Python六大框架对比
- python文本聚类分析作用_文本聚类应用意义
- [算法]px4位置估计-inav (2017/10/26更新)
- pip 卸载包失败的文件夹处理
- UI——day3.IOS设计规范
- 万年历(hao123)代码
- 在墨刀中使用思维导图
- 【毕业设计】基于STM32的宠物自动喂食装置
- SpringAop两种配置:xml配置和注解方式
- Ch11. Threads 线程
- linux 通过手机上网,Linux系统通过手机GPRS上网设置简介有哪些呢?
- 笨木头Lua专栏 函数的几个特别之处
- 14、W601之AHT10温湿度传感器
热门文章
- Python开发技巧:scrapy-redis爬虫如何发送POST请求
- Java如何实现跨平台?原理是怎样的?
- 不允许使用不完整的类型_河南:限速标志不达标,坚决不允许通车!
- pyqt5讲解6:菜单栏,工具栏,状态栏
- wxWidgets:wxWeakRef< T >类模板的用法
- boost::irange相关的测试程序
- boost::process::throw_on_error相关的测试程序
- boost::mpl模块实现empty相关的测试程序
- boost::hana::contains用法的测试程序
- hana::detail::variadic::split_at用法的测试程序