--一.对表的基本操作:
--创建表book1
create table book1(
编号 char(8) not null,
IBSN char(13) not null,
书名 nvarchar(255),
定价 money,
出版社 nvarchar(255),
出版日期 datetime
)
create table book2(
编号 char(8) not null,
IBSN char(13) not null,
书名 nvarchar(255),
定价 money,
出版社 nvarchar(255),
出版日期 datetime
)
create table teacher(
作者编号 char(4) default '001',
作者姓名 nvarchar(200) not null,
性别 char(2) not null default '男',
职称 char(20),
联系电话 char(10),
编号 char(8) not null
)
create table booking(
编号 char(8) not null,
IBSN char(13)
)
--查看表结构
exec sp_help book1
--表中增加一列
use book
alter table book1
add 作者 varchar null
--删除一列
alter table book1
drop column 作者
--修改列数据类型
alter table book1
alter column 定价 smallmoney
--查看表内容
select * from book1
--表中插入数据
insert into book1 values ('101172','172','sql数据库',35,'中山大学','03-13-2008')--完整表结构插入
insert into book1(编号,IBSN,书名) values('101186','186','JAVA程序设计')--表中部分列插入
--修改表内容
update book1 set 书名='JSP动态网页制件技术' where IBSN='186'
--删除表内容
delete from book1 where IBSN='186'
--删除表所有内容
delete book1
delete from book1
--删除表
drop table book1
--二.约束条件
--1,CHECK
--增加约束条件
alter table teacher
add constraint ch_teacher check(性别='男' or 性别='女')
/*此时,插入的性别不是男或者女,则会报如下错
消息 547,级别 16,状态 0,第 2 行
INSERT 语句与 CHECK 约束"ch_teacher"冲突。该冲突发生于数据库"book",表"dbo.teacher", column '性别'。
语句已终止。*/
insert into teacher(作者姓名,性别,编号) values('22','ds','2')
--删除约束条件
alter table teacher
drop constraint ch_teacher
--删除约束后,则可以正常插入
insert into teacher(作者姓名,性别,编号) values('22','ds','2')
--2.DEFAULT
--增加约束
alter table teacher
add constraint de_性别 default '男' for 性别
--删除约束
alter table teacher
drop constraint de_性别
--3,primary key
--增加约束
alter table teacher
add constraint pri_作者编号 primary key clustered(作者编号)
/*消息 8111,级别 16,状态 1,第 2 行
无法在表 'teacher' 中可为 Null 的列上定义 PRIMARY KEY 约束。
消息 1750,级别 16,状态 0,第 2 行
无法创建约束。请参阅前面的错误消息。
查看表结构,可发现作者编号允许为NULL,不能作为PRIMARY KEY,修改如下:*/
--增加约束
alter table teacher
add constraint pri_编号 primary key clustered(编号)
--删除约束
alter table teacher
drop constraint pri_编号
--4,foreign key
--为booking建立外键,主键在book1
alter table booking
add constraint for_编号 foreign key(编号)
references book1(编号)
/*
报错如下:
消息 1776,级别 16,状态 0,第 2 行
在被引用表 'book1' 中没有与外键 'for_编号' 中的引用列列表匹配的主键或候选键。
消息 1750,级别 16,状态 0,第 2 行
无法创建约束。请参阅前面的错误消息。
因为在book1表中"编号"并未设置主键约束,则先设置如下
*/
alter table book1
add constraint pri_编号 primary key clustered(编号)
--再设置foreign key如下:
alter table booking
add constraint for_编号 foreign key(编号)
references book1(编号)
exec sp_help booking