T-SQL编写SQL语句进行数据库和数据表的操作

数据库管理

创建数据库

  1. Window系统下创建文件夹D:\JXGLSYS\DATA

  2. 打开Microsoft SQL Server Managemant Studio集成环境窗口,单击“新建查询”

  3. 输入命令(以绩效管理系统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%  --定义文件增长的递增方式
    )
    
  4. 运行,弹出窗口,创建成功

image-20210321172925118

数据库更名

--新建查询
EXEC sp_renamedb <原有数据库名>,<修改数据库名>

删除数据库

--新建查询
DROP DATABASE <数据库名>

数据表管理

创建表

--新建查询
USE <数据库名> --在数据库中操作
CREATE TABLE <表名>  --创建表
(
<列名1> <数据类型> <列级完整性约束>, 
<列名2> <数据类型> <列级完整性约束>,
.....
)
[ON <filegroup>|<"default">] --指定default或者没有指定ON,存储于默认文件夹

列级完整性约束

  1. **默认值约束——DEFAULT 常量表达式 **

    若在表中定义了默认值约束,用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL。

  2. 非空值约束——NULL/NO NULL

  3. **主键约束——PRIMARY KEY **

    主键列不能为空

  4. 外键约束——FOREIGN KEY REFERENCES <父表名>(主键列名)

  5. 唯一性约束——UNIQUE

    唯一约束确保表中的一列数据没有相同的值。与主键约束类似,唯一约束也强制唯一性,但唯一约束用于非主键的一列或者多列的组合,且一个表可以定义多个唯一约束。

  6. 检查约束——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\')

image-20210323114726477

建立表的联系

image-20210325183725747

image-20210321191328838

表中数据的维护

插入新数据

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(生日)

版权声明:本文为-SuPer原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/-SuPer/p/14510915.html