表的基本概念
概念:由数据按一定的顺序和格式构成的数据集合,是数据库的主要对象。每一行代表一个记录,每一列代表一个属性。
设计表:创建前考虑如下特征:
- 表中要包含数据类型
- 表中列数,每一列中的数据类型
- 那些列允许空值
- 是否使用以及何时约束
- 那些是主键,那些是外键
数据类型
Bigint(大整型8字节)
int:常用的整型(4字节)
smallint:小整型2字节
tinyint :微整型(1字节)
Bit:位类型,1字节,只能存储0和1
decimal(3,2):总位数为3,小数位数为2
Datetime:长度为8字节,存储日期范围为1753.1.1-9999.12.31
smalldatatime:1900.1.10-2079.12.31
char:定义形式Char(n)n表示所有字符所占的空间取值1-8000,若输入小于n系统补空格,若输入大于n自动截断。
varchar:定义形式varchar(n),长度可变,节省空间
二进制字符串 Binary(n)常用于存储图像数据。varbinary(n)
image:存储照片或者图画。
创建表
借助工具点击
- 点击数据库里面的表–>点击新建–>在弹出窗口输入各种参数
使用语句创建表
--切换数据库的语法 use 数据库名字
use DB5
--创建学生表(学号、姓名、年龄、性别)
create table 学生表
(
学号 varchar(15) not null,
姓名 char(10) not null,
年龄 int null,
性别 char(5)
)
修改表
创建表之后,可以更改最初创建的选项:列和约束。
*添加列 :
- alter table 表名
- add +属性+数据类型[长度][NULL |NOT NULL]
--给student表添加sno属性
alter table student
add sno varchar(15) not null
修改数据类型`
- alter table 表名
- alter column +属性+数据类型
--修改name的数据类型为varchar
alter table student
alter column name varcher(10)
删除列
- alter table 表名
- drop +column+属性名
--删除age
alter table student
drop column age
修改列名
- exec sp_rename ‘表名字.列名字’,‘新列名字’
- exec sp_rename ‘原表名’,‘新表名’
--修改列名 name-->sname
exec sp_rename 'student.name','sname'
--修改表名
exec sp_rename 'student','stu'
创建和删除约束
主键约束(PRIMARY KEY):唯一、不能为空、不能重复
外键约束(FOREING KEYI):用于加强两表的联系
唯一约束(unique):指定一个或者多个列的值具有唯一性,可以为空
检查约束(check):设置检查条件,限制输入值
默认约束(default):没有提供输入值时,自动添加值
创建约束
- alter table 表名
- add constraint 约束名 约束类型 具体的约束说明
--五种约束创建方式练习
--对我们表中的学号添加主键约束
alter table 学生表
add constraint PK_学号 primary key (学号)
--姓名添加唯一约束unique
alter table 学生表
add constraint un_姓名 unique (姓名)
--给年龄添加检查约束
alter table 学生表
add constraint ck_年龄 check (年龄>18)
--给性别添加默认约束为男
alter table 学生表
add constraint df_性别 default '男' for 性别
--年龄大于18小于25
alter table 员工信息表
add constraint ck_年龄 check (年龄>18 and 年龄<25)
--给成绩表的学号建立一个外键约束
--引用学生表中的学号(加强学生表和成绩表之间的联系)
alter table 成绩表
add constraint fk_学号 foreign key (学号)
references 学生表(学号)
--外键约束的前提:两个列中的数据类型必须保持一致,
--引用的列必需为主键约束或者唯一约束,
--两个表的列名尽量保持一致
外键约束的前提:两个列中的数据类型必须保持一致,
–引用的列必需为主键约束或者唯一约束,
–两个表的列名尽量保持一致
删除约束:
- alter table 表名
- drop constraint 约束名
--删除默认约束
alter table 学生表
drop constraint df_性别
--删除成绩表的外键约束
alter table 成绩表
drop constraint fk_学号
--删除主键约束(先要删除外键约束)
alter table 学生表
drop constraint pk_学号
在创建表的同时添加约束,参照下图列子
代码实现:
use tsg1
create table ts
(
书号 char(20) primary key,
书名 char(20),
出版社 char(20),
类别 char(20),
作者 char(20),
出版时间 datetime,
价格 int check (价格>0)
)
create table dz
(
编号 char(20) primary key,
姓名 char(20),
单位 char(20) default '千锋教育',
性别 char(20) check (性别='男' or 性别='女'),
电话 char(20) unique
)
create table jy
(
书号 char(20) foreign key references ts(书号),
编号 char(20) foreign key references dz(编号),
借阅日期 datetime,
还书日期 datetime,
还书标识 char(2)
primary key (书号,编号)--联合主键声明方式,一般写在最后
)
联合主键,把两个列看作一个整体,把这个整体当作主键看待
删除表
语法:drop table 表名
drop table stu