操作环境:MS SQL Server 2008 R2

- 创建数据库

CREATE DATABASE Library ON PRIMARY(
NAME = 'Library_DB', 
FILENAME = 'f:\sql\library.mdf',
SIZE = 5mb,
MAXSIZE = unlimited,
FILEGROWTH = 10%)
LOG ON (
NAME = 'Library_LOG', 
FILENAME = 'f:\sql\library.ldf',
SIZE = 5mb)
• on primary表示分组为primary(默认就是,可不写) 
• name表示逻辑名,即数据库中显示的名
• filename是物理名,数据库文件保存的名字
• size是初始大小 
• maxsize指文件最大容量 
• filegrowth是文件大小增长速度
• log on表示开启日志,其他含义同上

- 创建数据表

CREATE TABLE Readers (
CardNum int not null identity(1, 1) primary key,
Name VARCHAR(50) NOT NULL,
Age INT,
Gender BIT NOT NULL,
BorrowNum INT DEFAULT 0)

参考:

CREATE TABLE [表名] ( [字段名]  数据类型    条件/约束 )

PS:以逗号分隔

  • NOT NULL表示不允许为空
  • identity(1, 1)表示初始值为1,每次自增1
  • primary key表示主键约束,不允许本列的值相同
  • default 0表示设置默认值为0

- 插入数据(增)

INSERT Readers VALUES('多啦A梦', 7, 'TRUE', 8)
INSERT Readers (Name, Age, Gender, BorrowNum) VALUES('野比大雄', 888, 'TRUE', 0)

参考

#1:INSERT [表名] VALUES (值1, 值2, ···, 值n)
#2:INSERT [表名] (列名1, 列名2, ···, 列名n) VALUES (值1, 值2, ···, 值n)
  • 根据已建的Readers表,CardNum为自动增长,所以不需要插值
  • 除此之外,其他列全部需要插值,可不指定列名,则代码如#1
  • 若指定插入哪几列的值,使用#2

- 给已建表添加约束

约束类型

• 主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空。
• 唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。
• 检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束。
• 默认约束(Default Constraint):某列的默认值,如我们的男性同学较多,性别默认为男。
• 外键约束(Foreign Key):用于在两表之间建立关系需要制定引用主表的哪一列。

插入数据的例子中,有一条插入年龄为888岁的大雄,显然是不太科学的。
表设计时没有添加约束,那么可以在表创建后再对其字段添加约束,如给Age添加范围检查约束

alter table Readers 
add constraint CK_ReadersAge check(Age between 6 AND 120)

具体例子来自参考博客

//添加主键约束
alter table stuInfo
add constraint PK_stuNo primary key(stuNo)

//添加唯一键约束
alter table stuInfo
add constraint UQ_stuID unique(stuID)

//添加默认约束
alter table stuInfo
add constraint DF_stuAddress default('地址不详') for stuAddress

//添加检查约束
alter table stuInfo
add constraint CK_stuAge check(stuAge between 15 and 40)

//添加外键约束
alter table stuInfo
add constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo)

//删除约束
alter table 表名 drop constraint 约束名

参考

alter table [表名] 
add constraint [约束名] [约束类型]([字段名] [具体约束说明])
  • 使用了check约束检查age的年龄是否超出某个范围
  • Age是Readers表中需要约束的字段名
  • CK_ReadersAge是自己取的约束名
  • 使用between约定值的范围(6,120)

- 删除指定行数据

delete Readers where Name = '野比大雄'

参考

delete [表名] where [字段] = [值]
  • where关键字用于指定条件,等同于 如果 Readers表中的Name的值是’野比大雄’,那么删了它。

- 更新指定位置的数据

update Readers set Age = 8, Name = 'harry' WHERE Name = '多啦A梦'

参考

update [表名] set [字段] = [值], [字段] = [值] WHERE [条件字段] = [条件值]
  • update更新Readers表
  • set设置age的值为8,name的值为harry
  • where如果原来的name是多啦A梦的话

- 查询数据

SELECT * FROM Readers
SELECT Name FROM Readers WHERE BorrowNum <> 0

PS:*号表示查询表中所有字段

参考

SELECT [字段名] FROM [表名] WHERE(可选) [条件]
  • 查询Readers表中所有字段所有值
  • 查询Readers表中BorrowNum的值不为8的读者姓名

END