T-SQL查询语句(一):单表查询
SQL基础复习03--数据查询SQL语句(单表查询)
SQL基础复习03--数据查询SQL语句(单表查询)参考教材《数据库系统:原理、设计与编程(MOOC版)》,陆鑫张凤荔陈安龙终于到查询这⼀块了。
3.4 数据查询SQL语句3.4.1 查询语句基本结构SELECT [ALL/DISTINCT] <⽬标列>[,<⽬标列>...][INTO <新表>]FROM <表名>[,<表名>...][WHERE <条件表达式>][GROUP BY <列名> [HAVING <条件表达式>]ORDER BY <列名> [ASC/DESC]];SELECT语句由多种字句组成:1. SELECT⼦句,⽤来指明从数据库表中需要查询的⽬标列。
ALL是默认操作,获取所有满⾜条件的数据⾏;DISTINCT⽤来去掉结果集中的重复数据⾏;<⽬标列>为被查询表的指定列名,可以有多个。
2. INTO⼦句,⽤来将被查询的结果集数据插⼊新表。
3. FROM⼦句,⽤来指定被查询的数据来⾃哪个表或哪些表。
多表⽤逗号分隔。
4. WHERE⼦句,⽤来给出查询的检索条件,多个条件之间可以⽤AND、OR进⾏连接。
5. GROUP BY⼦句,⽤来对查询结果进⾏分组,并进⾏分组统计等处理,在分组中,还可以使⽤HAVING关键词定义分组条件。
6. ORDER BY⼦句,⽤来对查询结果集进⾏排序。
ASC当然是升序,DESC是降序。
默认为ASC。
从SELECT语句的操作结果看,<⽬标列>实现对关系表的投影操作,WHERE <条件表达式>实现对关系表的元组选择操作。
当前Student表的全部数据:下⾯将会对该表进⾏⼀系列查询操作3.4.2 从单表读取指定列SELECT <⽬标列>[,<⽬标列>...]FROM <表名>;例3-191. 从Student表中读取学⽣的学号、姓名、专业三列数据:SELECT StudentID, StudentName, MajorFROM Student;GO2. 从Student表中查询所有列数据:SELECT *FROM Student;GO3. 只查Major数据:SELECT MajorFROM Student;GO倘若只想查出不同的专业名称,可以消除重复⾏,⽤DISTINCT:SELECT DISTINCT MajorFROM Student;GO3.4.3 从单表读取指定⾏SELECT *FROM <表名>WHERE <条件表达式>;例3-20从Student表中读取专业为“软件⼯程”,性别为“男”的学⽣数据:SELECT *FROM StudentWHERE Major='软件⼯程' AND StudentGender='男';GO3.4.4 从单表读取指定⾏和列SELECT <⽬标列> [,<⽬标列>...]FROM <表名>WHERE <条件表达式>;例3-21从Student表中读取专业为“软件⼯程”,性别为“男”的学⽣的学号、姓名、性别、专业四列的数据:SELECT StudentID, StudentName, StudentGender, MajorFROM StudentWHERE Major='软件⼯程' AND StudentGender='男';GO3.4.5 WHERE⼦句条件在WHERE⼦句条件中,可以⽤BETWEEN...AND关键词来限定列值范围,还可以⽤关键字LIKE与通配符来限定查询范围,NOT LIKE⽤于给出不在范围的条件。
SQL查询语句
WHERE ytd_sales>10000
) AS t
WHERE a.au_id=ta.au_id
AND ta.title_id=t.title_id
此例中,将SELECT返回的结果集合给予一别名t,然后再符:
<#为虚拟表,可一跨数据库创建!>
8.更改列表名显示的查询
select 字段名1 as ''A'',字段名2 as ''B'' from 表名
select "A"=字段名1,"B"=字段名2 from 表名
select 字段名1"A",字段名2"B" from 表名
Sum:计算总和
Stdev:计算统计标准偏差
Var:统计方差
13.汇总查询<Compute子句>
(1).compute:
Select 字段名列表 From 表名 [where 条件表达式] Compute 汇总表达式
Select cno,sno,degree From score Compute avg(degree)
①执行Where子句,从表中选取行;
②由Group By分组;
③执行Having子句选取满足的分组条件。
---------------------------------------{那我们如何对函数产生的值来设定条件呢?
举例来说,我们可能只需要知道哪些店的营业额有超过 $1,500。在这个情况下,
SELECT "栏位1", SUM("栏位2")
如何使用SQLSELECT语句从单个表中查询数据
如何使⽤SQLSELECT语句从单个表中查询数据在本教程中,您将学习如何使⽤SQL SELECT语句从单个表中查询数据。
1. SQL SELECT语句简介要查询表中的数据,请使⽤SQL SELECT语句。
SELECT语句包含⽤于选择列,,,以及执⾏简单计算的语法。
SELECT语句是SQL中最复杂的命令之⼀,因此,在本教程中,我们将仅介绍基础知识。
下⾯说明了从单个表中检索数据的SELECT语句的基本语法。
SELECTcolumn1, column2, column3, ...FROMtable_name;在此语法中,指定查询SELECT⼦句中的数据是使⽤逗号分隔列的列表,并在FROM⼦句中指定表名。
在评估SELECT语句时,数据库系统⾸先计算FROM⼦句,然后再计算SELECT⼦句。
如果要查询表的所有列中的数据,可以使⽤星号(*)运算符⽽不是列列表,如下所⽰。
SELECT*FROMtable_name;请注意,SQL不区分⼤⼩写。
所以数据库系统处理SELECT和select都是相同操作。
但是,为了使SQL语句更具可读性,我们将使⽤SQL关键字的⼤写字母(如SELECT和FROM)和⼩写字母(如表名和列名)等标识符。
除了SELECT和FROM⼦句之外,SELECT语句还可以包含许多其他⼦句,例如 -- ⽤于根据指定条件过滤数据ORDER BY - ⽤于对结果集进⾏排序LIMIT - ⽤于限制返回的⾏JOIN - ⽤于查询来⾃多个相关表的数据GROUP BY - ⽤于根据⼀列或多列对数据进⾏分组HAVING - ⽤于过滤分组您将在后续教程中了解这些⼦句的使⽤。
2. SQL SELECT语句⽰例我们将使⽤中的employees表进⾏演⽰。
3. SQL SELECT - 查询所有列⽰例要查询表中的所有列,请使⽤星号(*)⽽不是指定每列。
例如,以下语句从employees表中检索所有数据:SELECT*FROMemployees;执⾏上⾯⽰例代码,得到以下结果 -+-------------+------------+-----------+---------------------------+----------------+------------+--------+--------+------------+---------------+| employee_id | first_name | last_name | email | phone_number | hire_date | job_id | salary | manager_id | department_id |+-------------+------------+-----------+---------------------------+----------------+------------+--------+--------+------------+---------------+| 100 | Steven | Lee | steven.lee@ | 0532-******** | 1987-06-17 | 4 | 24000 | NULL | 9 || 101 | Neena | Wong | neena.wong@ | 0551-******* | 1989-09-21 | 5 | 17000 | 100 | 9 || 102 | Lex | Liang | lex.liang@ | 0571-******** | 1993-01-13 | 5 | 17000 | 100 | 9 || 103 | Alexander | Lee | alexander.lee@ | 020-******** | 1990-01-03 | 9 | 9000 | 102 | 6 |... ...| 201 | Michael | Zhou | michael.zhou@ | 010-******** | 1996-02-17 | 10 | 13000 | 100 | 2 || 202 | Pat | Zhou | pat.zhou@ | 0755-******** | 1997-08-17 | 11 | 6000 | 201 | 2 || 203 | Susan | Zhou | susan.zhou@ | 0755-******** | 1994-06-07 | 8 | 6500 | 101 | 4 || 204 | Hermann | Wu | hermann.wu@ | 0513-******** | 1994-06-07 | 12 | 10000 | 101 | 7 || 205 | Shelley | Wu | shelley.wu@ | 0898-******** | 1994-06-07 | 2 | 12000 | 101 | 11 || 206 | William | Wu | william.wu@ | 022-******** | 1994-06-07 | 1 | 8300 | 205 | 11 |+-------------+------------+-----------+---------------------------+----------------+------------+--------+--------+------------+---------------+40 rows in set使⽤星号(*)运算符只能⽅便地通过SQL客户端应⽤程序以交互⽅式查询数据。
tsqlquery用法
tsqlquery用法TSQQuery是T-SQL(Transact-SQL)的一个方法,用于在SQL Server数据库中执行查询语句。
它可以用于执行查询、插入、更新、删除等操作,并且能够获取返回的结果集。
TSQQuery的具体用法如下:1.创建TSQQuery对象:可以使用以下语句创建一个TSQQuery对象:```sqlDECLARE @query AS NVARCHAR(MAX);SET @query = N'SELECT * FROM TableName';```2.执行查询:使用以下语句执行查询并将结果保存到一个表变量中:```sqlDECLARE @results TABLE (Column1 INT, Column2 VARCHAR(50));INSERT INTO @resultsEXEC sp_executesql @query;```3.获取结果集:可以使用以下语句从结果集中检索数据:```sqlSELECT Column1, Column2 FROM @results;```4.参数化查询:TSQQuery还支持参数化查询,可以使用以下语句设置参数:```sqlDECLARE @param1 INT = 1;DECLARE @param2 VARCHAR(50) = 'Value';SET @query = N'SELECT * FROM TableName WHERE Column1 =@param1 AND Column2 = @param2';```然后,使用sp_executesql函数执行参数化查询。
5.错误处理:在执行TSQQuery时,可以通过使用TRY-CATCH语句块来捕获并处理可能的错误。
除此之外,TSQQuery还支持其他更高级的功能,如动态构建查询语句、执行动态查询和存储过程、处理返回的结果集等,这些功能能够极大地提高查询的灵活性和效率。
数据库T-SQL语言操作(T-SQL语句、数据库、表、视图、索引)
数据库T-SQL语⾔操作(T-SQL语句、数据库、表、视图、索引)T-SQL语⾔按⽤途分四部分1. 数据定义语⾔(CREATE,DROP,ALTER)2. 数据操作语⾔(INSERT,DELETE,UPDATE)3. 数据查询语⾔(SELECT)4. 数据控制语⾔(GRANT,REVOKE,DENY)数据类型1. 系统数据类型2. ⽤户⾃定义数据类型(建⽴⽅式:a.图形化⽅式 b.命令⽅式)1use TEST2EXEC sp_addtype sno,'varchar(10)','nonull'3EXEC sp_droptype sno变量命名规则:字母、下划线、@或#开头,但不能全为下划线、@或#不能为“关键字”,不能嵌⼊空格及其他特殊字符,如需使⽤则需要双引号或⽅括号括起1.局部变量:由⽤户声明,必须以@开头,只在定义该变量的过程中有效,局部变量必须先声明后使⽤注意:第⼀次声明变量时,其值设置为NULL。
局部变量不能使⽤“变量=变量值”的格式进⾏初始化,必须使⽤SELECT或SET语句来设置其初始值。
如果声明字符型的局部变量,⼀定要在变量类型中指明其最⼤长度,否则系统默认其长度为1。
若要声明多个局部变量,请在定义的第⼀个局部变量后使⽤⼀个逗号,然后指定下⼀个局部变量名称和数据类型。
1USE student2DECLARE@var1char(10),@var2int3SET@var1='number'4select@var2=cgrade5from sc6where sno='201810010'78print@var1+"s"2.全局变量:由系统定义,供SQL server系统内部使⽤的变量,任何程序任何时间都可以调⽤。
通常以“@@”开头。
T-SQL语句1.注释语句(1) --(2) /*……*/2.批处理--GO3.控制流程语句(1) begin...end语句(相当于C语⾔中的{} )(2) if...else语句(可嵌套)(3)case语句(多条件选择语句)(4)print语句(屏幕输出语句)(5)while语句(有条件的循环语句)(6)goto语句(⽆条件跳转语句)(7)break语句(8)continue语句4.常⽤函数(系统函数、⽤户⾃定义函数)⼀些系统函数:(1)字符串函数(2)数学函数(3)⽇期和时间函数(4)聚合函数注意:⽤户⾃定义函数:1.分类:标量值函数:返回单个值内联表值函数:返回可更新的表多语句表值函数:返回不可更新的表2.标量值函数命令⽅式创建1CREATE FUNCTION f2(@a real,@b real) 2RETURNS real3AS4BEGIN5IF@a>=@b6RETURN@a7RETURN@b8END910PRINT'最⼤值为'11PRINT dbo.f2(77,56)1CREATE FUNCTION f3(@n real)2RETURNS real3AS4BEGIN5DECLARE@i real,@sum real6SET@i=07SET@sum=08WHILE@i<@n9BEGIN10SET@i=@i+111SET@sum=@sum+@i12END13RETURN@sum14END1516PRINT dbo.f3(10)3.⾃定义函数的调⽤(1)标量值函数可以使⽤select、print、exec调⽤(2)表值函数只能⽤select调⽤4.删除⽅式drop function 函数名数据库数据库概述1.数据库常⽤对象:表、数据类型、视图、索引、存储过程、触发器系统数据库:master、model、tempdb、msdb2.数据库存储结构(数据库⽂件、数据库⽂件组):数据库⽂件:存放数据库数据和数据库对象的⽂件。
t-sql查询语句
t-sql查询语句我可以提供以下的T-SQL查询语句:1. 查询表中的所有数据:SELECT * FROM table_name;2. 查询表中指定字段的数据:SELECT column_name FROM table_name;3. 对表中的数据进行排序:SELECT column_name FROM table_name ORDER BY column_name ASC or DESC;4. 查询表中符合条件的数据:SELECT column_name FROM table_name WHERE condition;5. 对表中数据进行分组:SELECT column_name, aggregate_function(column_name) FROM table_name GROUP BY column_name;6. 在多个表之间进行连接查询:SELECT column_name FROM table1 INNER JOIN table2 ONtable1.column_name=table2.column_name;7. 对查询结果进行聚合计算:SELECT aggregate_function(column_name) FROM table_name;8. 使用子查询查询表中符合条件的子集:SELECT column_name FROM (SELECT column_name FROM table_name WHERE condition) AS sub_query;9. 使用LIKE运算符查询类似匹配的数据:SELECT column_name FROM table_name WHERE column_name LIKE 'pattern';10. 查询表中前几条数据:SELECT TOP n column_name FROM table_name;以上是一些常见的T-SQL查询语句,可以根据具体情况进行选择和使用。
SQL 单表查询
实验三单表查询一、实验目的掌握简单SQL 查询语句的应用,包括like、top、order by、compute 、聚集函数的应用。
二、实验内容1、基本查询(1)查询学生表中全体学生的全部信息。
select*from Student_20103266;(2)检索全体学生的学号、姓名。
select Sno,Snamefrom Student_20103266;2、查询时改变列标题的显示检索全体学生的学号、姓名、家庭地址信息,并分别加上“学生”、“学号”、“家庭地址”的别名信息。
select Sno'学号',Sname'姓名',Home_addr'家庭地址'from Student_20103266;3、条件查询(1)查询成绩大于80分的学生的学号及课程号、成绩。
SELECT Sno,Cno,Gradefrom SC_20103266where Grade>80;(2)查询成绩介于75~80分的学生的学号及课程号、成绩。
SELECT Sno,Cno,Gradefrom SC_20103266where Grade between 75 and 80;(3)查询选修了课程号为“002”,且成绩大于80的学生的学号。
SELECT Snofrom SC_20103266where Cno='002'AND Grade>80;(4)某些学生选修某门课程后没有参加考试,所以有选课记录,但没有考试成绩,下面我们来查一下缺少成绩的学生的学号和相应的课程号。
SELECT Sno,Cnofrom SC_20103266where Grade IS NULL;4、基于IN子句的数据查询从课程表中查询出“高数”、“C语言程序设计”的所有信息。
SELECT*FROM Course_20103266where Cname IN('高数','C语言程序设计');5、基于BETWEEN。
T-SQL语句集合及示例
《数据库应用与开发教程》书内T-SQL语句集合及示例1.创建数据库CREATE DATABASE数据库名ON PRIMARY( NAME=主数据库文件名,FILENAME=主数据库文件地址名,SIZE=主数据库文件初始大小,MAXSIZE=主数据库文件最大大小,FILEGROWTH=主数据库文件增长大小/速度)LOG ON( NAME=数据库日志文件名,FILENAME=数据库日志文件地址名,SIZE=数据库日志文件初始大小,MAXSIZE=数据库日志文件最大大小,FILEGROWTH=数据库日志文件增长大小/速度 )GO代码示例:CREATE DATABASE EXAMON PRIMARY(NAME=EMAM_DAT,FILENAME='I:\EXAM\EXAMDAT.mdf',SIZE=3mb,MAXSIZE=500mb,FILEGROWTH=1mb)LOG ON(NAME=EXAM_LOG,FILENAME='I:\EXAM\EXAMLOG.ldf',SIZE=1mb,MAXSIZE=unlimited,FILEGROWTH=10%)GO2.删除数据库基础语句:DROP DATABASE 数据库名代码示例:DROP DATABASE EXAM3.创建表基础语句:USE 数据库名 GOCREATE TABLE 表名( 列名1 数据类型 修饰条件 是否为空, 列名2 数据类型 修饰条件 是否为空, 列名3 数据类型 修饰条件 是否为空, ………… )代码示例:USE EXAM GOCREATE TABLE ADMIN( ADMINID INT PRIMARY KEY , LOGINPWD VARCHAR (50) NOT NULL, LOGINPTPE VARCHAR (10) NOT NULL )4.设置主键基础语句:ALTER TABLE 表名ADD CONSTRAINT 主键名 PRIMARY KEY (想要设置为主键的列的列名)代码示例:ALTER TABLE 表名ADD CONSTRAINT pkey_Admin PRIMARY KEY (AMDINID)5.插入数据(1)添加一行数据 基础语句:INSERT INTO 表名(列名1,列明2,列名3……) VALUES (值一,值二,值3……)代码示例:INSERT INTO ADMIN (ADMINID ,LOGINPWD ) VALUES (1,'iamthepassword')(2)将全部信息添加到另外一个表INSERT INTO 目标表名(列名1,列明2……) SELECT 列名1,列明2…… FROM 原表名6.创建备份表基础语句:SELECT*INTO备份表名FROM原始表名WHERE 0=1示例代码:SELECT*INTO ADMINBAKFROM ADMIN WHERE 0=17.更新数据基础语句:UPDATE表名SET列名=更新的值WHERE条件示例代码:UPDATE ADMIN SET LOGINPWD='password'WHERE ADMINID=18.删除数据基础语句:DELETE FROM表名WHERE条件示例代码:DELETE FROM ADMIN WHERE ADMINID=39.删除表基础语句:DROP TABLE表名示例语句:DROP TABLE ADMIN10查询语句基础语句:SELECT 列名1,列名2 FROM表名WHERE条件ORDER BY要排序的列名(ASC/DESC)示例语句:SELECT ADMINID,LOGINPWD FROM ADMIN WHERE LOGINPWD='password'ORDER BY ADMINID DESC在使用SELECT语句中,可使用*号,代表选择表中的全部列,例:SELECT * FROM ADMIN在SELECT后面加上 DISTINCT 可消除重复行,例如:SELECT DISTINCT LOGINPWD FROM ADMIN在SELECT后面加上TOP 数字,可选择前多少行的数据,例:SELECT TOP 20 * FROM ADMIN要自定义列标题名,可有3种方法:(1)列别名=列名密码=LOGINPWD(2)列名 as 列别名 LOGINPWD=密码(3)列名列别名 LOGINPWD 密码模糊查询,可用 LIKE 例如:SELEC T * FROM ADMIN WHERE LOGINPWD LIKE‘PASS%’更多函数的使用方法,请见课本P86.多表查询,可用“表名.列明”的方式,例如:SELECT Student.studentNO,Score.score1 FROM Student,Score或者采用INNER JOIN关键字关联等内连接和外连接,请见课本P97.11.创建视图基础语句:CREATE VIEW视图名ASFROM表名示例代码:CREATE VIEW V_TESTASSELECT*FROM STUDENT12.创建外键约束基础语句:ALTER TABLE表名ADD CONSTRAINT外键名FOREIGN KEY(从表列名)REFERENCES主表名(主表列名)示例代码:ALTER TABLE scoreADD CONSTRAINT FK_SCORE_STUDENTFOREIGN KEY(STUDENTNO)REFERENCES STUDENT(STUDENTNO)13.在sql中使用变量,详情请见课本P14314.创建索引基础语句:CREATE INDEX索引名ON表名(需要索引的列名)代码示例:CREATE INDEX IDX_ABC ON SCORE(STUDENTNO)15.创建存储过程基础语句:CREATE PROC存储过程名(定义变量)AsSql语句代码示例:详见课本P166,包括3种,不含参数,含参数,含输出参数的存储过程示例。
数据库教学资料第6章t-sql语言基础PPT课件
T-SQL是结构化查询语言(SQL)的一个扩展,专门针对Microsoft SQL Server数据库系统。它提供了许多额外 的功能和命令,使得对数据库的操作更加高效和强大。T-SQL具有丰富的语言特性,包括条件语句、循环语句、 存储过程、触发器等,可以用来执行复杂的查询、数据处理和数据库管理任务。
T-SQL语言还支持存储过程、触发 器、视图等高级功能,可以大大简 化复杂的业务逻辑和数据处理流程, 降低系统开发和维护成本。
T-SQL的未来发展前景
1
随着云计算、大数据等技术的快速发展,T-SQL 语言将继续发挥重要作用,支持更多的数据处理 场景和应用领域。
2
未来,T-SQL语言将不断演进和完善,支持更多 的数据类型、函数和操作符,提高数据处理效率 和安全性。
3
变量和常量的声明与赋值
使用DECLARE语句声明变量,使用SET或 SELECT语句为变量赋值。
流程控制语句
IF语句
用于根据条件执行不同的代码块。
WHILE语句
用于重复执行一段代码直到满足特定条件。
CASE语句
用于根据条件执行不同的代码块,类似于IF-ELSE结构。
GOTO语句
用于将程序控制转移到指定的标签位置。
使用存储过程和触发器
存储过程
使用CREATE PROCEDURE语句创建一个 存储过程,该过程可以包含一系列的TSQL语句,用于执行特定的数据库操作。
VS
触发器
使用CREATE TRIGGER语句创建一个触 发器,该触发器将在指定的事件(如 INSERT、UPDATE或DELETE操作)发生 时自动执行相应的操作。
同时,T-SQL语言将与新兴技术如人工智能、机 器学习等相结合,拓展其在数据分析、预测和智 能决策等领域的应用价值。
T-SQL 编程 SQL Server高级查询与T-SQL编程
CURRENT_DATE 表示当前的日期,类似的还有 CURRENT_TIME(当前时间)、 CURRENT_TIMESTAMP(当前时间戳)等
4.1.2 T-SQL 标识符
变量用于临时存放数据,其中的数据随着程序的运行而变化,变量包括名称及 数据类型两个属性。变量名用于标识该变量,数据类型确定了该变量存放值的 格式及其允许的运算。
4.1.4 使用 set 语句为局部变量赋值
在 T-SQL 中,go 语句的作用主要表现在以下两个方面:
等待 go 语句前的代码执行完毕,再执行 go 之后的语句。如果需要连续执行多条 SQL 语 句,并希望它们依次按顺序往下执行,则需要使用 go 进行控制。
T-SQL 在执行 go 语句时,SQL Server 的命令窗口和查询窗口将 go 之前已定义的局部变 量清除,被 go分开的局部变量不能共享。
流程控制语句
讲解时间: 20 分钟
1. begin…end 语句 2. if…else 条件判断语句 3. while 循环语句 4. c习
实践时间: 25 分钟
1. 编写 T-SQL 的流程控制 代码处理旅游信息
4.2.1 begin…end 语句
T-SQL 的流程控制关键字包括:begin…end、if…else、while、case 等 begin…end 语句可以将多个 SQL 语句限制在其中,作为一个逻辑执行块。
4.1.1 T-SQL 常量
数字常量包裹整数常量、小数常量和浮点常量,例如:12,-37,200.35 浮点常量使用符号 e 来指定,例如:1.5e3,-3.14e1,2.5e-7 字符串常量包括在单引号内,它包含字母数字字符(a ~ z、A ~ Z 和 0 ~ 9)以及
SQL查询语句讲解实例
通用SQL数据库查询语句精华集2007年12月18日星期二08:18简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句一、简单查询简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。
它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
SELECT nickname,email FROM testable WHERE name='张三'(一) 选择列表选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列例如,下面语句显示testtable表中所有列的数据: SELECT *FROM testtable2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如: SELECT nickname,emailFROM testtable3、更改列标题在选择列表中,可重新指定列标题。
定义格式为:列标题=列名列名列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: SELECT 昵称=nickname,电子邮件=emailFROM testtable4、删除重复行SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。
使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、限制返回的行数使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT 时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如: SELECT TOP 2 *FROM testtable SELECT TOP 20 PERCENT * FROM testtable(二)FROM子句FROM子句指定SELECT语句查询及与查询相关的表或视图。
SQL各种连接查询详解(左连接、右连接..)
SQL各种连接查询详解(左连接、右连接..)一、交叉连接(cross join)交叉连接(cross join):有两种,显式的和隐式的,不带on子句,返回的是两表的乘积,也叫笛卡尔积。
例如:下面的语句1和语句2的结果是相同的。
语句1:隐式的交叉连接,没有cross join。
select o.id, o.order_number, c.id, from orders o , customers c where o.id=1;语句2:显式的交叉连接,使用cross join。
select o.id,o.order_number,c.id, from orderso cross join customers c where o.id=1;语句1和语句2的结果是相同的,查询结果如下:二、内连接(inner join)内连接(inner join):有两种,显式的和隐式的,返回连接表中符合连接条件和查询条件的数据行。
(所谓的链接表就是数据库在做查询形成的中间表)。
例如:下面的语句3和语句4的结果是相同的。
语句3:隐式的内连接,没有inner join,形成的中间表为两个表的笛卡尔积。
select o.id,o.order_number,c.id, from customers c, orders o where c.id=o.customer_id;语句4:显示的内连接,一般称为内连接,有inner join,形成的中间表为两个表经过on条件过滤后的笛卡尔积。
select o.id,o.order_number,c.id, from customersc inner join orders o on c.id=o.customer_id;语句3和语句4的查询结果:三、外连接(outer join):外连不但返回符合连接和查询条件的数据行,还返回不符合条件的一些行。
外连接分三类:左外连接(left outer join)、右外连接(right outer join)和全外连接(full outer join)。
TSQL命令汇总
SQL 命令汇总例题:一、对库的操作代码命令(其中fox是数据库名称)1、CREATE DA TABAES fox (新建一个名为fox的数据库)2、USE DATABAES fox (打开fox数据库)3、DROP DATABASE fox (删除fox数据库)二、对表的操作代码命令(其中fox_t、fox_t1是数据表名称)1、CREATE TABLE fox_t (新建一个名为fox_t的数据表)2、DROP TABLE fox_t (删除fox_t数据表)3、ALTER TABLE fox_tALTER COLUMN s_id int (修改fox_t数据表中的s_id列的属性为int型数据)ALTER TABLE fox_tALTER COLUMN id_ip int IDENTIEY(1,1) (修改fox_t数据表中的id_ip列的属性为int型数据并且为自增字段每次增加1)4、ALTER TABLE fox_tADD name varchar (在fox_t数据表中添加一个name字段且数据类型为varchar)5、ALTER TABLE fox_tDROP COLUMN name (删除字段name)6、ALTER TABLE fox_tADD CONSTRAINT constraint_name PRIMARY KEY s_id(添加s_id为主键约束,约束名为constraint_name)7、ALTER TABLE fox_tADD CONSTRAINT constraint_name_1 (添加id_ip作为外键)FOREIGN KEY id_ip REFERENCES fox_t1 id_ip_18、ALTER TABLE fox_tADD CONSTRAINT constraint-A_2 DEFAULT 1000FOR constraint-A9、ALTER TABLE fox_tADD CONSTRAINT constraint-B_2 CHECK sex in(‘男’, ‘女’)10、ALTER TABLE fox_tADD CONSTRAINT constraint-C-3 UNIQUE (name)练习:use abcselect * from 学生基本信息表where 总分>=60 order by 总分descuse abcselect 学号as '学生编码',姓名,总分as '总分大于60分' from 学生基本信息表where 总分>=60use abcselect top 50 percent * from 学生基本信息表use abcselect sum(部门工资) as '发放工资总额' from 工资清单use abcselect max(部门工资) as '所的工资最高的部门' from 工资清单use abcselect max(工资) as '不同工种的薪水' from 工资表group by 工种use abcselect max(工资) as '不同工种的薪水' from 工资表where 工资>2000 group by 工种having max(工资)<8000。
mysql——查询语句——单表查询——(示例)
mysql——查询语句——单表查询——(⽰例)⼀、基本查询语句select的基本语法格式如下:select 属性列表from表名和视图列表[ where 条件表达式1 ][ group by 属性名1 [ having 条件表达式2 ] ][ order by 属性名2 [ asc | desc ] ]属性列表参数表⽰需要查询的字段名;表名和视图列表参数表⽰从此处指定的表或者视图中查询数据,表和视图可以有多个;条件表达式1参数指定查询条件;属性名1参数指按照该字段的数据进⾏分组;条件表达式2参数满⾜该表达式的数据才能输出;属性名2参数指按照该字段中的数据进⾏排序;排序⽅式由asc和desc这两个参数指出;asc参数表⽰升序,这是默认参数,desc表⽰降序;(升序表⽰从⼩到⼤)对记录没有指定是asc或者desc,默认情况下是asc;如果有where⼦句,就按照“条件表达式1”指定的条件进⾏查询;如果没有where⼦句,就查询所有记录;如果有group by⼦句,就按照“属性名1”指定的字段进⾏分组,如果group by后⾯带having关键字,那么只有满⾜“条件表达式2”中知道的条件才能输出。
group by⼦句通常和count()、sum()等聚合函数⼀起使⽤;如果有order by⼦句,就按照“属性名2”指定的字段进⾏排序,排序⽅式由asc和desc两个参数指出;默认情况下是asc;前提准备:create table student( sid varchar(50),sname varchar(50),sage varchar(50),ssex varchar(50));insert into student( sid,sname,sage,ssex ) values('1','zhaolei','1990-01-01','nan');insert into student values('2','qiandian','1990-12-21','nan');insert into student values('3','sunfeng','1990-05-20','nan');insert into student values('4','liyun','1990-08-06','nan');insert into student values('5','zhoumei','1991-12-01','nv'),('6','wulan','1992-03-01','nv'),('7','zhenzu','1989-07-01','nv'),('8','wangju','1990-01-20','nv');select*from student;⼀、查询所有字段(1)、列出表的所有字段(2)、使⽤ ‘ * ’ 查询所有字段:select * from 表名;select sid,sname,sage,ssex from student;select*from student;⼆、查询指定字段查询数据时,可以在select语句的‘属性列表’中列出所有查询的指定字段。
SQL数据查询之——单表查询
SQL数据查询之——单表查询⼀、SQL数据查询的⼀般格式数据查询是数据库的核⼼操作。
SQL提供了SELECT语句进⾏数据查询,其⼀般格式为:SELECT[ALL | DISTINCT]<⽬标列表达式>[,<⽬标列表达式>]···FROM<表名或视图名>[,<表名或视图名>···]| (SELECT语句>)[AS]<别名>[WHERE<条件表达式>][GROUP BY<列名1>[HAVING<条件表达式>]][ORDER BY<列名2>[ASC | DESC]];整个SELECT语句的含义是,根据WHERE⼦句的条件表达式从FROM⼦句指定的基本表、视图或派⽣表中找出满⾜条件的元组,再按SELECT⼦句中的⽬标列表达式选出元组中的属性值形成结果表。
如果有GROUP BY⼦句,则将结果按<列名1>的值进⾏分组,该属性列值相等的元组为⼀个组。
通常会在每组中作⽤聚集函数。
如果GROUP BY⼦句带HAVING短语,则只有满⾜指定条件的组才予以输出。
如果有ORDER BY⼦句,则结果还要按<列名2>的值的升序或降序排序。
SELECT语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。
⼆、SQL单表查询(仅涉及⼀个表的查询)1.选择表中的若⼲列(1)查询指定列查询全体学⽣的学号与姓名SELECT Sno,SnameFROM Student;查询全体学⽣的姓名、学号、所在系SELECT Sname,Sno,SdeptFROM Student;(2)查询全部列查询全体学⽣的详细记录SELECT*FROM Students;等价于SELECT Sno,Sname,Ssex,Sage,SdeptFROM Student;(3)查询经过计算的值查询全体学⽣的姓名及其出⽣年份SELECT Sname,2014-Sage //查询结果的第2列是⼀个算术表达式FROM Student;注意:⽤当时的年份(假设为2014年)减去学⽣的年龄,这样所得的即是学⽣的出⽣年份。
话说T_SQL(查询)
一、简单查询简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。
它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三'(一) 选择列表选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列例如,下面语句显示testtable表中所有列的数据:代码:SELECT * FROM testtable2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:代码:SELECT nickname,email FROM testtable3、更改列标题在选择列表中,可重新指定列标题。
定义格式为:列标题=列名列名列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:代码:SELECT 昵称=nickname,电子邮件=email FROM testtable4、删除重复行SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。
使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、限制返回的行数使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如:代码:SELECT TOP 2 * FROM `testtable`代码:SELECT TOP 20 PERCENT * FROM `testtable`(二) FROM子句FROM子句指定SELECT语句查询及与查询相关的表或视图。
SQL常用语句-子查询整理
SQL常用语句,子查询整理一、SQL子查询语句1、单行子查询select ename,deptno,salfrom empwhere deptno=(select deptno from dept where loc=,NEW YORK');2、多行子查询SELECT ename,job,salFROM EMPWHERE deptno in ( SELECT deptno FROM dept WHERE dname LIKE SW);3、多列子查询SELECT deptno,ename,job.salFROM EMPWHERE (deptno,sal) IN (SELECT deptno.MAX(sal) FROM EMP GROUP BY deptno);4、联视图子查询(1)SELECT ename f job,sal t rownumFROM (SELECT enamejob,sal FROM EMP ORDER BY sal);(2)SELECT ename.job,sal,rownumFROM ( SELECT enameJob,sal FROM EMP ORDER BY sal)WHERE rownum<=5;5、在HAVING子句中使用子查询SELECT deptnoJob,AVG(sal) FROM EMP GROUP BY deptnojob HAVINGAVG(sal)>(SELECT sal FROM EMP WHERE ename=l MARTIN*);6、连接左连接右连接举例;select sys er_id ,sys. user・user code from sys_user inner join XZFW BANJIE on sys user, user id=XZFW BANJIE. userid小例子:select top 10 * from sys user where user code not in (select user code from sys user where user code likeselect top 2 * from (select top 2 * from td. users order by us. username desc) users order by us username desc7、删除约束语句:alter table dbo. XZFW_SYS_USER drop CONSTRAINT FK1772E1891324F6788、记录数查询select count(user pass) from sys userselect count(♦) from sys user where user .code! =r admin19.在围之间取值(between・・・and ••用法)select sys__er_id, sys_er name, xzfw shoujian. caseid from sys user inner join xzfw shoujian on sys^user・user id=xzfw erid where user id between 5 and 100或select * from sys user where user id<10 and user id>l二、SQL基本语句下列语句部分是Mssql语句,不可以在access中使用。
使用T-SQL进行数据查询
2.外连接(OUTER JOIN)
•(1)左外连接(LEFT OUTER JOIN) •【例】 查询同一个图书编号的图书订购数量大于 15册的图书编号(thbh)、图书名(tsm)和订购数量 (dgsl)。 •SELECT ts.tsbh,tsm,dgsl •FROM ts LEFT JOIN tsdg ON ts.tsbh =tsdg.tsbh AND dgsl>15 •(2)右外连接(RIGHT OUTER JOIN) •(3)全外连接(FULL OUTER JOIN)。
示明细信息。 • SELECT khbh,tsbh,dgsl • FROM tsdg • COMPUTE sum(dgsl)
• 【例】 统计图书订购表中每个客户订购的图书总数, 并显示明细信息。
• SELECT khbh,tsbh,dgsl • FROM tsdg • ORDER BY khbh • COMPUTE sum(dgsl) BY khbh
数据库技术与应用 (电子商务系列)
使用T-SQL进行数 据查询
一、SELECT语句介绍
语法格式如下:
• SELECT [ALL|DISTINCT][TOP n[PERCENT] 字段列表 • [INTO 新表名] • FROM <数据源> • [WHERE <元组选择条件>] • [GROUP BY <分组列名> [HAVING <组选择条件>]] • [ORDER BY[ALL] <排序列名1|列号> [ASC|DESC][,…n]] • [COMPUTE <聚集函数(列名)> [,…n]] • [BY 列名 [,…n]]
2.选择表中若干行
• (1)通过TOP和DISTINCT关键字限制返回的行数 • • 【例】 查询图书表(ts)的前两条记录信息。 • SELECT top 2* • FROM ts
sql查询语句学习测试答案
sql查询语句学习测试答案第⼀部分SQL查询语句的学习单表查询1、--查询订购⽇期在1996年7⽉1⽇⾄1996年7⽉15⽇之间的订单的订购⽇期、订单ID、客户ID和雇员ID等字段的值use eeeSELECT订购⽇期,订单ID,客户ID,雇员IDFROM订单WHERE订购⽇期BETWEEN'1996-7-1 00:00:00'AND'1996-7-15 23:59:59'2、--查询“Northwind”⽰例数据库中供应商的ID、公司名称、地区、城市和电话字段的值。
条件是“地区等于华北”并且“联系⼈头衔等于销售代表”。
use eeeSELECT供应商ID,公司名称,地区,城市,电话FROM供应商WHERE地区='华北'AND联系⼈职务='销售代表'3、--查询“Northwind”⽰例数据库中供应商的ID、公司名称、地区、城市和电话字段的值。
其中的⼀些供应商位于华东或华南地区,另外⼀些供应商所在的城市是天津use eeeSELECT供应商ID,公司名称,地区,城市,电话FROM供应商WHERE地区IN('华东','华南')OR城市='天津'4、--查询“Northwind”⽰例数据库中位于“华东”或“华南”地区的供应商的ID、公司名称、地区、城市和电话字段的值use eeeSELECT供应商ID,公司名称,地区,城市,电话FROM供应商WHERE地区IN('华东','华南')多表查询5、--查询订购⽇期在1996年7⽉1⽇⾄1996年7⽉15⽇之间的订单的订购⽇期、订单ID、相应订单的客户公司名称、负责订单的雇员的姓⽒和名字等字段的值,并将查询结果按雇员的“姓⽒”和“名字”字段的升序排列,“姓⽒”和“名字”值相同的记录按“订单ID”的降序排列use eeeSELECT订购⽇期,订单ID,公司名称,姓⽒,名字FROM订单,雇员,客户WHERE订购⽇期BETWEEN'1996-7-1 00:00:00'AND'1996-7-15 23:59:59'AND订单.雇员ID =雇员.雇员IDAND订单.客户ID =客户.客户IDORDER BY姓⽒,名字ASC,订单ID DESC6、--查询“10248”和“10254”号订单的订单ID、运货商的公司名称、订单上所订购的产品的名称use eeeSELECT订单.订单ID,公司名称,产品名称FROM订单,运货商,产品,订单明细WHERE订单.订单ID IN('10248','10254')AND订单.订单ID =订单明细.订单IDAND订单明细.产品ID =产品.产品IDAND订单.运货商=运货商.运货商ID7、--查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称、数量、单价和折扣use eeeSELECT订单.订单ID,产品名称,数量,订单明细.单价,折扣FROM订单,产品,订单明细WHERE订单.订单ID IN('10248','10254')AND订单.订单ID =订单明细.订单IDAND订单明细.产品ID =产品.产品ID8、--查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称及其销售⾦额use eeeSELECT订单.订单ID,产品名称,数量*订单明细.单价*(1-折扣)AS销售⾦额FROM订单,产品,订单明细WHERE订单.订单ID IN('10248','10254')AND订单.订单ID =订单明细.订单IDAND订单明细.产品ID =产品.产品ID综合查询9、--查询所有运货商的公司名称和电话use eeeSELECT公司名称,电话FROM运货商10、--查询所有客户的公司名称、电话、传真、地址、联系⼈姓名和联系⼈头衔use eeeSELECT公司名称,电话,传真,地址,联系⼈姓名,联系⼈职务FROM客户11、--查询单价介于10⾄30元的所有产品的产品ID、产品名称和库存量use eeeSELECT产品ID,产品名称,库存量FROM产品WHERE单价BETWEEN 10 AND 3012、--查询单价⼤于20元的所有产品的产品名称、单价以及供应商的公司名称、电话use eee SELECT产品名称,单价,公司名称,电话FROM产品,供应商WHERE单价> 20AND产品.供应商ID =供应商.供应商ID13、--查询上海和北京的客户在1996年订购的所有订单的订单ID、所订购的产品名称和数量use eeeSELECT订单.订单ID,产品名称,数量FROM产品,订单,订单明细,客户WHERE城市IN('上海','北京')AND YEAR(订购⽇期)=1996AND产品.产品ID =订单明细.产品IDAND订单.订单ID =订单明细.订单IDAND订单.客户ID =客户.客户ID14、--查询华北客户的每份订单的订单ID、产品名称和销售⾦额use eeeSELECT订单.订单ID,产品名称,数量*订单明细.单价*(1-折扣) AS销售⾦额FROM产品,订单,订单明细,客户WHERE地区='华北'AND产品.产品ID =订单明细.产品IDAND订单.订单ID =订单明细.订单IDAND订单.客户ID =客户.客户ID15、--按运货商公司名称,统计1997年由各个运货商承运的订单的总数量use eee SELECT公司名称,COUNT(订单ID)AS订单总数量FROM订单,运货商WHERE YEAR(发货⽇期)= 1997AND订单.运货商=运货商.运货商IDGROUP BY公司名称16、--统计1997年上半年的每份订单上所订购的产品的总数量use eeeSELECT订单.订单ID,SUM(数量)AS总数量FROM订单,订单明细WHERE订购⽇期BETWEEN'1997-1-1 00:00:00'AND'1997-6-30 23:59:59' AND订单.订单ID =订单明细.订单ID GROUP BY订单.订单ID17、--统计各类产品的平均价格use eeeSELECT类别名称,SUM(单价*库存量)/SUM(库存量)AS平均价格FROM产品,类别WHERE产品.类别ID =类别.类别IDGROUP BY类别名称18、--统计各地区客户的总数量use eeeSELECT地区,COUNT(客户ID)AS客户数量FROM客户GROUP BY地区第⼆部分SQL查询强化测试1.找出供应商名称,所在城市use eeeSELECT公司名称,城市FROM供应商2.找出华北地区能够供应海鲜的所有供应商列表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
T-SQL查询语句(一):单表查询Posted on 2008-10-07 19:54 罗一恒阅读(531) 评论(0)编辑收藏############################################查询语句--SELECT############################################查询select: 1。
单表查询2。
多表查询3。
嵌套查询分类1)单表查询2)多表查询A.连接查询B.子查询①一般子查询②相关子查询***************************************SQL查询语句《一》:单表查询1.查询全部记录:select * from table_name2.查询指定字段记录:select 字段列表from table_name3.过滤相同记录:select Distinct 字段列表from table_name<SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。
使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
使用distinct会减慢查询速度,数量大的查询更明显>4.带表达式的查询:select s_name,year(s_birthday) as year from table_name5.指定查询结果的查询select top n * from table_name <n值在0--429494967295间>select top n PERCENT * from table_name <n值在0--100间>(返回前/后n行,前/后n%的数据)6.指定查询路径的查询:select * from database_name.dbo.table_name形式:数据库名.数据库表拥有者.表名(可以跨越数据库和使用者进行查询)7.存储查询结果到另一个表select 字段列表into 新表名from 表名select sno,cno,degree into scorekkk from scoreselect sno,cno,degree into tempdb.#scorekkklll from score<#为虚拟表,可一跨数据库创建!>8.更改列表名显示的查询select 字段名1 as ''A'',字段名2 as ''B'' from 表名select "A"=字段名1,"B"=字段名2 from 表名select 字段名1"A",字段名2"B" from 表名9.条件查询<Where子句>select 字段名列表from 表名where 条件表达式条件表达式运算符:比较运算符(=,<,<=,>,>=,!<,!>,!=,<>)逻辑运算符(or,and,not)范围说明(between and,not between and)可选值列表(in,not in)模式匹配(like,not like)是否为空值(is null,is not null)<注:字符型字段必须用单引号,数字型字段则不用;like和not like适合字符型字段查询。
> like 子句与通配符一起使用,Like "字符串",字符串含通配符或空格%,一个或多个任意字符;_,一个任意字符;[],方括号中的任意一个字符;[^],任意一个在括号中没有的字符。
11.排序查询<Order by子句>select 字段名列表from 表名[where 条件表达式] order by 字段名表达式desc/ascselect * from Sclass order by cno asc,degree desc<使用ORDER BY子句对查询返回的结果按一列或多列排序。
ORDER BY子句的语法格式为:ORDER BY {column_name [ASC|DESC]} [,…n]其中ASC表示升序,为默认值,DESC为降序。
ORDER BY不能按ntext、text和image的数据类型进行排序。
>12.分组查询<Group by子句>select 字段名列表from 表名[where 条件表达式] group by 字段名select 字段名列表from 表名[where 条件表达式] group by 字段名Having <筛选表达式>select cno,avg(degree) as chengji from score group by cnoselect cno,avg(degree) as chengji from score group by cno Having avg(degree)>80 <字段名列表中包含聚合函数时,则计算每组的汇总值。
如果使用Group by子句,字段名列表中任一非聚合表达式内的所有列都必需包含在Group by列表中,或者Group by表达式必须与选择列表表达式完全匹配。
>筛选查询<Having子句><Having子句对Group by子句分组后的结果进行筛选,看其是否满足条件。
故此Having只能配合group by子句使用。
>当Where子句,Group by子句,Having子句同时使用时,其顺序如下:①执行Where子句,从表中选取行;②由Group By分组;③执行Having子句选取满足的分组条件。
聚合函数:使用聚合函数,实现数据统计。
AVG:计算平均数Count(*):统计查询输出的记录总数Count():统计指定列中选择的记录总数Max:最大值Min:最小值Sum:计算总和Stdev:计算统计标准偏差Var:统计方差13.汇总查询<Compute子句>(1).compute:Select 字段名列表From 表名[where 条件表达式] Compute 汇总表达式Select cno,sno,degree From score Compute avg(degree)<compute子句生成的汇总结果附加在结果集的后面,汇总表达式须用到聚合函数>(2).compute by:Select 字段名列表from 表名[where 条件表达式] order by 字段名compute 汇总表达式by 分类字段名Select sno,cno,degree From sclass Order by cno compute Avg(degree) by cnoSelect sno,cno,degree From score Order by cno Asc,degree Desccompute avg(degree) by cno<compute by子句根据by后的字段名进行分组,必须与order by子句一起使用,分类字段名必须与order by后的字段名一致。
>***************************************简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。
它们分别说明所查询列、查询的表或视图、以及搜索条件等。
完整的Select 语句用法:SELECT 字段列名[INTO 新表名]FROM 表| 视图名[WHERE 查询限定条件][GROUP BY 分组表达式][HAVING 分组条件][ORDER BY 次序表达式[ASC | DESC]](2)FROM子句FROM子句指定SELECT语句查询及与查询相关的表或视图。
在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。
例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:SELECT username,citytable.cityidFROM usertable,citytableWHERE usertable.cityid=citytable.cityid在FROM子句中可用以下两种格式为表或视图指定别名:表名as 别名表名别名例如上面语句可用表的别名格式表示为:SELECT username,b.cityidFROM usertable a,citytable bWHERE a.cityid=b.cityidSELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。
例如:SELECT a.au_fname+a.au_lnameFROM authors a,titleauthor ta(SELECT title_id,titleFROM titlesWHERE ytd_sales>10000) AS tWHERE a.au_id=ta.au_idAND ta.title_id=t.title_id此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。
WHERE子句可包括各种条件运算符:比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!<范围运算符(表达式值是否在指定的范围):BETWEEN…AND…NOT BETWEEN…AND…列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……)NOT IN (项1,项2……)模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE空值判断符(判断表达式是否为空):IS NULL、NOT IS NULL逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR1、范围运算符例:age BETWEEN 10 AND 30相当于age>=10 AND age<=302、列表运算符例:country IN (''Germany'',''China'')3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。
可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。