您的位置:首页 > 数据库

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

2016-04-17 21:31 721 查看
管理器:

系统数据库有四个:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息