数据库的基础语句-创建数据库、创建表、添加各种约束-扫盲一
SQLServer数据库有哪几种文件组成?
主数据文件:*.mdf
次要数据文件:*.ndf
日志文件:*.ldf
创建SQLServer数据库时,需要指定哪些属性?
1.文件存放位置,分配的初始空间,属于哪个文件组
2.文件增长:可以按百分比或实际大小指定增长速度
3.文件容量设置:可以指定文件增长的最大值或不受限
创建数据库
CREATE DATABASE 数据库名 ON [PRIMARY] ( <数据文件参数> [,…n] [<文件组参数>] ) [LOG ON] ( <日志文件参数> [,…n] )
示例
使用CREATE DATABASE语句创建数据库MySchool,
要求:
1.该数据库具有一个数据文件和一个日志文件
2.文件保存在D盘已有的文件夹Project下
3.数据文件的大小初始为5MB,最大值为100MB,文件增长率是15%
4.日志文件的大小初始为2MB,增长量是1MB
CREATE DATABASE MySchool ON PRIMARY --默认就属于PRIMARY主文件组,可省略 ( NAME=' MySchool_data', --主数据文件的逻辑名 --主数据文件的物理名 FILENAME='D:\project\MySchool_data.mdf', SIZE=5MB, --主数据文件初始大小 MAXSIZE=100MB, --主数据文件增长的最大值 FILEGROWTH=15% --主数据文件的增长率 ) LOG ON ( NAME='MySchool_log', FILENAME='D:\project\MySchool_log.ldf', SIZE=2MB, FILEGROWTH=1MB ) GO
示例2
使用CREATE DATABASE语句创建数据库Employee,
要求:
1.数据库具有多个数据和日志文件
2.分别设置主数据文件和次要数据文件
3.分别设置不同的日志文件
LOG ON ( --日志文件1的具体描述 NAME = 'employeelog1', FILENAME = 'D:\project\employeelog1_Log.ldf' , SIZE = 10, FILEGROWTH = 1 ), ( --日志文件2的具体描述- NAME = 'employeelog2', FILENAME = 'D:\project\employeelog2_Log.ldf' , SIZE = 10, MAXSIZE = 50, FILEGROWTH = 1 ) GO
删除数据库
删除数据库的语法
DROP DATABASE 数据库名 USE master --设置当前数据库为master,以便访问sysdatabases表 GO IF EXISTS ( SELECT * FROM sysdatabases WHERE name ='MySchool') DROP DATABASE MySchool CREATE DATABASE MySchool ON ( … … ) …… GO
表的基础知识
简述创建表的基本步骤
1.确定表中有哪些列
2.确定每列的数据类型
3.给表添加各种约束
4.创建各表之间的关系
整型数据:int,smallint
浮点数据:float,numeric decimal,numeric
字符数据:
固定长度:char(6)
可变长度:varchar(10|max)
固定长度:nchar(6)
可变长度:nvarchar(10|max)
布尔数据(真/假)
bit:1/ 0
货币数据
money
日期数据
datetime
创建表
CREATE TABLE 表名 ( 列名1 数据类型 列的特征, 列名2 数据类型 列的特征, ... )
列的特征:
1.包括该列是否为空(NULL)
2.是否是标识列(自动编号)
3.是否有默认值、是否为主键等
示例:
USE MySchool --将当前数据库设置为MySchool GO CREATE TABLE Student --创建学生信息表 ( StudentNo int NOT NULL, --学号,非空(必填) LoginPwd nvarchar(20) NOT NULL, --密码,非空(必填) StudentName nvarchar(20) NOT NULL, --姓名,非空(必填) Sex bit NOT NULL, --性别,非空(必填) GradeId int NOT NULL, --年级号(必填) Phone nvarchar(50) NULL, --电话 BornDate datetime NOT NULL, --出生日期(必填) Address nvarchar(255) NULL, --地址 Email nvarchar(50) NULL, --邮件帐号 IDENTITYCard varchar(18) NOT NULL --身份证号(必填) ) GO
删除表
DROP TABLE 表名
示例:
--将当前数据库设置为MySchool,以便在MySchool数据库中建表 USE MySchool GO IF EXISTS (SELECT * FROM sysobjects WHERE name='Student' ) DROP TABLE Student CREATE TABLE Student --创建学生信息表 ( … … ) GO
数据完整性有哪几种?各自作用是什么?
实体完整性
1.能够唯一标识表中的每一条记录
2.实现方式:主键、唯一键、IDENTITY属性
域完整性
1.表中特定列数据的有效性,确保不会输入无效的值
2.实现方式:类型、缺省值、约束、空值
引用完整性
1.维护表间数据的有效性、完整性
2.实现方式:建立外键联系另一表的主键
自定义完整性
1.根据业务处理流程定义的特定业务规则
2.实现方式:存储过程、触发器、规则
使用约束的目的是什么?
确保表中数据完整性
常用的约束类型有哪些?
1.主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空
2.唯一约束(Unique Constraint):要求该列数据唯一,允许为空,但只能出现一个空值
3.检查约束(Check Constraint):某列取值范围限制、格式限制等
4.默认约束(Default Constraint):某列的默认值
5.外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的哪列
约束名的取名规则推荐采用:约束类型_约束列
1.主键(Primary Key)约束:如 PK_stuNo
2.唯一(Unique Key)约束:如 UQ_stuID
3.默认(Default Key)约束:如 DF_stuAddress
4.检查(Check Key)约束:如 CK_stuBornDate
5.外键(Foreign Key)约束:如 FK_stuNo
添加约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型 具体的约束说明
约束名的取名规则推荐采用:约束类型_约束列
1.主键(Primary Key)约束:如 PK_stuNo
2.唯一(Unique Key)约束:如 UQ_stuID
3.默认(Default Key)约束:如 DF_stuAddress
4.检查(Check Key)约束:如 CK_stuBornDate
5.外键(Foreign Key)约束:如 FK_stuNo
删除约束的语法
ALTER TABLE 表名 DROP CONSTRAINT 约束名
示例
例如:删除Student表中地址默认约束 ALTER TABLE Student DROP CONSTRAINT DF_stuAddress
需求说明:
使用T-SQL脚本向Subject表中插入记录,随后,使用ALTER TABLE语句向课程表Subject中添加相关约束
1.主键约束:课程编号
2.非空约束:课程名称
3.检查约束:学时必须大于等于0
4.外键约束:主表Grade和从表Subject通过GradeID建立引用关系
USE MySchool GO ALTER TABLE Subject --主键约束(课程编号) ADD CONSTRAINT PK_Subject PRIMARY KEY (SubjectNo) ALTER TABLE Subject --非空约束(课程名称) ADD CONSTRAINT CK_SubjectName CHECK (SubjectName is not null) ALTER TABLE Subject WITH NOCHECK --检查约束(学时必须大于等于0) ADD CONSTRAINT CK_ClassHour CHECK (ClassHour>=0) ALTER TABLE Subject --外键约束(主表Grade和从表Subject建立引用关系) ADD CONSTRAINT FK_GradeId FOREIGN KEY (GradeId) REFERENCES Grade (GradeId) GO
WITH NOCHECK对表中已 有数据不做约束检查,因此 不能保证表中数据的正确性
总结
数据库的物理实现的步骤
1.创建数据库
2.创建表
3.添加各种约束
4.创建数据库的登录账户并授权
创建数据表后可以添加的约束类型
1.主键约束(Primary Key Constraint)
2.唯一约束(Unique Constraint)
3.检查约束(Check Constraint)
4.默认约束(Default Constraint)
5.外键约束(Foreign Key Constraint)