前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQLServer 学习笔记之超详细基础SQL语句 Part 9

SQLServer 学习笔记之超详细基础SQL语句 Part 9

作者头像
授客
发布2019-09-11 20:30:51
5740
发布2019-09-11 20:30:51
举报
文章被收录于专栏:授客的专栏授客的专栏

-----------------------接Part 8-------------------

3 范式的概念

第一范式的目标是确保每列的原子性。

如果每列都是不可再分的最小单元(也称为最小的原子单位。),则满足第一范式(1NF)

第二范式要求每个表只描述一件事情。

如果一个关系满足1NF,并且除了主键以外的其它列,都依赖该主键,则满足第二范式。(2NF)

第三范式

如果一个关系满足2NF,并且除了主键以外的其它列都不传递依赖于主键,则满足第三范式(3NF)。

第一范式(1NF)的目标:确保每列的原子性。

第二范式(2NF)的目标:确保表中的每列,都和主键相关,即不存在部分依赖

SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>9
SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>9

第三范式(3NF)的目标:确保每列都和主键列直接相关,而不是间接相关,即不存在传递函数依赖

SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>9
SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>9

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-11-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档