在对数据进行管理时,使用SSMS进行数据维护有可视化、方便的优点,但是在批量维护或重复维护时,使用SSMS就不方便了,还容易出错,这就需要编写SQL语句对数据库进行维护



SQL和T-SQL

    SQL是Structured Query Language的缩写,即结构化查询语言,是关系数据库的标准语言。如今Oracle、Sybase、Informix、SQL Server这些大型数据库管理系统都支持SQL作为查询语言

    T-SQL是SQL的加强版,除了标准的SQL命令外,还支持类似于程序语言的基本功能,如流量控制、变量说明、功能函数等

    T-SQL语言主要由以下几部分组成:

  DML(Data Manipulation Language,数据操纵语言):用来查询、插入、删除、修改数据库中的数据,如select、insert、update、delete

  DDL(Data Definition Language,数据定义语言):用来建立数据库、数据库对象和定义其列,大部分命令以create开头的命令,如create、alter、drop

  DCL(Data Control Language,数据控制语言):用来控制数据库组件的存取许可、存取权限等,如grant、revoke


插入数据(INSERT)

    使用INSERT语句将数据库插入到表中,语法格式如下:

insert [into] 表名 [列名] values 值列表

其中

* into是可选的,可省略

* 表名是必须的,而表的列名是可选的,如省略,值列表的顺序与数据表中字段顺序保持一致

* 多个列名和值列表用逗号分隔


例如:向学生成绩表中插入一行数据,可以使用如下T-SQL语句

   SQL语句的执行一般在查询窗口中进行,单击“新建查询”按钮,选择数据库,输入SQL语句,如下图所示:


e6524d25b92af0298267d12b4f3e0fb4.png


    在SSMS中单击“√”,系统会检查输入的T-SQL语句是否有语法错误,之后会显示分析结果,如果无误,单击执行,可以执行T-SQL语句,然后显示执行结果,如下图所示:

91e731f4f9129426fac11bd559f5c458.png


    在插入数据时,需要注意以下事项:

(1)每次插入一整行数据,不可能只插入半行或者几列数据

(2)数据值的数目必须与列数相同,每个值的数据类型、精度、小数位也不需与相应的列匹配

(3)对于字符类型的列,必须使用单引号

(4)插入的数据项要求符合CHECK约束的要求



更新数据(UPDATE)

    使用UPDATE语句更新表中的数据,语法格式如下:

update 表名 set 列名=更新值 [where 更新条件]

其中

* set后面可以紧随多个数据列的更新值,不限一个

* where是可选的,用来限制条件,如果不限制,整个表所有数据行都将被更新


例如:更改学生成绩表中学生杨凡的CNT为95,SQL为77,可以使用如下T-SQL语句,如下图所示

c83e49a38c1a4f3696c241e11280ec71.png



删除数据

(1)使用DELETE语句删除表中的数据

    delete语法格式如下

delete from 表名 [where 删除条件]

* 如果不用where,将删除表中所有数据


例如:删除学生成绩表中学生张三的记录,可以使用如下T-SQL语句

7f6de80c653d0f5d8b833e82cea3df8b.png


注意:delete语句用于删除整条记录,不会只删除单个字段,所以在delete后面不能出现字段名


(2)使用Truncate table语句删除表中的数据

    Truncate table语句用来删除表中所有行,功能上类似于,没有where子句的delete语句, Truncate table语法格式如下:

truncate table 表名


Truncate table语句与DELETE语句的区别如下:

Truncate table语句不带where,只能将整个表数据清空,而DELETE语句可以按照条件删除某些记录

Truncate table语句不记录事务日志,删除后无法通过事务日志恢复;而DELETE语句每删除一行记录,都会记录一条事务日志。

Truncate table语句不能用于有外键约束引用的表,这种情况下,需要使用DELETE语句

    综上所述,Truncate table语句执行速度更快,在情况大量数据表作业时,DBA常用此语句,但在执行前要确保数据可以删除,否则无法恢复