SQLServer 学习笔记之超详细基础SQL语句 Part 9
Sqlserver 学习笔记
-----------------------接Part 8-------------------
3
范式的概念
第一范式的目标是确保每列的原子性。
如果每列都是不可再分的最小单元(也称为最小的原子单位。),则满足第一范式(1NF)
第二范式要求每个表只描述一件事情。
如果一个关系满足1NF,并且除了主键以外的其它列,都依赖该主键,则满足第二范式。(2NF)
第三范式
如果一个关系满足2NF,并且除了主键以外的其它列都不传递依赖于主键,则满足第三范式(3NF)。
第一范式(1NF)的目标:确保每列的原子性。
第二范式(2NF)的目标:确保表中的每列,都和主键相关,即不存在部分依赖
第三范式(3NF)的目标:确保每列都和主键列直接相关,而不是间接相关,即不存在传递函数依赖
4 T-SQL创建数据库的语法:
CREATE DATABASE
数据库名
ON [PRIMARY]
(
<</span>数据文件参数>
[,…n]
[<</span>文件组参数>]
)
[LOG ON]
(
<</span>日志文件参数>
[,…n]
)
示例
--创建学生数据库:一个数据文件,一个日志文件
CREATE
DATABASE studentDB
ON
PRIMARY--默认就是属于PRIMARY主文件,可以省略
(
NAME='stdDB_data',--主数据文件的逻辑名
FILENAME='E:\SQL\stuDB.mdf',--主数据文件的物理名
SIZE=3mb,--主数据文件的初始大小
MAXSIZE=10mb,--主数据文件的增长的最大值
FILEGROWTH=10%--主数据文件的增长率
)
LOG
ON
(
NAME='stuDB_log',
FILENAME='E:\SQL\stuDB_log.ldf',
SIZE=3mb,
MAXSIZE=10mb,
FILEGROWTH=1mb
)
GO
注意:这里的两个name参数不能一样的逻辑名,否则会提示逻辑文件名xxx已被使用,请选择另一个名称
--创建学生数据库:多个数据文件,多个日志文件
CREATE
DATABASE employeeDB
ON
PRIMARY--默认就是属于PRIMARY主文件,可以省略
(
NAME='employee1_data',--主数据文件的逻辑名
FILENAME='E:\SQL\employee1.mdf',--主数据文件的物理名
SIZE=3mb,--主数据文件的初始大小
MAXSIZE=10mb,--主数据文件的增长的最大值
FILEGROWTH=10%--主数据文件的增长率
),
(
NAME='employee2_data',--主数据文件的逻辑名
FILENAME='E:\SQL\employee2.mdf',--主数据文件的物理名
SIZE=3mb,--主数据文件的初始大小
MAXSIZE=10mb,--主数据文件的增长的最大值
FILEGROWTH=10%--主数据文件的增长率
)
LOG
ON
(
NAME='employee1_log',
FILENAME='E:\SQL\employee1_log.ldf',
SIZE=3mb,
MAXSIZE=10mb,
FILEGROWTH=1mb
),
(
NAME='employee2_log',
FILENAME='E:\SQL\employee2_log.ldf',
SIZE=3mb,
MAXSIZE=10mb,
FILEGROWTH=1mb
)
GO
USE
master --设置当前数据库为master,以便访问sysdatabase表
GO
IF
EXISTS(SELECT *
FROM sysdatabases WHERE name='stuDB')
DROP DATABASE stuDB
CREATE
DATABASE stuDB
ON
PRIMARY
(
NAME='stdDB2_data',--主数据文件的逻辑名
FILENAME='E:\SQL\stuDB2.mdf',--主数据文件的物理名
SIZE=3mb,--主数据文件的初始大小
MAXSIZE=10mb,--主数据文件的增长的最大值
FILEGROWTH=10%--主数据文件的增长率
)
LOG
ON
(
NAME='stuDB_log',
FILENAME='E:\SQL\stuDB2_log.ldf',
SIZE=3mb,
MAXSIZE=10mb,
FILEGROWTH=1mb
)
GO
说明:EXISTS()语句:检测是否存在stuDB数据库如果存在stuDB数据库,则删除
--创建表
USE
stuDB--将当前数据库设置为stuDB
GO
CREATE
TABLE stuInfo
(
stuName VARCHAR(20)
NOT NULL, --姓名,非空(必填)
stuNo CHAR(6)
NOT NULL, --学号,非空(必填)
stuID NUMERIC(18,0),
stuSeat SMALLINT IDENTITY(1,1),
--座位号,自动编号
stuAddress TEXT --住址,允许为空,即可选输入
)
GO
说明:NUMERIC
(18,0)
代表18位数字,小数位数为0
IDENTITY(起始值,递增量)
5
约束
目的:确保表中数据的完整型
常用的约束类型:
1)
主键约束(Primary Key
Constraint):要求主键列数据唯一,并且不允许为空
2)
唯一约束(Unique
Constraint):要求该列唯一,允许为空,但只能出现一个空值。
3)
检查约束(Check
Constraint):某列取值范围限制、格式限制等,如有关年龄的约束
4)
默认约束(Default
Constraint):某列的默认值,如我们的男性学员较多,性别默认为“男”
5)
外键约束(Foreign Key
Constraint):用于两表间建立关系,需要指定引用主表的那列
添加约束的语法:
ALTER TABLE
表名
ADD CONSTRAINT
约束名
约束类型
具体的约束说明
其中,约束名的取名规则推荐采用:约束类型_约束字段
a)
主键(Primary
Key)约束:如
PK_stuNo
b)
唯一(Unique
Key)约束:如
UQ_stuID
c)
默认(Default
Key)约束:如
DF_stuAddress
d)
检查(Check
Key)约束:如
CK_stuAge
e)
外键(Foreign
Key)约束:如
FK_stuNo
示例
--给stuInfo表添加约束
ALTER
TABLE stuInfo
ADD
CONSTRAINT PK_stuNo PRIMARY KEY
(stuNo)
ALTER
TABLE stuInfo
ADD
CONSTRAINT UQ_stuID UNIQUE(stuID)
ALTER
TABLE stuInfo
ADD
CONSTRAINT DF_stuAddress
DEFAULT
('地址不详')
FOR stuAddress
ALTER
TABLE stuInfo
ADD
CONSTRAINT CK_stuAge
CHECK(stuNo
BETWEEN 1 AND 60)
ALTER
TABLE stuInfo
ADD
CONSTRAINT FK_stuNo
FOREIGN
KEY(stuNo)
REFERENCES stuInfo(stuNo)
GO
最新文章
- 工作笔记--哪些bug应由研发发现?
- Oracle 删除重复数据只留一条
- SQL SERVER与SSIS 数据类型对应关系
- 使windows隐藏文件全部显示出来
- Web前端入门必学知识
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】连载导读
- java 生成UUID
- button等按钮onclientclick事件失效
- 【WCF--初入江湖】目录
- Android版本控制系统及其间的差异
- [BZOJ 3995] [SDOI2015] 道路修建 【线段树维护连通性】
- Codeforces 301_div.2_Ice Cave(BFS走冰块)
- 自定义TypeConverter把基础类型转换为复杂类型
- visual studio 2013 使用IIS Express附加调试MVC5
- mysql中exists的用法介绍
- echarts 显示下载按钮,echarts 自定义按钮,echarts 添加按钮
- Docker - 访问仓库
- jsp+servlet实现模糊查询和分页效果
- 【ASP】session实现购物车
- React 表单控件onSubmit
热门文章
- odoo开发笔记 -- wkhtmltox打印不显示中文 --ubuntu字体安装
- 解决Maven的Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart
- Spring整合Mybatis原理简单分析
- 前端模块化之CommonJS,ES6,AMD,CMD
- postman参数化 接口响应数据获取符合条件的内容参数化给后面的接口使用
- layer插件学习——询问框
- 【转载】Layered Window(分层窗体,透明窗体)
- TabControl控件在左侧绘制tabPage页面
- Eclipse中使用printf报错 提示参数类型不对
- ASP.NET MVC5中的数据注解(转载)