T-SQL语句简单查询
1.T-SQL语句的组成。
T-SQL语言主要由以下几个部公组成:
1.1 DML(数据操作语言):用来查询、插入、删除和修改数据库中的数据,如Select 、Insert 、 Update及Delete等。
1.2 DCL(数据控制语言):用来控制数据库组件的存取许可和权限等,如Grant 、Revoke等。
1.3 DDL(数据定义语言):用来建立数据库、数据库对象和定义其列,大部分是以Greate开头的命令,如Greate Table 、Greate View 、Drop Table等。
2.T-SQL的查询原理:
查询是针对表已经存在的数据行而言的,查询的过程其实就是“筛选”的过程。
数据表在接受查询请求时,进行逐行选取,将符合查询条件的提取出来,然后把所有被选取的行组织在一起,形成一个类似表的结构,而这个表中的数据就是查询的结果,通常叫做记录集(RecordSet)。
3.T-SQL语句使用的语法:
T-SQL语法有四个分别注释如下:
3.1 Select语法
Select select__list from Table__list [where子句] [order by 子句(ASC | DESC)]
n --select__list为字段列表,也可以说是要查询显示的内容,可以有多个字段列表一起查询--
n --Table__list 为表名,是要查询的表的表名。--
n -- [where子句]是指在”Where 后面为要查询的条件的条件表达式或逻辑表达式。--
n --[order by 子句(ASC | DESC)]是指查询结果按照某字段排序的字段列表,其中ASC表示升序、DESC表示降序。--
3.1.1在T-SQL语法中所用到的“比较运算符”
运算符 | 含义 |
= | 等于 |
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
<> | 不等于 |
!= | 不等于 |
Between | 指定值的包含范围(包含边界);between 开始值 and 结束值。 |
Is[not]null | 根据使用的关键字,指定是否搜索空值或非空值。如果有任何一个操作数为NULL,则包含位运算符或算术运算符的表达式的计算结果为NULL。 |
Like | 模糊查询“像什么一样”,指定字符串进行模式匹配(查询符合特征的数据) |
In | 是不在数据范围里面(In关健字用来限制范围) |
通配符
通配符 | 解释 | 示例 |
‘_’ | 一个字符 | A like ‘C_’ |
% | 任意长度的字符串 | B like ‘Cr_%’ |
[] | 括号中所指定范围内的一个字符 | C like ‘8x0[1-2]’ |
[^] | 不在括号中所指定范围内的任意一个字符 |
|
逻辑运算符
操作符 | 说明 |
Not | 和其它操作符一起使用,取反的操作 |
And | 组合两个条件,并在两个条件都为True时取值为True |
Or | 组合两个条件,并在两个条件之一为True时取值为True |
3.2 Insert语法
Insert into <表名> [列名] values <值列表>.
--into 是可选的,可要可不要.—
--表名 必须要有(要插入数据的表)--
--列名 也是可选的,但省略时, <值列表>中的数据必须和数据表中的字段顺序一致,(多个列名和多个值列表用逗号分开)—
例:
insert into table_1 (username,userpasspwd,phonenumber) values (张三,123456,13401138741)
表示在表table_1中插入一行数据” 张三,123456,13401138741”分别对应以下三列插入
“username,userpasspwd,phonenumber”.
注意:
1. 在插入数据时每次都是插入一整行数据不可能是半行或几列数据.
2. 数据值的数目必须与列数相同,每个数据值的类型、精度和小数位数也必须与相应的列匹配。
3. INSERT语句不能为IDENTITY标识列指定值,因为它的数字是自动增长的。
4. 对于字符型的列,当插入数据的时候,用单引号将其引起来。
5. 如果在设计表的时候指定某列不允许为空,则该列必须插入数据,否则将报告错误信息。
6. 插入的数据项要求符合检查约束的要求。
扩展:
1. 通过insert…….select…….语句可以将现有表中的数据添加到新表中。
2. 通过select…….into……语句可以将现在表中的数据添加到新表中。
3. 通过Union关健字合并数据进行插入。
3.3 Update 语法
Update <表名> set <列名 = 更新值> [Where <更新条件>]
--set 后面可以紧随多个数据列的更新值勤。--
--where子句是可选的,用来限制条件。如果不限制,整个表的所有数据行都将被更新。--
例1:Update NEWS_table set newsource = ‘中国移动’ where newsource is null
--表示将表NEWS_table中所有新闻来源newsource为空null的记录,改为‘中国移动’。--
例2:Update NEWS_table set newsource = ‘来自:’+ newsource where newsource is not null
--在T-SQL表达式中,可以将某列值统一加上数字或字符串形成新的值。--
--在例2中就是将新闻来源全部加上“来自:”。--
注意:
在更新数据时,要注意限制条件(where 子句),否则将更新表中所有行的数据,可能导致有效数据丢失。
3.4 Delete 语法
Delete from <表名> [where<删除条件>]
例:Delete from NEWS_table where newsource like ‘%谷歌网%’
--表示删除新闻来源是“谷歌网”的所有新闻—
注意:
1. 如果要删除的行的主键值被其它表引用,将不能被删除。
2. Delete……from……只要删除就是删除整条记录,不会删除单个字段,所以在Delete后不能出现字段名。
扩展:
使用Truncate Table也可以删除数据,但它是删除表中的所有行(相当于没有where子句的Delete语句。
Truncate TableNEWS_table
Truncate与Delete的区别:
1. Truncate Table不带where子句只能将整个表清空,而Delete语句可以带where子句允许按条件删除某条记录。
2. Truncate Table不记录事务日志,而Delete无论删除多少条记录,都会每删除一行记录一条事务日志。所以Truncate Table删除后无法通过事务日志恢复。
3. Truncate Table删除表中的所有行,标识列会重置为0,而Delete不会重置标识列。
4. Truncate Table不能用于外键约束引用的表,Delete可以。
所以Truncate Table执行速度更快,在清空大数据量表作业时,DBA常用此命令。但在执行前必须确定数据可以删除,否则无法恢复。