管理器:
系统数据库有四个:
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