Windows server 2016——SQL server T-SQL查询语句

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,独享型 2核4GB
简介: Windows server 2016——SQL server T-SQL查询语句

介绍

SQL Server是由微软公司开发的关系型数据库管理系统,现在是全世界主流数据库之一。它具备方便使用、可伸缩性好、相关软件集成程度高等优势,能够从单一的笔记本上运行或以高倍云服务器集群为基础,或在这两者之间任何一种方式上运行。

一.SQL简介

1.SQL和T-SQL

SQL (结构化查询语言)

  • 关系数据库的标准语言
  • 非过程化语言
  • 统一的语言

T-SQL是Transact-SQL的缩写,是SQL在Microsoft SQL Server上的增强版,它是用来让应用程序与SQL Server沟通的主要语言。T-SQL提供标准SQL的DDL和DML功能,加上延伸的函数、系统预存程序以及程式设计结构(例如 IF 和 WHILE)让程式设计更有弹性。


2.T-SQL的组成

DML:数据操纵语言

  • 查询,插入,删除和修改数据

DDL:数据定义语言

  • 建立数据库,数据库对象和定义其列

DCL:数据控制语言

  • 控制数据库组件的存储许可,储存权限等

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

1.插入数据

insert [INTO] <表名> [列名] values <值列表>
#      可选    必须   可选
  • 如果省略[列名]<值列表>与表中字段的顺序保持一致
  • 多个列名和多个值列表用逗号分隔

例:

employee表中插入一行数据

insert into employee (姓名, 身份证号, 职务, 出生日期, 基本工资) 
    VALUES ('郭靖', '111222333444555666', 
                    '运维工程师, '1995/1/1', 8000)

2.更新数据

UPDATE  <表名>  SET  <列名 = 更新值>  [WHERE  <更新条件>]
#                                    可选,用来限制更新条件
  • 如果省略WHERE字句,表中所有数据行将被更新

例:

更改employee表中黄蓉的基本工资为11000

update employee SET 基本工资='11000' 
WHERE 姓名='黄蓉'

3.删除数据

(1)DELETE语句

DELETE  FROM  <表名>  [WHERE <删除条件>]
#                     可选的, 用来限制删除条件
  • 如果省略WHERE字句,表中所有数据行将被删除

例:

删除employee表中杨过的记录

DELETE FROM employee WHERE 姓名='杨过'

(2)Truncate Table语句

Truncate  table <表名>

例:

删除employee表中的所有记录行

Truncate  table  employee

(3)Delete和Truncate table区别

条件删除

记录事物日志

重置标识符列

外键约束

Delete

使用where子句按条件删除

是,数据可以恢复

可以用于含有外键约束的表

Truncate table

只能清空整个表

否,数据无法恢复

重置标识符列为0

不能用于含有外键约束的表

  • Truncate Table执行速度更快,用于清空大数据量表
  • 在执行Truncate Table前要确保数据可删除

三.使用使用T-SQL语句查询数据

1.select 语法结构

SELECT select_list   指定查询内容
[INTO new_table_name]  把查询结果存放到一个新表中
FROM table_name   指定查询源
[ WHERE search_conditions ]   指定查询条件
[GROUP BY group_by_expression]   指定查询结果的分组条件
[HAVING search_conditions]  指定分组搜索条件,与GROUP BY子句一起使用
[ORDER BY order_expression [ASC|DESC] ]  指定查询结果的排序方式

2.条件表达式

  • 不等于:<>或!=
  • 指定值包含的范围:between... and .….
  • 是否为空:isnull
  • 模糊查询:like ,常与通配符%和_使用。
  • 在数据范围里面:in()

比较运算符

含义

=

等于

>

大于

<

小于

>=

大于或等于

<=

小于或等于

<>

不等于

!=

不等于

BETWEEN

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

IS [Not] NULL

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

LIKE

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

IN

是否在数据范围里面

3.逻辑表达式

用逻辑运算符将条件连接起来

运算结果是一个逻辑值

  • TRUE FALSE

逻辑运算符

含义

AND

组合两个条件,并在两个条件都为True时取值为True

OR

组合两个条件,并在两个条件之一为 True 时取值为True

NOT

和其他操作符一起使用,取反的操作

4.查询列

查询表中所有列

SELECT * FROM table_name

查询employee表中的所有员工信息、

SELECT * FROM employee

例:

查询employee表中姓名、职务、基本工资列的内容

SELECT 姓名,职务,基本工资 FROM employee

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

SELECT select_list FROM table_name WHERE search_conditions

例:

查询所有运维工程师的姓名

SELECT 姓名 FROM employee WHERE 职务=’运维工程师’

查询基本工资8000~10000的员工所有信息

SELECT * FROM employee 
WHERE 基本工资 BETWEEN 8000 AND 10000

查询基本工资<10000>20000的员工所有信息

SELECT * FROM employee 
WHERE 基本工资<10000 OR 基本工资>20000

查询基本工资为800090001000的员工所有信息

SELECT * FROM employee WHERE 基本工资 IN (8000,9000,10000)

查询身份证号以66开头的员工所有信息

SELECT * FROM employee WHERE 身份证号 LIKE “66%”

查询姓杨的运维工程师的信息

SELECT * FROM employee 
WHERE 姓名 LIKE '杨%' AND 职务=’运维工程师’

查询备注不为空的员工所有信息

SELECT * FROM employee WHERE 备注 is not NULL

查询employee表中前5行的数据

SELECT top 5 * FROM employee

5.改变查询结果集列名称

SELECT column_name AS column_alias    FROM table_name
#                  改变结果集的列名称

列:

查询employee表中姓名和身份证号两列数据

SELECT 姓名 AS name, 身份证号 as idcard  FROM employee

6.查询结果排序

SELECT select_list 
FROM table_name 
ORDER BY column_name [  ASC  |   DESC ]
#                      升序      降序

默认是升序(ASC)排列

例:

查询employee表中所有员工信息,按照基本工资从高到低显示查询结果

SELECT * FROM employee ORDER BY 基本工资 DESC

查时去重

SELECT DISTINCT column_name FROM table_name

查询employee员工的所有职务

SELECT DISTINCT  职务 FROM employee

7.使用SELECT生成新数据  

SELECT使用INTO关键字

SELECT select_list  INTO new_table_name #把一个表中的数据经过筛选插入到另一个表中
FROM table_name

例:

employee表中所有员工的姓名、身份证号和职务生成一个新表new01

SELECT 姓名,身份证号,职务 INTO new01 FROM employee

使用UNION关键字

INSERT  INTO table-name  [column_name] 
SELECT select_list1   UNION
SELECT select_list2   UNION
……
SELECT select_listn

UNION 将多个不同的数据或查询结果合并成一个新的结果集

employee表中所有员工的姓名、职务和出生日期,以及新输入2名员工相关信息,一起保存到新表new03

INSERT INTO new03 (姓名,职务,出生日期) 
SELECT '欧阳锋','人事经理','1988-08-08' UNION
SELECT '一灯','财务经理','1977-07-07' UNION
SELECT 姓名,职务,出生日期 FROM employee

实战案例

素材:SQL server 2008 素材

  • 3、查询employee 表中的所有员工信息
  • 4、查询employee表中姓名、职务、基本工资列的内容
  • 5、查询所有运维工程师的姓名
  • 6、查询基本工资为8000~10000的员工所有信息
  • 7、查询基本工资<10000或>20000的员工所有信息
  • 8、查询基本工资为8000、9000和1000的员工所有信息
  • 9、查询身份证号以66开头的员工所有信息
  • 10、查询姓杨的运维工程师的信息
  • 11、查询备注不为空的员工所有信息
  • 12、查询employee表中前5行的数据
  • 13、查询employee表中“姓名”和“身份证号”两列数据,查询结果“姓名”列名称显示为“name”,“身份证号”列名称显示为“idcard”
  • 14、查询employee表中所有员工信息,按照基本工资从高到低显示查询结果
  • 15、查询employee表中有哪些职务(去除重复的职务)
  • 16、在employee表中列出满足身份证号的左起第三位是0、除CTO以外的,所有员工的姓名、身份证号、职务和基本工资,其中姓名字段显示为name,查询结果按照基本工资的由高到低排列。
  • 17、将employee表中所有员工的姓名、身份证号和职务生成一个新表new01
  • 18、将employee表中所有基本工资大于等于15000的员工的姓名、职务和出生日期保存到新表new02。(提前先创建表new02)
  • 19、将employee表中所有员工的姓名、职务和出生日期,以及新输入2名员工相关信息,一起保存到新表new02。(提前先创建表new02)
  • 新输入的2名员工信息如下:
  •    '欧阳锋','人事经理','1988-08-08'
  •    '一灯','财务经理','1977-07-07'
相关实践学习
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
8天前
|
SQL 运维 监控
MSSQL性能调优实战:索引优化、SQL查询效率提升与并发控制策略
在Microsoft SQL Server(MSSQL)的日常运维与性能优化中,精准的策略与技巧是实现高效数据库管理的关键
|
8天前
|
SQL 监控 数据库
MSSQL性能调优实战技巧:索引优化策略、SQL查询重构与并发控制详解
在Microsoft SQL Server(MSSQL)的管理与优化过程中,性能调优是确保数据库高效运行的关键环节
|
8天前
|
SQL 运维 监控
MSSQL性能调优实战:索引深度优化、SQL查询技巧与高效并发控制
在Microsoft SQL Server(MSSQL)的运维环境中,性能调优是确保数据库高效、稳定运行的核心任务
|
8天前
|
SQL 监控 数据库
MSSQL性能调优实战:索引策略优化、SQL查询重写与高效并发管理的具体技巧
在Microsoft SQL Server(MSSQL)的性能调优过程中,索引策略的优化、SQL查询的重写以及高效并发管理是关键环节
|
8天前
|
SQL 运维 监控
MSSQL性能调优实战:索引精细化构建、SQL查询深度优化与高效并发控制策略
在Microsoft SQL Server(MSSQL)的运维与优化过程中,索引的精细化构建、SQL查询的深度优化以及高效并发控制策略是提升数据库性能的关键
|
8天前
|
SQL 运维 监控
MSSQL性能调优实战:索引策略优化、SQL查询重写与智能锁管理
在Microsoft SQL Server(MSSQL)的运维中,性能调优是确保数据库高效运行、满足业务需求的关键环节
|
5天前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。
|
5天前
|
SQL 存储 关系型数据库
提升SQL查询效率的终极指南
在面试中,SQL调优是考察点,涉及理解与实践。调优步骤包括问题定位、分析及优化。问题可能源于慢查询、性能下降等。分析涉及索引利用、多表连接、查询字段过多等。优化可能需改进索引设计、减少JOIN、优化表结构、数据归档、分库分表、调整参数等。例如,低区分度字段的索引有效性取决于数据分布,不一定是性能瓶颈。数据库参数如`innodb_buffer_pool_size`、`innodb_io_threads`等调整也能提升性能。
|
8天前
|
SQL 监控 数据库
|
8天前
|
SQL 监控 Serverless
MSSQL性能调优实战:索引精细化构建、SQL查询深度优化与并发管理策略
在Microsoft SQL Server(MSSQL)的性能调优实践中,索引的精细化构建、SQL查询的深度优化以及高效的并发管理策略是提升数据库性能不可或缺的三大支柱