T-SQL查询语句

Posted on 2020-06-16 13:09  留不住的时间  阅读(363)  评论(0编辑  收藏  举报

一:SQL简介

通过编写SQL语句来维护数据库便于解决重复或批量维护数据的难题

1、 SQLT-SQL

SQL是关系数据库的标准语言

a) 非过程化语言

  1. 一次只处理一个记录,对数据提供自动导航功能
  2. SQL的集合特性允许一条SQL语句的输出作为另一条SQL语句的输入
  3. SQL语句使用查询优化器,不要求用户指定数据的存放方法

b) 统一的语言

  1. Sql提供:
    1. 查询数据
    2. 在表中插入、修改、删除记录
    3. 建立、修改、删除数据对象
    4. 控制对数据和数据对象的存取
    5. 保证数据库一致性和完整性

c) 所有关系数据库的公共语言

2、 T-SQL的组成

a) 数据操纵语言:用来查询、插入、删除、修改数据库中的数据

b) 数据定义语言:从来建立数据库、数据库对象、定义列

c) 数据控制语言:控制数据库组件的存取许可、存取权限等

二:使用T-SQL语句操作数据表

1、 插入数据:INSERT

a) 语法:INSERT  [INTO]  <表名>  [列名]  VALUES  <值列表>

  1. [into] 是可选的,可以省略
  2. 表名是必须的,表的列名可选的
  3. 多个列名和多个值列表用逗号分隔

b) 注意:

  1. 每次插入一整行数据
  2. 数据值的数目必须与列数相同,数据类型和精度与列匹配
  3. Insert语句不能为标识列指定值
  4. 对于字符类型的列,当插入数据的时候,需要使用单引号
  5. 如果表中某列不能为空,则该列必须插入数据
  6. 插入数据要符合check约束的要求
  7. 尽量明确指定插入的列和对应的值

2、 更新数据:UPDATE

a) 语法:UPDATE  <表名>  SET  <列名=更新值>  [WHERE  <更新条件>]

  1. SET后面可以紧随多个数据列的更新值,不限一个
  2. WHERE子句是可选的,用来限制条件,如果不限制,则整个表的所有数据行将被更新

3、 删除数据:DELETE

a) 使用delete语句删除表中的数据

  1. 语法:DELETE  FROM  <表名>  [WHRER  <删除条件>]

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

  1. 语法:truncate  table  <表名>

c) 区别:

  1. Truncate  table语句不带where子句,只能将整个表数据清空,

Delete语句带where子句,可以按条件删除某些数据

  1. Truncate  table语句不记录事务日志,

Delete语句记录所有事务日志

  1. Truncate  table删除表中所有行,标识行会重置为0

Delete语句不会重置标识列

  1. Truncate table语句不能用于有外键约束引用的表,

Delete可以

  1. Truncate  table语句执行速度更快,适用于清空大量数据,且不需要恢复

三:使用T-SQL查询数据

1、 SELECT语法结构

a) 语法:SELECT  <列名>  FROM  <表名>  WHERE  <查询限定条件>

b) 语法:

SELECE  select_list

[INTO  new_table_name]

FROM  table_name

[WHERE  search_conditions]

[GROUP  BY  group_by_expression]  [HAVINS  search_conditions]

[ORDER  BY  order_expression  [ASC | DESC]  ]

  1. 说明:
    1. Select子句:指定查询内容。
    2. Select_list:指定查询字段列表
    3. INTO子句:可选,把查询结果存放到一个新表中
    4. FROM子句:指定查询源
    5. WHERE子句:可选,查询条件
    6. GROUP BY子句:可选,指定查询结果的分组条件
    7. HAVING子句:可选,指定分组搜索条件
    8. ORDER  BY子句:可选,指定查询结果的排序方式,ASC:升序,DESC:降序

2、 表达式

a) 条件表达式

  1. 表达式中包含一个或多个参数:
    1. 常量:表示单个指定数据值的符号,小写字母、大写字母、数字、特殊符号。字母、日期和时间需要单引号括起来
    2. 列名:表中列的名称,表达式中仅允许使用列的名称
    3. {一元运算符}:仅有一个操作数的运算符,“+”正数。“—”负数,“~”补数
    4. {二元运算符}:将两个操作数组合执行操作的运算符,算数运算符、赋值运算符(=),位运算符,比较运算符,逻辑运算符,字符串串联运算符(+

比较运算符

=

等于

>

大于

<

小于

>=

大于等于

<=

小于等于

<>

不等于

!=

不等于

Between

指定值的的包含范围(包含边界),使用and分隔开始值和结束值

is [not] null

指定是否搜索空值或非空值

Like

模糊查询,与指定字符串进行模糊匹配

in

是否在数据范围里面

 

 

通配符

‘_’

任何单个字符

%

任意长度的字符串

[]

括号中所指定范围内的一个字符

[^]

不在括号中所指定范围内的任意一个字符

 

a) 逻辑表达式

a) 当一个语句中用了多个逻辑运算符时,先求not的值,然后求and的值,最后求or的值

逻辑运算符

Not

取反

And

并且

Or

或者

 

3、 查询举例

a) 查询表中所有列

  1. Select  *  from  表名

b) 查询表中特定列

  1. Select  列名,列名  from  表名

c) 查询表中特定行——条件查询

  1. Select  *  from  表名  where  条件

d) 限制查询返回的行数

  1. Select  top  数字  *  from  表名

e) 改变查询结果集列名称

  1. Select  列名 AS 新列名  from  表名
  2. Select  列名  新列名  from  表名
  3. Select  新列名=列名  from  表名

f) 查询结果排序

  1. Select  *  from  表名  order  by  列名  [ASC | DESC]

g) 查询时去重

  1. Select  distinct  列名  from  表名

h) 综合查询

4、 使用SELECT生成新数据

a) Select使用into关键字

  1. Select使用into关键字可以从一个表中选择一些数据插入新表中,新表自动生成
  2. Select  列名,列名,列名  into  新表名  from  旧表名

b) insert使用select子句

  1. 可以将现有表中数据添加到新标中,新表需要提前创好
  2. Insert  into 新表名 (列名,列名,列名)  select  列名,列名,列名  from  旧表名  where  条件

c) 使用union关键字

  1. 用于将多个不同的数据或查询结果合并成一个新的结果集
  2. 不同的数据或查询结果要求数据个数、顺序、数据类型都一致
  3. 需要提前创建新表
  4. Insert  into  新表  (列名1,列名2,列名3)

Select  ‘1’,’2’,’3’  union

Select  ‘1’,’2’,’3’  union

Select  列名1,列名2,列名3  from  旧表名