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

2023-11-04

  • 作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 

  • 公众号:网络豆

  •  座右铭:低头赶路,敬事如仪

  • 个人主页: 网络豆的主页​​​​​

目录

写在前面

介绍

一.SQL简介

1.SQL和T-SQL

2.T-SQL的组成

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

1.插入数据

2.更新数据

​编辑 3.删除数据

(1)DELETE语句

(2)Truncate Table语句

(3)Delete和Truncate table区别

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

1.select 语法结构

2.条件表达式

3.逻辑表达式

4.查询列

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

6.查询结果排序

7.使用SELECT生成新数据  


写在前面

本系列文章将会讲解SQL server 中 server T-SQL查询语句,并且会同步视频进行安装讲解。

视频教程:T-SQL查询语句教程

前期回顾:Windows server 2016——SQL server 数据库和表的管理


介绍

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'

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows server 2016——SQL server T-SQL查询语句 的相关文章

  • 这些加密算法有什么区别?

    两者有什么区别MCRYPT RIJNDAEL 128 MCRYPT RIJNDAEL 256 MCRYPT BLOWFISH等等 哪一种最适合网络数据传输 Rijandel 是 AES 的另一个名称 AES 是当前的 一个好的标准 算法 数
  • xdebug_start_trace 行为异常

    我正在尝试进一步减少脚本内存使用量 我试图让我的脚本使用 xdebug 生成输出来分析内存使用情况 这是一个基于 CLI 的脚本 有 shebang usr local bin php q 我向它传递一个参数并检查它 argc gt 1 i
  • 如何在 PHP 中正确分割路径

    执行以下操作的最佳方法是什么 我通过 AJAX 请求获取路径 e g dir1 dir2 dir3 dir4 我需要在我的网页上这样展示它 dir1 gt gt dir2 gt gt dir3 gt gt dir4 它们每个都是 html
  • PHP 警告 ZipArchive::extractTo():权限被拒绝

    我创建了一个应用程序 它使用 ZipArchive 类 php 中的标准 中的方法 extractTo 并在 Windows 7 上的本地主机 apache 服务器上对其进行了测试 没有任何问题 但是当我在一些unix生产服务器上尝试过它之
  • 将 SQL 中的数据存储在数组中

    我正在尝试将 sql 数据库中的数据存储到数组中 目前我有这个 query mysql query SELECT FROM InspEmail WHERE Company LIKE company while row mysql fetch
  • PSR-4 代码库中条令生成器的解决方法

    在 Windows 机器上使用 Symfony 2 和 Doctrine 我正在尝试 从现有模式生成实体 php app console doctrine mapping import force CoreBundle annotation
  • 如何编辑表以启用级联删除?

    我有一个代表用户的表 当用户被删除时我得到 DELETE 语句与 REFERENCE 约束冲突 显然 CASCADE DELETE在SQL Server中并不像我想象的那么容易 需要将选项添加到表中 问题是 我不知道如何添加CASCADE
  • 对 SQL Server 2005 结果进行分页

    如何在 SQL Server 2005 中对结果进行分页 我在 SQL Server 2000 中尝试过 但没有可靠的方法来做到这一点 我现在想知道SQL Server 2005是否有任何内置方法 分页的意思是 例如 如果我按用户名列出用户
  • 如何将 ctype_alpha 与 UTF-8 结合使用

    如何将 ctype alpha 与 UTF 8 一起使用 我有这个代码 if empty POST false if isset POST first name empty POST first name if ctype alpha PO
  • 获取 SQL 表上未使用的唯一值

    我有一个表 其中有一列描述数字 ID 该 ID 对于所有行都是唯一的 但它不是主键 数字 ID 是有限的 假设答案可以是从 1 到 10 SELECT ID FROM TABLE ID 1 2 5 我必须 通过 UI 向用户呈现未使用的值
  • SQL Server:比较两个表中的列

    我最近完成了从某些应用程序的旧版本到当前版本的迁移 在迁移数据库时遇到了一些问题 我需要一个可以帮助我比较两个表中的列的查询 我的意思不是行中的数据 我需要比较列本身来弄清楚我错过了表结构的哪些变化 看一下红门 SQL 比较 http ww
  • 在带有循环引用的表中插入 SQL

    我有 2 张桌子 Empleados numEmpl nombre apellido sexo telefono salario numDept Departamentos numDept nombreDept numDirect 在部门中
  • 获取SQL中前2个特殊字符之间的字符

    我有数据在sql 只是要注意 SQL STudio is the IDE like data a 10 b c a 1 b c 我想获取前两个符号之间的数据 Output 10 1 这就是我的方法 SELECT CAST
  • 我可以显示我在 PHP 中设置的所有 cookie 吗?

    我正在尝试诊断 cookie 中的错误 但 cookie 的名称不是应有的名称 PHP 有没有办法打印我的域设置的所有 cookie 你有没有尝试过 print r COOKIE
  • 使用 DOM 获取 div 的内容(包括子标签)

    我正在使用 DOM 来获取 div 标签的内容 但内部 html 部分未显示 功能是 dom new DOMDocument libxml use internal errors true dom gt loadHTMLFile url l
  • 计算行数并仅获取表中的最后一行

    我有一张桌子叫employeexam其结构和数据是这样的 id course id employee id degree date 1 1 3 8 2013 01 14 2 2 4 15 2013 01 14 3 2 4 17 2013 0
  • ZF2 工厂获取参数

    我有一个动态类别导航 在导航工厂中 我想从路线获取参数 我怎样才能做到这一点 在我看来 在我的 module php 中 public function getServiceConfig return array factories gt
  • php,in_array,0值

    我试图理解in array下一个场景的行为 arr array 2 gt Bye 52 77 3 gt Hey var dump in array 0 arr 返回值in array 是布尔值true 正如你所看到的no值等于0 所以有人可
  • PHP 除法浮点值问题

    当我尝试获取余数时 它给出了无效值 我试图获得两位小数的余数 我得到 3 4694469519536E 18 我的价值观是 x 0 1 y 0 005 我尝试了以下方法 echo ed fmod 0 1 0 005 OutPut 3 469
  • SQL Server XQuery 返回错误

    我正在 SQL Server 2012 中对 XML 数据类型列执行查询 数据示例如下

随机推荐

  • Mysql常用命令行

    Mysql常用命令行 第一招 mysql服务的启动和停止 net stop mysql net start mysql 第二招 登陆mysql 语法如下 mysql u用户名 p用户密码 键入命令mysql uroot p 回车后提示你输入
  • 如何用python调用webservice接口

    最近项目需要去调用其他平台接口 接口类型为webservice接口 跟经常用的http请求还不一样 然后就找到python的suds三方包 以下为根据号码查询归属地接口进行测试和举例 安装suds三方包 命令行 pip3 install s
  • VSCode 的 Local History插件使用

    VSCode 的 Local History 插件使用 在使用vscode编写代码的时候 往往需要查看历史的修改记录 这时可以安装 Local History 插件 安装成功之后 关闭 vscode 然后重新启动就可使用 在左下角可以看到
  • linux 查找安装包路径,查看yum安装软件包的路径

    Linux系统下查找安装包所在目录的方法 linux中查看软件文件安装路径 Linux查看软件安装路径 linux查找安装包路径 rpm查找安装包路径 rpm rpm qa grep php fpm rpm ql php73 php fpm
  • python的struct模块

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 了解c语言的人 一定会知道struct结构体在c语言中的作用 它定义了一种结构 里面包含不同类型的数据 int char bool等等 方便对某一结构对象进行处理 而在网络
  • oshi - 服务器及应用监控库 - 简介与使用

    by Claudia 文章目录 简介 特性 相关资料 运行 具体使用 源码分析 SetCpuInfo SetMemInfo SetSysInfo SetJvmInfo SetSysFiles Why oshi 竞品分析 总结 简介 oshi
  • el-form表单中不同数据类型对应的时间格式化和校验规则

    1 在表单中 当选择不同的数据类型时 需要在下面选择时间时和数据类型对应上 通过监听数据类型的变化 给时间做格式化 2 但是当不按顺序选择数据类型后 再选时间可能会报错 所以需要在dom更新后 再清空表单 3 校验规则 结束时间需要大于开始
  • 2022-12-30 工作记录--React/JS-关闭一个弹窗后,根据需求判断是否继续弹出该弹窗

    React JS 关闭一个弹窗后 根据需求判断是否继续弹出该弹窗 一 实现效果 假如用户在 任务弹窗 同时完成了三个非签到任务 想要实现 当用户返回 首页 时 依次弹出对应完成的任务的 完成任务弹窗 如下图 二 实现代码 后端返的数据 接口
  • 模型集成(Model Ensemble)

    模型集成 Model Ensemble 模型集成是融合多个训练好的模型 基于某种方式实现测试数据的多模型融合 这样来使最终的结果能够 取长补短 融合各个模型的学习能力 提高最终模型的泛化能力 近年来 model ensemble已成刷榜神器
  • 计算机组成原理笔记01

    做题笔记1 学习内容 教材的思维导图 课后练习 计算部分 中国大学MOOC计算机组成原理 计算部分 1 教材的思维导图 2 课后练习P17 7 某计算机主频为1 2GHz 其指令分为4类 它们在基准程序中所占比例及CPI如表1 7所示 指令
  • Rancher应用商店的questions.yml接收数组参数

    背景 制作FlinkCluster的Chart包 要求应用商店界面输入接受数组参数 questions yml 是不支持这种形式的 解决方案 questions yml中的参数最终是以 set name value 的形式拼接到命令中的 h
  • m3u8 videojs 倍速播放属性

    var myVideo videojs myVideo bigPlayButton true textTrackDisplay false posterImage false errorDisplay false playbackRates
  • Elasticsearch-拼音分词/排序

    1 拼音分词器安装 1 1下载拼音分词插件 要和安装的es版本保持一致 我的版本是6 6 0 下载地址 https github com medcl elasticsearch analysis pinyin tree v6 4 0 1 2
  • C++学习难点1

    数据类型与表达式 1 运算符 1 1 自增自减运算符 int i 0 j j i 后置 i的值自增变为1 表达式i 的值为i自增之前的值 即j得值为0 j i 前置 i的值自增变为1 表达式i 的值为i自增之后的值 即j得值为1 注意 自增
  • UnityShader 模型空间转剪裁空间

    模型空间转剪裁空间 1 引入UnityCG cginc库 include Lighting cginc 2 使用UnityObjectToClipPos 方法 v2f vert a2v v v2f f f svPos UnityObject
  • IO流

    过滤器字节流 FilterInputStream 过滤器字节输入流 FilterOutputStream 过滤器字节输出流 它们的主要用于封装其他的输入输出流 为它们提供一些额外的功能 具有以下实现类 以下以FilterInputStrea
  • 【完全开源】小安派-KVM 三进一出切换器

    目录 一 概述 二 使用方法 2 1 连接 2 2 切换 2 3 掉电储存 三 控制原理 3 1 HIDMI控制 3 2 USB切换控制 3 3按键读取 四 资料 一 概述 AiPi KVM 是一款三进一出的HDMI USB的切换器 可以让
  • angular2单元测试学习

    单元测试简介 https segmentfault com a 1190000009737186 单元测试 Jasmine https segmentfault com a 1190000009737204 angular2单元测试 htt
  • What are you looking for on top of the world? English readings.

    Hillary and Tenzing are famous around the world for being the first people to climb Mount Everest in 1953 But few people
  • Windows server 2016——SQL server T-SQL查询语句

    作者简介 一名云计算网络运维人员 每天分享网络与运维的技术与干货 公众号 网络豆 座右铭 低头赶路 敬事如仪 个人主页 网络豆的主页 目录 写在前面 介绍 一 SQL简介 1 SQL和T SQL 2 T SQL的组成 二 使用T SQL语句