SQL Server创建数据库和表
T-SQL编写SQL语句进行数据库和数据表的操作
数据库管理
创建数据库
-
Window系统下创建文件夹D:\JXGLSYS\DATA
-
打开Microsoft SQL Server Managemant Studio集成环境窗口,单击“新建查询”
-
输入命令(以绩效管理系统JXGL举例)
CREATE DATABASE JXGL --创建数据库JXGL ON ( NAME = JXGL, --用来定义数据库的逻辑名称,可用于T-SQL代码中引用数据库 FILENAME = \'D:\JXGLSYS\DATA\JXGL.mdf\', --用于定义数据库文件在硬盘上的存放路径与文件名称 SIZE = 5, --定义数据文件的初始大小 FILEGROWTH = 1 --定义文件增长的递增量 ) LOG ON ( NAME = JXGL_log, FILENAME = \'D:\JXGLSYS\DATA\JXGL_log.ldf\', SIZE = 2, MAXSIZE = 20, --用于设置数据库允许达到的最大长度 FILEGROWTH = 10% --定义文件增长的递增方式 )
-
运行,弹出窗口,创建成功
数据库更名
--新建查询
EXEC sp_renamedb <原有数据库名>,<修改数据库名>
删除数据库
--新建查询
DROP DATABASE <数据库名>
数据表管理
创建表
--新建查询
USE <数据库名> --在数据库中操作
CREATE TABLE <表名> --创建表
(
<列名1> <数据类型> <列级完整性约束>,
<列名2> <数据类型> <列级完整性约束>,
.....
)
[ON <filegroup>|<"default">] --指定default或者没有指定ON,存储于默认文件夹
列级完整性约束
-
**默认值约束——DEFAULT 常量表达式 **
若在表中定义了默认值约束,用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL。
-
非空值约束——NULL/NO NULL
-
**主键约束——PRIMARY KEY **
主键列不能为空
-
外键约束——FOREIGN KEY REFERENCES <父表名>(主键列名)
-
唯一性约束——UNIQUE
唯一约束确保表中的一列数据没有相同的值。与主键约束类似,唯一约束也强制唯一性,但唯一约束用于非主键的一列或者多列的组合,且一个表可以定义多个唯一约束。
-
检查约束——CHECK (<逻辑表达式>)
Check约束通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围。在列中更新数据时,所要输入的内容必须满足Check约束的条件,否则将无法正确输入。
例子
USE JXGL --在JXGL数据库中操作
CREATE TABLE 学生 --创建表学生
(
学号 varchar(20) PRIMARY KEY, --设置主键
姓名 varchar(8) NOT NULL, --设置非空
性别 char(2) NOT NULL,
生日 date,
系编号 varchar(10) DEFAULT \'001\' --设置默认值001
)
CREATE TABLE 教师
(
教师编号 varchar(20) PRIMARY KEY,
姓名 varchar(8) NOT NULL,
职称 varchar(10) NOT NULL,
性别 char(2) NOT NULL
CHECK(性别 in(\'男\',\'女\')), --CHECK约束
系编号 varchar(10) NOT NULL
)
CREATE TABLE 课程
(
课程号 varchar(10) PRIMARY KEY,
课程名 varchar(20) NOT NULL,
学分 float NOT NULL,
先修课 varchar(20)
)
CREATE TABLE 选修
(
学号 varchar(20) FOREIGN KEY REFERENCES 学生(学号),
课程号 varchar(10) FOREIGN KEY REFERENCES 课程(课程号),
成绩 float NOT NULL,
)
删除表
USE <数据库名>
DROP TABLE <表名>
修改表结构
增加列
ALTER TABLE <表名>
ADD <列名1> <数据类型> <约束>,
ADD <列名2> <数据类型> <约束>
删除列
ALTER TABLE <表名>
DROP COLUMN <列名>
修改列
ALTER TABLE <表名>
ALTER COLUMN <列名> <数据结构> <约束>
增加约束
ALTER TABLE <表名>
ADD CONSTRANT <约束名> <约束>
删除约束
ALTER TABLE <表名>
DROP CONSTRAINT <约束名>
例子:增加列
USE JXGL
ALTER TABLE 课程
ADD 类别 varchar(10) NOT NULL,
例子:增加约束
USE JXGL
ALTER TABLE 学生
ADD CONSTRAINT CK_学生 check(性别 in(\'男\',\'女\'))
测试:
USE JXGL --测试,数据后面补齐
INSERT INTO 学生
VALUES(\'456\',\'朱小七\',\'鬼\',\'2021-03-21\',\'2021\')
建立表的联系
表中数据的维护
插入新数据
INSERT INTO <表名>(<列名1>,<列名2>) VALUES(列名1数据,列名数据)
例子
USE JXGL
INSERT INTO 学生(学号,姓名,性别,生日)
VALUES(\'001\',\'朱小七\',\'男\',\'2021-3-21\')
删除数据
DELETE FROM <表名>
[WHERE <逻辑表达式>] --满足条件都会被删除
修改数据
UPDATE <表名>
SET <列名>=<表达式>
[WHERE <逻辑表达式>]
例子:在学生表中新增一列‘年龄’
增加列名
ALTER TABLE 学生
ADD 年龄 INT
为年龄增加数据
UPDATE 学生
SET 年龄 = YEAR(GETDATE())-YEAR(生日)