MSSQL示例(一)DDL
来源:互联网 发布:染色体核型分析软件 编辑:程序博客网 时间:2024/06/05 11:14
DDL(Data Definition Language),数据库模式定义语言。
1、新建表
CREATE TABLE T1( id int,name varchar(50) )--新建表T1,两列
select * from T1 --有空没空select看看结果,下同
2、删除表
DROP TABLE T1 --删除表T1
3、修改表--增删改列
增
ALTER TABLE T1 ADD c varchar(10),d varchar(10) --修改表T1,增加列c、列d
删
ALTER TABLE T1 DROP COLUMN c --删除列c;我晕,删除列要带COLUMN,新增列不用;是DROP不是DELETE删除行;
改
ALTER TABLE T1 ALTER COLUMN d int --将列d从原有类型varchar改为int;
sp_rename 'T1.d',d1,'column' --将表T1的列d改名为d1;使用了系统自带的存储过程sp_rename
4、约束
实体完整性:表中记录不重复(任何两条记录不全等)并且每条记录都有一个非空主键,primary key、unique、索引(index)
域完整性:表中字段值必须与字段数据类型、格式、有效范围相吻合,check、foreign key、not null、数据类型
参照完整性:不能引用不存在的值,foreign key
自定义完整性:根据特定业务领域定义的需求完整性
保证数据完整性的几种常用方法
约束(最常用)
过程
函数
触发器
4.1、约束:主键
CREATE TABLE T1( id int primary key,name varchar(10))
DROP TABLE T1 --删除表
--4.2、约束:外键
CREATE TABLE Student( sno int NOT NULL primary key, ) --建学生表,sno学号
CREATE TABLE St_Score( course varchar(50),f_sno int foreign key references Student(sno))--建学生成绩表,设f_sno为外键,关联学生表的sno字段
drop table Student --提示:无法删除对象 'Student',因为该对象正由一个 FOREIGN KEY 约束引用。
drop table St_Score --要将外键所在的表St_Score干掉才行,谁指向我先干掉谁,再Student
4.3、约束:自增长
CREATE TABLE T1( id int NOT NULL IDENTITY,name varchar(10) )--IDENTITY 自增长,NOT NULL 非空
insert into T1(name) values('abc')
select * from T1 --{1,abc}
DROP TABLE T1
4.4、约束:唯一,联合唯一
单个唯一
CREATE TABLE T1(name varchar(10) unique ) --unique 唯一值
insert into T1(name) values('abc')
insert into T1(name) values('abc') --违反了 UNIQUE KEY约束 'UQ__T1__72E12F1B690797E6'。不能在对象 'dbo.T1' 中插入重复键。
DROP TABLE T1
CREATE TABLE T1( name varchar(10) )
ALTER TABLE T1 ADD unique(name) --已存在表的情况下加约束,不用加constraint关键字
DROP TABLE T1
联合唯一
CREATE TABLE T1( name1 varchar(10),name2 varchar(10),constraint uc_n1n2 unique(name1,name2) ) --name1和name2联合在一起唯一,约束键名为uc_n1n2
select * from T1
insert into T1 select'a','a'--(1 行受影响)
insertinto T1 select'a','a'--违反了 UNIQUE KEY 约束 'uc_n1n2'。不能在对象 'dbo.T1' 中插入重复键。
insert into T1 select'a','b'--(1 行受影响),不违反唯一约束
DROPTABLE T1
CREATE TABLE T1( name1 varchar(10),name2 varchar(10))
ALTER TABLE T1 ADD constraint uc_n1n2 unique(name1,name2) --已存在表的情况下加约束,读语法:增加_约束_约束名_唯一值约束_(联合约束列1,列2,...)
DROP TABLE T1
4.5、约束:默认值
CREATE TABLE T1( name1 varchar(10) DEFAULT '111',name2 varchar(10),d datetime DEFAULT getdate() )--name1默认值为'111',d默认值为当前时间
insert into T1(name2) values('1')
select * from T1
增加默认值
ALTER TABLE T1 ADD DEFAULT '222' FOR name2 --为列name2增加默认值
修改默认值
ALTER TABLE T1 ALTER COLUMN name1 SET DEFAULT '222'--有文章这么写,但是:关键字 'SET' 附近有语法错误。想修改,可先删再增
删除默认值
ALTER TABLE T1 ALTER name1 DROP DEFAULT --有文章这么写,但是:'name1' 附近有语法错误。
ALTER TABLE T1 DROPconstraint DF__T1__name2__7D0E9093 --知道name1列默认值约束名的情况下
--不知道约束名时,取得T1.name1列的默认值约束名,并删除
declare @cname varchar(50) --定义参数
select @cname =[name] from sysobjects t
where id=(select cdefaultfrom syscolumns where id=object_id(N'T1') and name='name1')
/*ALTER TABLE T1 DROP constraint @cname */--'@cname'附近有语法错误。@cname是字符串,而不是约束对象,提示语法出错;因此执行以下的拼接语句。
exec('ALTER TABLE T1 DROP constraint '+@csname) --删除约束;
4.6、约束:Check约束
ALTER TABLE T1 ADD CHECK (d>='2014-1-1') --约束d为2014年及以后;注意,同一约束可重复增加,没有意义又可能影响性能
ALTER TABLE T1 ADD CONSTRAINT check_dn CHECK (d>='2014-1-1' AND len(name1)=3) --多列检查约束,d为2014年之后,name1长度为3
- MSSQL示例(一)DDL
- SQL总结之常用DDL(MSSQL)
- DDL语句(一)
- MSSQL的【全文检索】配置设置(DDL)
- 限制DDL操作(一)
- hive DDL锁(一)
- Oracle基本语法之DDL(一)
- DDL,DML,DCL示例图
- mysql 常用 ddl 语句示例
- MSSQL 性能调优心得(一)
- MSSQL示例(四)定义服务器游标VS游标变量
- Mysql数据库操作(一)----数据库(DDL)
- oracle入门之 DDL数据定义语句(一)
- 数据库语言类型(一)-数据库定义语言DDL-表
- MSSQL示例(三)ROW_NUMBER、RANK、DENSE_RANK、NTILE排名窗口函数示例
- JMF示例(一)
- redis 示例 (一)
- Jersey 示例(一)
- 第17周 oj 98776》》》》》》》9-6=3 while
- 各种RGB格式转换
- MTK Android 之MT6577驱动笔记
- Linux多线程编程时如何查看一个进程中的某个线程是否存活
- 第17周项目6--学生成绩统计(4)!!!
- MSSQL示例(一)DDL
- Unity中Screen类
- java -classpath or -cp 的设置和解释
- 第17周项目6-学生成绩统计(2)
- android高仿今日头条 --新闻阅读器
- Spring+SpringMVC+Hibernate整合+入门笔记
- SQL Server BOM展开方法整理
- 漫谈如何学习操作系统原理
- cvCopy与cvCloneImage、cvCopyimage的区别