select查询语句(3)(4)
• 自身连接
[例3-51] 查询所有比“刘伟”工资高的教师姓名、工 资和刘伟的工资。
方法1: SELECT X.TN,X.Sal AS Sal_a,Y.Sal AS Sal_b FROM T AS X ,T AS Y WHERE X.Sal>Y.Sal AND Y.TN='刘伟' 方法2: SELECT X.TN, X.Sal,Y.Sal FROM T AS X INNER JOIN T AS Y ON X.Sal>Y.Sal AND Y.TN='刘伟'
表之间满足一定条件的行进行连接时,FROM子句指明进行连接的 表名,WHERE子句指明连接的列名及其连接条件
利用关键字JOIN进行连接:当将JOIN 关键词放于FROM子句中时, 应有关键词ON与之对应,以表明连接的条件
3
1. JOIN ON语句连接查询 ⑴ 使用JOIN ON 语句进行连接查询 SELECT column_list FROM {表1 [join_类型] JOIN 表2 ON 连接条件} [WHERE 查询条件]
22
单值子查询是指子查询只返回一行数据。可以用“=” 和 其外部查询相联系。 [例3-54] 查询与“刘伟”老师职称相同的教师号、姓名
SELECT TNo,TN FROM T WHERE Prof= ( SELECT Prof FROM T WHERE TN= '刘伟')
使用比较运算符 (=, >, <, >=, <=, !=)
4
【例】从student及student_coursSE jwgl GO select student.student_id , student.student_name , student_course.course_id , student_course.grade from student join student_course on student.student_id = student_course.student_id
11
[例3-49] 查询所有选课学生的学号、姓名、选课名称 及成绩。
SELECT S.SNo,SN,CN,Score FROM S,C,SC WHERE S.SNo=SC.SNo AND o=o
[例3-50] 查询每门课程的课程名、任课教师姓名及其 职务、选课人数。
SELECT CN,TN,Prof,COUNT(SC.SNo) FROM C,T,TC,SC WHERE T.TNo=TC.TNo AND o=o AND o=o GROUP BY o
19
COMPUTE类似于总计。如在COMPUTE后加上BY关键 字,则查询的结果为带具体内容的分类统计。 【例】用COMPUTE BY子句按学号汇总出student_course 表中每个学生的的学号及总成绩。 USE jwgl GO SELECT ‘学号‘ = student_id , ’成绩‘ = grade FROM student_course ORDER BY student_id COMPUTE SUM(grade) BY student_id
SELECT S.SNo,SN,CNo,Score FROM S LEFT OUTER JOIN SC ON S.SNo=SC.SNo
15
连接查询的要点: • ①一般而言,基于主键和外键指定查询条件,连 接条件可使用“主键=外键”。 • ②应尽可能限制连接语句中表的数目,连接的表 越多,查询处理的时间越长。 • ③对于连接表的两个列应有相同或类似的数据类 型。 • ④ 不要使用空值作为连接条件,因为空值计算不 会和其它任何值相等。
5
⑵ 使用WHERE子句的连接查询语法形式 SQL Server 连接语法形式: SELECT 列名列表 FROM 表1,表2…. WHERE {表1.列名=表2.关联列名,表2.列名=表3.关联 列名,…} [and 查询条件]
6
【例】从student及student_course两个表中检索学生的学号、 姓名、学习课程号及课程成绩。 USE jwgl GO select student.student_id , student.student_name , student_course.course_id , student_course.grade from student , student_course WHERE student.student_id = student_course.student_id
20
值得注意的是,在使用COMPUTE和COMPUTE BY时, 有如下限制: • ① DISTINCT不允许同集合函数一起用,不能包含text、 ntext、image数据类型。 • ② COMPUTE子句中的列必须在SELECT后面的选择 列表中。 • ③ SELECT INTO不与COMPUTE子句一起使用。 • ④ 若使用了COMPUTE BY,则必须使用ORDER BY。 • ⑤ COMPUTE BY后出现的列必须与ORDER BY后出 现的列相同,或者是它的子集。它必须具有相同的从左 到右顺序并且以相同的表达式开头,不能跳过任何表达 式。
10
RIGHT(OUTER) JOIN
FULL(OUTER)JOIN
CROSS JOIN
• 等值连接与非等值连接
[例3-48] 查询“刘伟”老师所讲授的课程,要求列出 连接条件 ,当比 教师号、教师姓名和课程号。 较运算符为“=”
时,称为等值连 方法1: 接。其他情况为 SELECT T.TNo,TN,CNo 非等值连接。 FROM T,TC WHERE (T.TNo = TC. TNo) AND (TN='刘伟') 方法2: SELECT T.TNo, TN, CNo FROM T INNER JOIN TC ON T.TNo = TC.TNo WHERE (TN = '刘伟') 引用列名TNo时要加上表名前缀,这是因为两个表中的列名相同, 必须用表名前缀来确切说明所指列属于哪个表,以避免二义性。
本节首页
9
JION的分类
INNER JOIN 显示符合条件的记录,此为默认值
LEFT(OUTER)JOIN
为左(外)连接,用于显示符合条件的数据行以 及左边表中不符合条件的数据行,此时右边数据 行会以NULL来显示 右(外)连接,用于显示符合条件的数据行以及 右边表中不符合条件的数据行。此时左边数据行 会以NULL来显示 显示符合条件的数据行以及左边表和右边表中不 符合条件的数据行。此时缺乏数据的数据行会以 NULL来显示 将一个表的每一个记录和另一表的每个记录匹配 成新的数据行
23
1. 使用IN或NOT IN关键字 多值子查询是指子查询返回的不是一行而是 一组行数据。则可使用IN 或NOT IN和其外部 查询相联系。IN表示属于的关系,即是否在 所选数据集合之中。NOT IN则表示不属于集 合或不是集合的成员。
16
使用UNION子句
UNION子句的作用是把两个或多个SELECT语句查询的结果 组合成一个结果集。UNION子句的语法形式如下: Select_statement UNION [ALL] Select_statement […n] 使用UNION时,请注意以下4点: • ① UNION中从源表选择的所有列表必须具有相同列数、 相似数据类型和相同的列序。 • ② 列名来自第一个SELECT语句。 • ③ 如果希望整个结果集以特定的顺序出现,则UNION中 应使用ORDER BY子句来指定对结果集的排序顺序。 • ④ 在合并结果时,将从结果集中删除重复行。若使用 ALL,结果集中包含所有的行。
7
【例】从student、course及student_course三个表中检索学 生的学号、姓名、学习课程号、学习课程名及课程成绩。 USE jwgl GO SELECT student.student_id , student.student_name , student_course.course_id , course.course_name , student_course.grade from student , student_course , course WHERE student.student_id = student_course.student_id AND course.course_id = student_course.course_id
13
[例3-52] 检索所有学生姓名,年龄和选课名称。
SELECT SN,Age,CN FROM S,C,SC WHERE S.SNo=SC.SNo AND o=o
14
• 外连接
左外部连接 右外部连接
而在外部连接中,参与连接的表有主从之分,以主表 的每行数据去匹配从表的数据列。 符合连接条件的数据将直接返回到结果集中,对那些 不符合连接条件的列,将被填上NULL值后再返回到结 果集中。 [例3-53] 查询所有学生的学号、姓名、课程号及成绩 (没有选课的同学的选课信息显示为空)。
本节首页
18
使用COMPUTE和COMPUTE BY子句
使用COMPUTE和COMPUTE BY就既能浏览数据又看到统 计的结果。 COMPUTE BY子句的语法形式如下: COMPUTE row_aggregate (column_name ) […n] [BY column_name_list] 【例】用COMPUTE子句汇总出student_course表中每个学生 的学号及总成绩。 USE jwgl GO SELECT '学号‘ = student_id , '成绩‘ = grade FROM student_course ORDER BY student_id COMPUTE SUM(grade)
本节首页
第10讲 SELECT 查询
查询命令
2.选择表中的行
------在WHERE子句中规定查询条件
例: 列出所有教授的信息。 SELECT * FROM T WHERE Ttitle='教授'; 例:列出在“D01”系工作的所有教师的信息。 SELECT * FROM T WHERE Dnum='D01';
例:列出月工资在1800元和2400元之间的教师 信息。 SELECT * FROM T WHERE Tsalary BETWEEN 1800 AND 2400;
第十讲
SQL的数据操纵功能
SQL的DDL是用来生成、修改、删除数据库结构的, 它并不涉及数据。 数据库的数据操作由数据操纵语言DML来完成, 主要包括SELECT、INSERT、DELETE和UPDATE等4 个语句,即通过它们实现查询和更新(查、插、 删、改)。
查询的基本语句
SQL中的核心是数据库查询语句,它的一般格式是: SELECT <目标列> FROM <表或视图名> [WHERE <条件表达式>] [GROUP BY <列名> [HAVING <条件>]] [ORDER BY <列名> [ASC/DESC]];
例:计算SC表中学号为S030101的学生所选修课程的总成绩
例:计算SC表中学号为S030101的学生所选修课程的总成绩
SELECT SUM(Score) FROM SC WHERE Snum=‘S030101’
AVG 函数
语法: AVG(表达式) 说明:该函数只能对数值类型的字段进行计算。
例1:计算SC表中学号为S030101的学生所选修课程的平均分。 SELECT AVG(Score) FROM SC; 例2:计算T表中所有女教师的平均工资。
数据库查表 select语句
数据库查表 select语句数据库查表 select 语句在数据库中,select 语句是用于查询表中数据的一种语句。
通过 select 语句,我们可以查看表中的数据,也可以对数据进行筛选、排序、分组和计算等操作,非常方便实用。
select 语句的基本语法如下:```sql SELECT column1, column2, … FROMtable_name; ```其中,column1、column2、… 表示要查询的列(数据字段),可以是一个,也可以是多个;table_name 表示要查询的表名,可以是一个,也可以是多个。
下面是一些实例:```sql SELECT * FROM employees; -- 查询employees 表中的所有数据 SELECT emp_no, birth_date, first_name, last_name FROM employees; -- 查询employees 表中的指定列 SELECT * FROM employees WHERE emp_no = 10001; -- 查询 employees 表中emp_no=10001 的记录 ```在 select 语句中,我们还可以使用一些运算符和函数来进行更加复杂的查询和操作。
比如:- 算术运算符:+、-、*、/、%; - 比较运算符:=、!=、<、>、<=、>=、BETWEEN、LIKE 等; - 逻辑运算符:AND、OR、NOT; - 聚合函数:SUM、AVG、MAX、MIN、COUNT 等; - 分组函数:GROUP BY、HAVING 等; - 排序函数:ORDER BY 等。
下面是一些示例:```sql SELECT emp_no, first_name, last_name, salary FROM employees WHERE salary > 10000; -- 查询salary>10000 的员工信息 SELECT emp_no, first_name, last_name, salary*12 AS annual_salary FROM employees; -- 查询员工的年薪(月薪*12),并使用 AS 语句给计算结果起别名 SELECT dept_name, AVG(salary) AS avg_salary FROM employees JOIN departments USING (dept_no) GROUP BY dept_name HAVING AVG(salary) > 10000; -- 查询各个部门的平均工资并排序 SELECTfirst_name, last_name, COUNT(*) AS num_of_dept FROM dept_manager JOIN employees ONdept_manager.emp_no=employees.emp_no GROUP BYdept_manager.emp_no ORDER BY num_of_dept DESC LIMIT 10; -- 查询担任部门经理次数最多的前 10 名员工 ```需要注意的是,在进行 select 查询时,我们查询的表中可能存在大量数据,如果没有进行适当的索引或优化,查询速度可能会较慢。
数据库查表 select语句
数据库查表 select语句数据库查表select 语句是数据库查询语言中最常用的语句之一,用于从数据库中检索所需的数据。
下面是一些关于数据库查表select 语句的相关内容,旨在帮助读者更好地理解和应用该语句。
1. select 语句的基本语法SELECT column1, column2, ...FROM table_nameWHERE condition;2. 查询所有数据SELECT * FROM table_name;3. 查询指定列的数据SELECT column1, column2 FROM table_name;4. 使用别名SELECT column_name AS alias_name FROM table_name;5. 查询满足条件的数据SELECT * FROM table_name WHERE condition;6. 使用运算符进行条件查询SELECT * FROM table_name WHERE column_name = value; SELECT * FROM table_name WHERE column_name > value;SELECT * FROM table_name WHERE column_name LIKE 'pattern';7. 多条件查询SELECT * FROM table_name WHERE condition1 AND condition2; SELECT * FROM table_name WHERE condition1 OR condition2;8. 查询排序结果SELECT * FROM table_name ORDER BY column_name ASC/DESC;9. 查询唯一的数据SELECT DISTINCT column_name FROM table_name;10. 查询统计信息SELECT COUNT(column_name) FROM table_name;SELECT AVG(column_name) FROM table_name;SELECT SUM(column_name) FROM table_name;SELECT MIN(column_name) FROM table_name;SELECT MAX(column_name) FROM table_name;11. 使用聚合函数进行分组查询SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;12. 查询结果限制SELECT * FROM table_name LIMIT number;13. 查询结果分页SELECT * FROM table_name LIMIT number OFFSET offset;14. 连接查询SELECT * FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;15. 子查询SELECT column_name FROM table_name WHERE column_name IN (SELECT column_name FROM table_name);以上是关于数据库查表select 语句的一些常见用法和语法规则。
数据库原理及应用SQL-Server 第6章-SELECT数据查询
6/69
简单查询(2)
❖ 查询全部列
将表中的所有属性列都选出来,可以有两种方法。一种方法就是在 SELECT关键字后面列出所有列名;另一种方法是如果列的显示顺序与 其在基表中的顺序相同,也可以简单地将<目标列表达式>指定为“*”。
例 查询全体学生的详细记录。 USE JXGL GO SELECT * FROM S GO
2021/9/19
10/69
带有WHERE子句的查询 (2)
确定范围
语句BETWEEN…AND…和NOT BETWEEN…AND…可以用来查找 属性值在(或不在)指定范围内的元组,其中BETWEEN后是范围的下 限(即低值),AND后是范围的上限(即高值)。
例 查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、 系别和年龄。
基本语句SELECT—FROM—WHERE的含义是:根据WHERE子句 的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的 元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形 成结果表。
2021/9/19
5/69
简单查询(1)
❖ 查询指定列
在很多情况下,用户只对表中的一部分属性列感兴趣,这时可以通 过在SELECT子句的<目标列表达式>中指定要查询的属性列。
USE JXGL GO SELECT SNAME,SEX FROM S WHERE SDEPT IN('CS','MA','IS') GO
2021/9/19
12/69
带有WHERE子句的查询 (4)
字符匹配
运算符LIKE可以用来进行字符串的匹配。其一般语法格式如下: [NOT] LIKE ’<匹配串>’[ESCAPE ’<换码字符>’]
常用SELECT语句汇总
常用SELECT语句汇总一、单表查询(一)按照条件查询相关记录Select 字段1,字段2……字段N from 表 where 条件含义:从表中根据where 条件查询记录,每条记录显示的字段按照字段1、字段2….字段N的设置显示注:select语句中的标点符号及运算符必须使用英文半角字符。
例1:从凭证库中查询2004年1月31日的凭证,每条凭证只显示凭证日期、凭证号、科目名称、借方金额、贷方金额、会计月份 6个字段Select 凭证日期,凭证号,科目名称,借方金额,贷方金额,会计月份 From 凭证库 where 凭证日期=’2004-1-31’例2:根据业务_个人基本情况表,找出缴存状态为”正常”的记录,查出的记录只显示姓名、身份证号、单位账号及个人账号 4个字段Select 个人姓名,身份证号,单位账号,个人账号 from 业务_个人基本情况表 where 账户状态=’1’例3:从科目余额表中查询出2010年借方金额大于50万或2010年借方金额小于10万的记录,每条记录只显示摘要、科目编码、借方金额、贷方金额、年度5个字段Select摘要,科目编码,借方金额,贷方金额,年度 From 科目余额 where(借方金额>500000 and 年度=2010) or (借方金额<100000 and 年度=2010)Select top 100 字段1,字段2……字段N from 表 where 条件含义:从表中根据where 条件查询记录,显示前100条记录,每条记录按照字段1、字段2….字段N的设置显示例1:从凭证库中查询2004年1月31日的前100条凭证,每条2凭证只显示凭证日期、凭证号、科目名称、借方金额、贷方金额、会计月份 6个字段Select top 100凭证日期,凭证号,科目名称,借方金额,贷方金额,会计月份 From 凭证库where 凭证日期=’2004-1-31’例2:根据业务_个人基本情况表,找出缴存状态为”正常”的前100条记录Select top 100个人姓名,身份证号,单位账号,个人账号 from 业务_个人基本情况表where 账户状态=’1’(二)通配符的使用*表示将全部的字段内容都显示出来例1:从业务_电子警察表中筛选出无车号或者车牌号小于3位的记录Select * from 业务_电子警察 where 车号=’’ or Len(车号)<3 例2:从科目余额表中查询出2002年收入大于50万的记录 Select * from 科目余额 where 借方金额>500000 and 年度=2002%表示零或多个字符例1:从凭证库中查询2003年各月的房租收入情况Select month(凭证日期) as 月份, sum(贷方金额) as 房租金额 from 凭证 where 摘要 like ‘%房租%’ and 年度=2003例2:从凭证库中查询 2008年包含税的记录Select * from 凭证库 where摘要 like ‘%税%’ and 年度=2008 _表示任何一个字符例1:根据科目余额表查询出目编码为10开头的一级科目记录 Select * from 科目余额where 科目编码 like ‘10_’例2:根据凭证库查询科目名称长度为4且以银行开始的前100条记录Select top 100 * into 银行记录表from 凭证库 where 科目名称 like ‘银行_ _’3(三)查询的记录生成新表select字段1,字段2……字段N into 新表 from 旧表 where 条件含义:从旧表中按照条件查询相关记录并生成新表例1:从捐款明细账中查询并生成2005年通过邮寄汇款的捐款名单Select * into 2005年邮寄捐款表 from 业务_捐款明细表 where 捐款方式=’邮寄’ and year(捐款时间)=2005例2:根据业务_个人基本情况表,找出缴存状态为”正常”的记录,生成”业务_临时_个人基本情况表”Select 个人姓名,身份证号,单位账号,个人账号 into业务_临时_个人基本情况表from 业务_个人基本情况表 where 账户状态=’1’(四)查询出的字段重新命名select字段1 as 字段11,字段2 as 字段22……字段N as 字段nn from表 where 条件或者select字段1 as 字段11,字段2 as 字段22……字段N as 字段nn into 新表 from 旧表where 条件例1:从科目余额表中查询出科目编码为4121、4125、4126、4128的记录,并把借方发生额字段重新命名为经费支出情况、贷方发生额命名为经费收入情况select科目编码,科目名称,借方发生额 as 经费支出情况,贷方发生额 as 经费收入情况,期末余额 from 科目余额 where 科目编码 like ’4121’ or 科目编码 like ‘4125’ or 科目编码 like ‘4128’ or 科目编码 like ‘4126’例2:从凭证库中查询2003年各月的房租收入情况Select month(凭证日期) as 月份, sum(贷方金额) as 房租金额 into 2003年房租收入情况表from 凭证库 where 科目编码4like ‘40702’ and 摘要 like ‘%租%’(五)常用子句select字段into 新表 from 旧表 where 条件 order by 字段 Asc/DescOrder by 对查询结果进行排序, ASC升序排序,Desc降序排序例1:从科目余额表中查询出2002年收入大于50万的记录 Select * from 科目余额 where 借方金额>500000 and 年度=2002 order by 借方金额 asc例2:分析2008年人员支出构成Select 科目编码,科目名称,sum(借方金额) as 金额合计 from 凭证库 where 科目编码like ‘501%’ group by 科目编码 order by sum(借方金额) descselect字段into 新表 from 旧表 where 条件 Group by 字段 Group by 可以快速而简便地将查询结果按照指定的字段进行分组例1:把凭证库中的记录按照科目名称分组Select 科目名称,科目编码,借方金额,贷方金额 from 凭证库 group by 科目名称例2:从凭证库中查询并2003年各月的房租收入情况 Select month(凭证日期) as 月份, sum(贷方金额) as 房租金额 from 凭证 where 科目编码 like ‘40702’ and 摘要 like ‘%租%’ group by month(凭证日期)例3:从凭证库中查询科目编码为501开头的记录,并根据不同的科目编码分析借方金额情况Select 科目编码,科目名称,sum(借方金额) as 金额合计 from 凭证库 where 科目编码like ‘501%’ group by 科目编码 order by sum(借方金额) descselect字段into 新表 from 旧表 where 条件 Group by 字段 Having 分组条件5Having语句通常跟在Group by语句后,作为分组后的过滤条件例1:根据凭证库查询科目名称包含事业的记录,并按照科目名称分组Select 科目名称,count(*) as 科目数量 from凭证库 group by 科目名称 having 科目名称 like ‘%事业%’例2:根据业务_缴存种类统计表,统计出单位为所有职工缴存的住房公积金金额都一样的单位账号,生成业务_临时_缴存种类统计表Select 单位账号 into 业务_临时_缴存种类统计表 from 业务_缴存种类统计表 group by 单位账号 having count (单位金额)=1(六)常用函数Year (日期) 返回某个日期的年份例:从捐款明细账中查询并生成2005年通过邮寄汇款的捐款名单Select * into 2005年邮寄捐款表 from 业务_捐款明细表 where 捐款方式=’邮寄’ and year(捐款时间)=2005Month(日期) 返回某个日期的月份例:从凭证库中查询2003年各月的房租收入情况Select month(凭证日期) as 月份, sum(贷方金额) as 房租金额 into 2003年房租收入情况表from 凭证库 where 科目编码 like ‘40702’ and 摘要 like ‘%租%’Sum(数值列名/数值字段名) 返回满足条件的某一数值列中的数值的总和例1:统计2008年凭证库借方金额的总发生额Select sum(借方金额) as 借方金额汇总 from 凭证库 where 年度=2008例2:根据业务_手续费返还表查询2005年、2006年,不同客户的返还金额合计Select 客户代码,sum(返还金额) as 返还金额合计 into 业务。
SQL(一)select查询语句
SQL(⼀)select查询语句1.select语法select <列的集合> from <表名>where <条件>group by <列名>having <条件>order by <排序字段和⽅式>limit startRow,number;group by:根据给定列的值进⾏分组统计,可指定多列,列之间以逗号分割,列必须是分组列或列函数(列有重复值)。
having:跟随group by后⾯使⽤,对分组的结果添加限制条件。
order by:列名 ASC(升序-默认)或DESC(降序)limit startRow,number 等同 limit number offset startRow:设置了select语句返回的记录数,startRow:表⽰第⼀个返回记录⾏的偏移量,从0开始number:表⽰返回记录⾏的最⼤数⽬limit 5,10:表⽰返回记录⾏6-15limit 95,-1:表⽰返回记录⾏96-lastlimit 5:表⽰返回前5个记录⾏2.例⼦提取特定列特定值+别的列的数据select id,class,theme,labels from t_products where secrecy=1;条件可以是=,包含部分内容select * from urls where content like "%内容%";%在mysql中表⽰字符串通配符SELECT DEPT, MAX( SALARY ) AS MAXIMUM, MIN( SALARY ) AS MINIMUM #AS MAXIMUM:把函数⽣成的结果输出在这个列⾥FROM staffGROUP BY DEPTHAVING COUNT( * ) >2 #表⽰根据DEPT列分组后选择组内数据个数⼤于2的才返回输出ORDER BY DEPT。
select查询语句
SELECT查询语句精华一、简单查询简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。
它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为"张三"的nickname 字段和email字段。
SELECT nickname,emailFROM testtableWHERE 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 testtableSELECT TOP 20 PERCENT *FROM testtable(二) FROM子句FROM子句指定SELECT语句查询及与查询相关的表或视图。
《SELECT查询语句》PPT课件_OK
2021/8/30
------江阴职业技术学院计算机系------
2
数据定义语言
• 数据定义语言 (Data Definition Language, DDL) 是SQL语言集中,负责数据结构定义 与数据库对象定义的语言,由CREATE、 ALTER与DROP三个语法所组成。
2021/8/30
------江阴职业技术学院计算机系------
WHERE Age NOT BETWEEN 20 TO 22 --------------------------------------------------------------------------------------• SELECT * FROM Tb_Student
WHERE Age IN (20,21,22) ---------------------------------------------------------------------------------------
SQL查询语句select详解
SQL查询语句select详解SQL查询语句 select 详解2011-05-26 23:24查询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 yearfrom 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适合字符型字段查询。
select查询语句
select查询语句select语句:⽤于从表中选取数据简单查询:格式:select 列名称 from 表名称;(如果要选取多个列名称,可以⽤逗号隔开;若是全部列,则⽤*取代列名称)select语句只会将结果检索出来,并不会影响底层的数据eg:提⽰:星号(*)是选取所有列的快捷⽅式扩展:1.更改别名:as:可以为列名称和表名称指定别名as可以省略,直接select lastname family,fistname name from persons;假若指定成中⽂名称,要⽤单引号括起来条件查询:添加where⼦句⾸先要知晓运算符这个东东:注意:1.⼀般条件值都要⽤引号括起来,除了数字不⽤之外,连⽇期也要⽤引号括起来1.between...and...操作符:选取介于两个值之间的数据范围。
这些值可以是数值、⽂本或者⽇期【不同数据库系统对between and范围的操作⽅式不同,注意检查】eg:以字母顺序显⽰介于 "Adams"(包括)和 "Carter"(不包括)之间的⼈eg:以字母顺序显⽰介于 "Adams"(包括)和 "Carter"(不包括)范围之外的⼈2.is NULL 跟 is not NULL操作符NULL在数据库中,不是⼀个具体值,代表什么都没有,它不是⼀个数据,不能⽤“=”来赋值,必须使⽤is NULL 跟 is not NULL操作符select*from persons where address is NULL;3.SQL AND & OR 运算符AND的优先级⼤于OR,当and跟or同时存在时,记得⽤括号把or先括起来4.通配符:在搜索数据库中的数据时,SQL 通配符可以替代⼀个或多个字符。
[]:⽬标匹配字符:匹配单个字符,若写了多个,匹配任⼀下列分为⼏个场景对这四个通配符进⾏应⽤: persons表如下: 1.选取居住在以 "Ne" 开始的城市⾥的⼈ 2.取的这条记录的姓⽒以 "C" 开头,然后是⼀个任意字符,然后是 "r",然后是任意字符,然后是 "er" 3.选取居住的城市以 "A" 或 "L" 或 "N" 开头的⼈SELECT*FROM Persons WHERE City LIKE'[ALN]%'5.IN 操作符:相当于多个oreg:选取persons表中lastname为adams跟bush的⼈6.order by⼦句:⽤于对指定的列表中的列进⾏排序,默认按升序排序(asc),可⽤在最后加(desc)来使其降序排序;越前的排序字段先看,靠后的字段可能会⽤不上eg:创建⼀个orders表: 1.以字母顺序显⽰公司名字: 2.以字母顺序显⽰公司名字,并以数字顺序显⽰顺序号: 3.以逆字母顺序显⽰公司名字: 4.以逆字母顺序显⽰公司名字,并以数字顺序显⽰顺序号:注意:select id,fistname from persons order by2;#2是指以按第⼆个字段的升序排序相当于select id,fistname from persons order by fistname;。
