SQLSever创建表和约束

表的基本概念

概念:由数据按一定的顺序和格式构成的数据集合,是数据库的主要对象。每一行代表一个记录,每一列代表一个属性。
设计表:创建前考虑如下特征:

  • 表中要包含数据类型
  • 表中列数,每一列中的数据类型
  • 那些列允许空值
  • 是否使用以及何时约束
  • 那些是主键,那些是外键

数据类型

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
  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值