SQL Server 2000 (SP4)笔记整理(二):数据库表
摘要:SQL Server 2000 (SP4)笔记整理(二):数据库表
--==========================================================--
-- 作者:彭建军
-- 日期:2005-06-22
-- 页面:Page2
-- 概要:数据库表的创建、修改、删除以及默认值、CHECK、IDENTITY
-- 说明:以下示例均在[查询分析器]下进行,可配合图形界面进行测试
--==========================================================--
USE Master
GO
--检查是否存在测试表,若存在,则删除之
IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = U AND NAME = MyTestTable1)
DROP TABLE MyTestTable1
GO
CREATE TABLE MyTestTable1
(
编号 INT PRIMARY KEY NOT NULL IDENTITY(1,1),
姓名 CHAR(8),
别名 VARCHAR(8),
性别 CHAR(2) DEFAULT (男),
年龄 INT CHECK(年龄>0 AND 年龄<100),
)ON [PRIMARY]
GO
--插入数据:
/*
下面的语句将不能执行,因为 [编号] 列为系统自动自增列。
INSERT INTO MyTestTable1(编号,姓名,别名,性别,年龄)
VALUES (1,彭建军,彭建军,男,25)
GO
在当 IDENTITY_INSERT 设置为 OFF 时,不能向表 MyTestTable1 中的标识列插入显式值。
*/
--正确的语句,方法一
INSERT INTO MyTestTable1(姓名,别名,性别,年龄)
VALUES (彭建军,彭建军,男,25)
GO
--方法二:
INSERT INTO MyTestTable1(姓名,别名,性别,年龄)
SELECT 老转,老转,男,30 UNION ALL
SELECT 钱妮,妮子,女,28
GO
--查询数据(注意编号的自增性)
SELECT * FROM MyTestTable1
GO
/*
结果集
编号 姓名 别名 性别 年龄
----------- -------- -------- ---- -----------
1 彭建军 彭建军 男 25
2 老转 老转 男 30
3 钱妮 妮子 女 28
*/
--验证 默认值,不插入[性别]的值,则系统取默认值
INSERT INTO MyTestTable1(姓名,别名,年龄)
SELECT 潘颖,梨窝浅笑,25
GO
--查询
SELECT * FROM MyTestTable1 WHERE 姓名 = 潘颖
GO
/*
结果集
编号 姓名 别名 性别 年龄
----------- -------- -------- ---- -----------
4 潘颖 梨窝浅笑 男 25
*/
--验证 CHECK,插入[年龄]的值超过100,则系统报错
INSERT INTO MyTestTable1(姓名,别名,性别,年龄)
SELECT 蛋蛋,蛋蛋,女,120
GO
/*
结果集
INSERT 语句与 COLUMN CHECK 约束 CK__MyTestTable1__年龄__30B91D22 冲突。该冲突发生于数据库 master,表 MyTestTable1, column 年龄。
语句已终止。
*/
--修改表
--增加列
ALTER Table MyTestTable1
ADD 备注 VARCHAR(50)
GO
--修改列定义
ALTER Table MyTestTable1
ALTER COLUMN 备注 VARCHAR(100)
GO
--清空表的数据
--方法一(删除的数据将记入日志)
DELETE FROM MyTestTable1
GO
--如果是删除特定的行,则类似于 DELETE FROM MyTestTable1 WHERE 编号 = 1
--方法二(删除的数据不记入日志,执行效率高)
TRUNCATE TABLE MyTestTable1
GO
--删除表(谨慎使用!)
DROP TABLE MyTestTable1
GO