SQL Server数据库基础(一),数据库表、时间、创建约束

管理器:
系统数据库有四个:
master:系统信息,要经常备份
model:模板数据库
tempdb:临时数据库
msdb:代理服务数据库

数据库的转移:
直接找到数据库的位置是不能剪切复制的,要先通过***分离***,断开数据库与SQL Server的连接,然后在剪切复制到其他磁盘目录下,最后使用***附加***找到数据库进行添加

设置主键的字段不能重复,如果设置两个字段都为主键,表示的是两个字段同时不能重复。比如学生选课,学生编号和课程编号同时设为主键,则不能出现多次同一个学生选择同一门课,
表中找不到合适的字段作为主键,就在表中增加一个字段作为标识列。 标识列会自动增长


使用SQL语句创建数据库

use master
if exists(select*from sysdatabases where name = 'test')
	drop database test
go
create database test
on primary  --主文件组,默认都属于这个组,可以不写
(name=test1,	--定义主要数据文件名字
filename = 'f:\data\test1.mdf',	--文件路径
size = 20,	--文件大小为20M
maxsize = 500,	--文件最大为500M;
filegrowth = 5	--超过20M是自增长5M
),
(name = test2,	--定义次要数据文件名字
filename = 'f:\data\test2.ndf',
size = 10,
maxsize = 20,
filegrowth = 20%	--超过10M时自增长20%
)
log on	--创建日志文件
(
name = test_log,
filename = 'f:\data\test_log',
size = 5,
maxsize = 300,
filegrowth  = 10%
)

创建一张表

--创建学生表
use test
if exists(select * from sysobjects where name = 'student')	--所有表都放在sysobjects 这个系统表里
	drop table student
go
create table student
(stuNo int identity(95001,1) primary key not null,	--使用自增,作为标识列,从95001开始递增,设为主键
stuName varchar(20) not null,
stuSex char(2) null,	--允许为空,可以不写
stuAge int ,
stuAddress varchar(50) default '地址不详'	--默认地址
)

取出当前时间,精确到年月日时分秒
select GETDATE()
取出当前年的时间
select year(GETDATE())


添加约束语句



/*初始化两张表,测试添加约束语句*/
use test 
go
if exists(select * from sysobjects where name = 'department')
	drop table department
create table department	--部门表
(departmentid char(5) not null primary key,
deparmentname varchar(20)
)



if exists(select * from sysobjects where name = 'employee')
	drop table employee
create table employee	--员工表
(
id char(18) not null,	--身份证号
jobid char(6) not null,	--员工编号
name varchar(20) not null,	--姓名
sex char(2) null,	--性别
birthday datetime null,	--出生日期
salary money not null,	--工资
departmentid char(5) null	--部门编号
)

/*
对员工表要求:
		id的值是唯一,作为	(主键)
		jobid的值也是唯一的,作为为一键  (唯一键)
		sex取值只能为男或女		(检查约束)
		birthday要求必须年满18		(检查约束)
		salary默认值为3000		(默认约束)
		department值必须在department表中存在departmentid(外键)
*/

--使用添加约束的语法

/*添加主键约束*/
alter table employee
add constraint PK_id primary key(id)

/*添加唯一键约束*/
alter table employee
add constraint UQ_jobid unique(jobid)

/*添加检查约束*/
alter table employee
 add constraint CK_sex check(sex in('男','女'))

/*添加检查约束*/
alter table employee
add constraint CK_birthday check (year(GETDATE())-year(birthday)>=18)	--表示当前时间减去出生日期时间大于18岁


/*添加默认约束*/
alter table employee
add constraint DF_salray default 3000 for salary

/*添加外键约束*/
alter table employee
add constraint FK_departmentid foreign key (departmentid) references department(departmentid)




/*删除约束*/
alter table employee
drop constraint ck_sex
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值