SQL Server数据库的T-SQL查询语句

发布时间:2020-08-02 21:00:41 作者:俊伟祺i
来源:网络 阅读:872

一、SQL简介

在进行数据管理时,使用SSMS进行数据维护有可视化、方便的优点,但是在批量维护或重复维护数据时,每次都需要使用SSMS不但不方便,而且容易出错。通过编写SQL语句来维护数据库便于解决重复或批量维护数据的难题。

1、SQL和T-SQL

SQL是Structured Query Language的缩写,即结构化查询语言。SQL广泛地被采用说明了它的优势,它使全部用户,包括应用程序员、数据库管理员和终端用户受益匪浅。

1)非过程化语言

SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航功能。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL语句可以接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的输出作为另一条SQL语句的输入。

2)统一的语言

SQL可用于所有用户的数据库活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其他类型的终端用户。SQL为许多任务提供了命令,包括:

2、T-SQL的组成

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

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

在SQL Server Management中对表数据进行插入、更新或删除比较简单,除此之外,也可以使用T-SQL语句实现对表数据的插入、更新或删除等操作。

1、插入数据

使用INSERT语句将数据插入表中

INSERT [INTO] <表名> [列名] VALUES <值列表>

其中:

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

1)创建数据库,切换数据库,创建表

create database benet;   <!--创建benet数据库-->
use benet;       <!--切换到benet数据库-->
create table 学生统计表 (    <!--创建学生统计表-->
    编号 int identity (1,1) not null,
    姓名 nvarchar(3) not null,
    性别 nvarchar(2) not null,
    年龄 varchar (3) null,
    身份证号码 varchar(18) primary key,
    出生日期 datetime not null,
    意向科目 nvarchar(5) null,
    学费 money not null check(学费 >=0 and 学费 <=10000),
);
select * from 学生统计表;   <!--查看表结构-->

SQL Server数据库的T-SQL查询语句

2)学生统计表中插入数据

<!--学生统计表中插入数据-->
insert into 学生统计表 (姓名,性别,年龄,身份证号码,出生日期,意向科目,学费) values ('张三','男','21','111111111111111111','2001/11/27','数学',7000);

insert into 学生统计表 (姓名,性别,身份证号码,出生日期,学费) values ('丽丽','女','222222222222222222','2003/9/24',8000);

insert into 学生统计表 (姓名,性别,身份证号码,出生日期,学费) values ('马三','男','333333333333333333','2005/08/12',6500);

SQL Server数据库的T-SQL查询语句

3)查看学生统计表

select * from 学生统计表;   <!--查看表结构-->

SQL Server数据库的T-SQL查询语句

2、更新数据

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

UPDATE <表名> SET <列名=更新值> [WHERE <更新条件>]

其中:

1)修改学生统计表中马三的年龄为37

update 学生统计表 set 年龄=37 where 姓名='马三';

SQL Server数据库的T-SQL查询语句

2)修改学生统计表中马三的学费和意向科目

update 学生统计表 set 学费=5000,意向科目='语文' where 姓名='马三';

SQL Server数据库的T-SQL查询语句

3、删除数据

1)使用DELETE语句删除表中的数据,DELETE语法格式如下:

DELETE FROM <表名> [WHERE <删除条件>]

示例如下:

delete from 学生统计表 where 姓名='张三';   
                  <!--删除学生统计表中张三的记录-->

SQL Server数据库的T-SQL查询语句

2)使用DELETE语句删除表中所有记录,语法格式如下:

DELETE FROM <表名>

示例如下:

delete from 学生统计表;   <!--删除学生统计表中所有记录-->

3)使用Truncate Table语句删除表中的数据

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

Truncate Table <表名>

示例如下:

Truncate Table 学生统计表; 
       <!--删除学生统计表中的所有记录行-->

Truncate Table语句于DELETE语句的区别如下:

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

三、使用T-SQL查询数据

SQL语言中最主要、最核心的部分是它的查询功能。查询语句用来对已经存在于数据库中的数据按照特定的组合,条件表达式或次序进行检索。数据库中的查询是使用SELECT语句来完成的。

1、SELECT语法结构

T-SQL中的查询基本格式是由SELECT子句,FROM子句和WHERE子句组成的查询块

SELECT <列名> FROM <表名> WHERE <查询限定条件>

在SQL server中,select语句的语法如下:

SELECT  select_list
[ INTO  new_table_name ]
FROM  table_name
[WHERE  search_conditions ]
[GROUP  BY  group_by_expression]    [HAVING  search_conditions] 
[ORDER  BY  order_expression  [ASC|DESC]  ]     

SQL Server数据库的T-SQL查询语句
以上各项参数说明如下:
SQL Server数据库的T-SQL查询语句

2、表达式

表达式是符号和运算符的一种组合,并且可以对它求值得到单个数据值,简单表达式可以是一个常数、变量、列或标量函数。可以用运算符把两个或多个简单表达式连接成一个复杂表达式。

1)条件表达式

SQL Server中的表达式可以包含下列一个或多个参数:

2)比较运算符及其含义如下表:

SQL Server数据库的T-SQL查询语句

示例如下:

<!--查询学费大于6500的显示出来-->
select * from 学生统计表 where 学费 > 6500;
<!--查看学费大于等于8000的显示出来-->
select * from 学生统计表 where 学费 >= 8000;
<!--查看学费小于6000的显示出来-->
select * from 学生统计表 where 学费 < 6000;
<!--查看学费小于等于7000的显示出来-->
select * from 学生统计表 where 学费 <= 7000;
<!--查看学费不等于7000的学生信息-->
select * from 学生统计表 where 学费 <> 7000;
<!--查询学费在6500~8000的显示出来-->
select * from 学生统计表 where 学费 between 6500 and 8500;
<!--查询学费为8000、7500、3000的学生所有信息-->
select * from 学生统计表 where 学费 in (8000,7500,3000);
<!--查看学生统计表中年龄为空的学生所有信息-->
select * from 学生统计表 where 年龄 is null;

3)通配符及其含义如下表:

SQL Server数据库的T-SQL查询语句
通配符经常与LIKE运算符一起配合使用完成模糊查询。可以使用LIKE和通配符来完成对表的一些特殊约束。

示例如下:

<!--查看表中姓李的所有学生-->
select * from 学生统计表 where 姓名 like '李%';
<!--查看姓李为三个字的显示出来-->
select * from 学生统计表 where 姓名 like '李__'
<!--查看姓杜为两个字的显示出来-->
select * from 学生统计表 where 姓名 like '杜_'
<!--查询学生统计表中以三结尾且介于杜与王开头的名字-->
select * from 学生统计表 where 姓名 like '[杜-王]三';
<!--查询学生统计表中以杜开头且后面不为三和六的所有名字-->
select * from 学生统计表 where 姓名 like '杜[^三六]';

4)逻辑运算符及其含义如下表:

SQL Server数据库的T-SQL查询语句
AND和OR运算符是连接条件表达式,NOT否定条件。AND连接两个条件,并且仅当两个条件都为真时才返回True。OR也连接两个条件,但只要其中任意一个为真就返回True。

示例如下:

<!--使用and查询两个结果为真显示内容-->
select * from 学生统计表 where 姓名='丽丽' and 学费=5000;
<!--使用or查询两个结果一个满足显示内容-->
select * from 学生统计表 where 姓名='张三' or 学费=8760;
<!--显示学费不是8000的-->
select * from 学生统计表 where not 学费=8000;

3、查询结果排序

<!--查看学生统计表中的前3行数据-->
select top 3 * from 学生统计表;
<!--查询学生统计表,姓名和身份证号码,查询结果为name和idcard-->
select 姓名 as name,身份证号码 as idcard from 学生统计表;
<!--查询学生统计表中所有信息,将学费从高到低显示出来-->
select * from 学生统计表 order by 学费 desc;
<!--查询学生统计表中所有信息,将学费从低到高显示出来-->
select * from 学生统计表 order by 学费 asc;
<!--去除重复列数据-->
select distinct 意向科目 from 学生统计表;

四、使用SELECT生成新数据

SELECT不仅仅只能查询,结合INTO关键字或将SELECT作为INSERT的子句,都可以实现生成新数据的功能。

1、SELECT使用INTO关键字

SELECT使用INTO关键字可以从一个表中选择一些数据插入新表中

<!--将查询的数据显示在新的new1表中-->
select * into new1 from 学生统计表;

2、INSERT使用SELECT子句

通过将SELECT作为INSERT的子句,也可以将现有表中的数据添加到新表中,与上一个方法不同的是,这个新表需要事先创建好,并且具有SELECT子句查询结果对应的列,查询结果对应的数据个数、顺序和数据类型也要保持一致。

示例如下:

insert into new2 (姓名,性别,年龄,身份证号码) select 姓名,性别,年龄,身份证号码 from 学生统计表 where 学费>=7500 
<!--将学生统计表中所有学费大于等于7500的学生的姓名,性别,
年龄和身份证号码保存到new2表中
(注意,这里的 new2表中需要提前建立)-->

3、使用UNION关键字

UNION关键字用于将多个不同的数据或查询结果合并成一个新的结果集。不同的数据或查询结果要求数据个数、顺序、数据类型都一致。

insert into new2 (姓名,性别,年龄,身份证号码) 
select '娟娟','女','31','444444444444444444');
select '杜五','男','27','555555555555555555');
select '李二的','男','18','666666666666666666');
select 姓名,性别,年龄,身份证号码 from 学生统计表
<!--将学生统计表中所有学生的姓名,性别,年龄,身份证号码,
以及新输入的3名学生的相关信息,一起保存到新表new2-->

五、T-SQL语句单表查询案例

1、创建products表

  <!--用T-SQL语句创建表products,指定“编号”列为主键列和标识列-->
create table products 
( 
    编号 int identity (1,1) primary key,
    名称 nvarchar(10) not null,
    种类 nvarchar(10) not null,
    成本 money not null check (成本 >=0 and 成本 <=60),
    出厂日期 date not null,
);
insert into products values       <!--用insert into语句一次性插入数据-->
('西瓜','水果','4.1','2017/05/06'),
('芹菜','蔬菜','1.0','2017/04/01'),
('番茄','蔬菜','2.9','2017/04/01'),
('黄瓜','蔬菜','2.2','2017/05/09'),
('香蕉','水果','6.1','2017/05/23'),
('核桃','坚果','28.5','2017/06/02'),
('开心果','坚果','38.11','2017/06/21'),
('蓝莓','水果','50.2','2017/05/15');

<!--也可以通过下面语句格式插入数据-->
insert into products values ('西瓜','水果','4.1','2017/05/06');
insert into products values ('芹菜','蔬菜','1.0','2017/04/01');
insert into products values ('番茄','蔬菜','2.9','2017/04/01');
insert into products values ('黄瓜','蔬菜','2.2','2017/05/09');
insert into products values ('香蕉','水果','6.1','2017/05/23');
insert into products values ('核桃','坚果','28.5','2017/06/02');
insert into products values ('开心果','坚果','38.11','2017/06/21');
insert into products values ('蓝莓','水果','50.2','2017/05/15');
select * from products;    <!--使用select语句验证结果-->

SQL Server数据库的T-SQL查询语句

2、多表查询示例

1)查询成本低于10元的水果信息

select * from products where 成本 < 10;

SQL Server数据库的T-SQL查询语句

2)将所有蔬菜的成本上调1元

update products set 成本=成本 +1  where 种类='蔬菜';
select * from products where 种类='蔬菜';

SQL Server数据库的T-SQL查询语句

3)查询成本大于3元并小于40元的产品信息,并按照成本从高到低的顺序显示结果

select * from products where 成本 > 3 and 成本 < 40 order by 成本 desc;  

SQL Server数据库的T-SQL查询语句

4)查询成本最高的5个产品信息

select * from products where 成本 in (4.1,6.1,28.5,38.11,50.2);

SQL Server数据库的T-SQL查询语句

5)查询有哪些产品种类

select distinct 种类 from products;

SQL Server数据库的T-SQL查询语句

6)将products表中所有水果的名称、种类和出厂日期信息并插入新表products_new中

select 名称,种类,出厂日期 into products_new from products;
select * from products_new;

SQL Server数据库的T-SQL查询语句

———————— 本文至此结束,感谢阅读 ————————

推荐阅读:
  1. T-SQL查询语句
  2. Entity SQL与LINQ TO Entity的本质区别

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

t-sql语句的增、删、改表数据操作 掌握select语法结构 单表查询

上一篇:Zookeeper环境安装

下一篇:grok规则常用表达式

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》