51CTO下载-50个精妙的select查询语句
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语句查询及与查询相关的表或视图。
经典SQL查询语句50条
Байду номын сангаас
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
例子:..from b in "&Server.MapPath(".")&"\data.mdb" &" where..
11、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff(minute,f开始时间,getdate())>5
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2
4、说明:子查询(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
常用_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条凭证,每条凭证只显示凭证日期、凭证号、科目名称、借方金额、贷方金额、会计月份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 ‘银行_ _’(三)查询得记录生成新表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 科目编码like ‘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 分组条件Having语句通常跟在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 业务_手续费返还汇总表from 业务_手续费返还表where year(日期)=2005 and year(日期)=2006 group by 客户代码例3:分析2008年人员支出构成Select 科目编码,科目名称,sum(借方金额) as 金额合计from 凭证库where 科目编码like ‘501%’group by 科目编码order by sum(借方金额) descLeft(字符串,数值表达式) 字符串左截取函数例:根据业务_个人缴存明细表,找出2005年缴存状态正常得缴存记录,生成业务_临时_个人缴存明细表Select 个人账号,所属年月into 业务_临时_个人缴存明细表from 业务_个人缴存明细表where left(所属年月,4)=’2005’and 缴存类型<>’6’Count(列名/字段名) 返回满足where条件得记录行数,字段名也可用*代替例1:统计个人业务表中每年参保人数Select count(year(所属年度)) as 参保人数, year(所属年度) from 个人业务where 参保状态=’1’例2:统计凭证库得记录数Select count(*) as 总记录数from凭证库例3:根据业务_缴存种类统计表,统计出单位为所有职工缴存得住房公积金金额都一样得单位账号,生成业务_临时_缴存种类统计表Select 单位账号into 业务_临时_缴存种类统计表from 业务_缴存种类统计表group by 单位账号having count (单位金额)=1Abs(数值) 绝对值函数例:按账号汇总全年得支出额select 账号,户名,sum(abs(发生额)) as 全年支出额from 业务_存款交易明细表where 发生额<0 group by 账号Len(字符串)返回某字符串得长度例1:根据凭证库查询科目名称长度为4且以银行开始得记录Select * into 银行记录表from 凭证库where 科目名称like ‘银行%’ and Len(科目名称)=4例2:查询科目余额表一级科目编码得记录Select * into 一级_科目余额表from 科目余额where Len(科目编码)=3二、多表查询Select字段1,字段2……字段N from 表1 join 表2 on 表1、字段 <关系运算符> 表2、字段 where 条件或Select A、字段1,A、字段2……A、字段N, B、字段1,B、字段2……B、字段N from 表1 as A join 表2 as B on A、字段 <关系运算符> B、字段 where 条件或Select A、字段1,A、字段2……A、字段N, B、字段1,B、字段2……B、字段N into 新表 from 表1 as A join 表2 as B on A、字段 <关系运算符> B、字段 where 条件含义:对两个表中类型相同得字段进行关系运算,查询符合关系运算得记录例1:查询凭证库与会计科目表中科目编码相同得记录select 凭证库、科目编码,凭证库、科目名称,会计科目表、科目级别from 凭证库join 会计科目表on 凭证库、科目编码=会计科目表、科目编码或者select a、科目编码,a、科目名称,b、科目级别from 凭证库as a join 会计科目表as b on a、科目编码=b、科目编码例2:将预算执行表与用款计划表关联,生成预算与用款表Select a、部门,a、项目,a、支付方式,a、累计服从于出,b、期末结余,b、总计into 预算与用款表from 预算执行表as a join 用款计划表as b on a、部门=b、部门and a、项目=b、项目and a、支付方式=b、支出类型例3:将上线支取表与提取原因表进行关联,形成带有提取原因得公积金提取表Select a、交易日期,a、单位公积金编号,a、单位名称,a、个人公积金账号,a、姓名,a、提取金额,b、提取原因,a、备注into 公积金提取表from 上线支取表as a join 提取原因表as b on a、提取原因=b、提取原因代码例4:未缴费而开户得参保情况Select a、个人帐号,a、参保人员编号,a、参保人姓名from 缴费统计表as a join 个人_业务信息表as b on a、个人账号=b、id where a、个人账号is null三、子查询、嵌套查询Select * from 表1 where 表1、字段1 in (select 字段2 from 表2 where 条件)或Select * from 表1 into 新表where 表1、字段1 not in (select 字段2 from 表2 where 条件)或Select * into 新表from (select * from 表1 where 条件) 含义:表2得查询结果作为表1得查询条件。
50个sql语句及讲解
50个SQL语句及讲解1. SE LECT语句S E LE CT语句用于从数据库中选择数据。
S E LE CT*F RO M表名;该语句将返回表中的所有数据。
2. WH ERE语句W H ER E语句用于筛选满足指定条件的数据。
S E LE CT*F RO M表名W H ER E条件;可以使用比较运算符(如=、<、>)、逻辑运算符(如AN D、O R)以及通配符(如%、_)进行条件筛选。
3. OR DER BY语句O R DE RB Y语句用于对结果进行排序。
S E LE CT*F RO M表名O R DE RB Y列名A SC/D E SC;A S C表示升序排列,D E SC表示降序排列。
4. IN SERT INT O语句I N SE RT IN TO语句用于向数据库中插入新的数据。
I N SE RT IN TO表名(列1,列2,列3)V ALU E S(值1,值2,值3);将指定的数据插入到指定的列中。
5. UP DATE语句U P DA TE语句用于更新数据库中的数据。
U P DA TE表名SE T列名=新值WH ER E条件;更新满足条件的数据的指定列的值。
6. DE LETE语句D E LE TE语句用于从数据库中删除数据。
D E LE TE FR OM表名WH E RE条件;删除满足条件的数据。
7. LI KE语句L I KE语句用于在W HE R E语句中进行模糊匹配。
S E LE CT*F RO M表名W H ER E列名L IK E'ab c%';以匹配指定模式的数据。
8. DI STINCT语句D I ST IN CT语句用于返回唯一不重复的数据。
S E LE CT DI ST IN CT列名F RO M表名;返回指定列中的不重复数据。
9. GR OUP BY语句G R OU PB Y语句用于按照指定列对数据进行分组。
S E LE CT列1,C OU NT(列2)FR OM表名GRO U PB Y列1;按列1的值分组,并计算每组中列2的数量。
常用_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条凭证,每条凭证只显示凭证日期、凭证号、科目名称、借方金额、贷方金额、会计月份 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 ‘银行_ _’(三)查询的记录生成新表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 科目编码like ‘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 分组条件Having语句通常跟在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 业务_手续费返还汇总表 from 业务_手续费返还表 where year(日期)=2005 and year(日期)=2006 group by 客户代码例3:分析2008年人员支出构成Select 科目编码,科目名称,sum(借方金额) as 金额合计 from 凭证库 where 科目编码 like ‘501%’ group by 科目编码 order by sum(借方金额) descLeft(字符串,数值表达式) 字符串左截取函数例:根据业务_个人缴存明细表,找出2005年缴存状态正常的缴存记录,生成业务_临时_个人缴存明细表Select 个人账号,所属年月 into 业务_临时_个人缴存明细表from 业务_个人缴存明细表 where left(所属年月,4)=’2005’and缴存类型<>’6’Count(列名/字段名) 返回满足where条件的记录行数,字段名也可用*代替例1:统计个人业务表中每年参保人数Select count(year(所属年度)) as 参保人数, year(所属年度) from 个人业务 where 参保状态=’1’例2:统计凭证库的记录数Select count(*) as 总记录数 from凭证库例3:根据业务_缴存种类统计表,统计出单位为所有职工缴存的住房公积金金额都一样的单位账号,生成业务_临时_缴存种类统计表Select 单位账号 into 业务_临时_缴存种类统计表 from 业务_缴存种类统计表 group by 单位账号 having count (单位金额)=1Abs(数值) 绝对值函数例:按账号汇总全年的支出额select 账号,户名,sum(abs(发生额)) as 全年支出额 from 业务_存款交易明细表 where 发生额<0 group by 账号Len(字符串)返回某字符串的长度例1:根据凭证库查询科目名称长度为4且以银行开始的记录Select * into 银行记录表from 凭证库 where 科目名称 like ‘银行%’ and Len(科目名称)=4例2:查询科目余额表一级科目编码的记录Select * into 一级_科目余额表 from 科目余额 where Len(科目编码)=3二、多表查询Select字段1,字段2……字段N from 表1 join 表2 on 表1.字段 <关系运算符> 表2.字段 where 条件或Select A.字段1,A.字段2……A.字段N, B.字段1,B.字段2……B.字段N from 表1 as A join 表2 as B on A.字段 <关系运算符> B.字段 where 条件或Select A.字段1,A.字段2……A.字段N, B.字段1,B.字段2……B.字段N into 新表 from 表1 as A join 表2 as B on A.字段 <关系运算符> B.字段 where 条件含义:对两个表中类型相同的字段进行关系运算,查询符合关系运算的记录例1:查询凭证库与会计科目表中科目编码相同的记录select 凭证库.科目编码,凭证库.科目名称,会计科目表.科目级别 from 凭证库 join 会计科目表 on 凭证库.科目编码=会计科目表.科目编码或者select a.科目编码,a.科目名称,b.科目级别 from 凭证库 as a join 会计科目表 as b on a.科目编码=b.科目编码例2:将预算执行表与用款计划表关联,生成预算与用款表Select a.部门,a.项目,a.支付方式,a.累计服从于出,b.期末结余,b.总计 into 预算与用款表 from 预算执行表 as a join 用款计划表 as b on a.部门=b.部门 and a.项目=b.项目 and a.支付方式=b.支出类型例3:将上线支取表和提取原因表进行关联,形成带有提取原因的公积金提取表Select a.交易日期,a.单位公积金编号,a.单位名称,a.个人公积金账号,a.姓名,a.提取金额,b.提取原因,a.备注 into 公积金提取表 from 上线支取表 as a join 提取原因表 as b on a.提取原因=b.提取原因代码例4:未缴费而开户的参保情况Select a.个人帐号,a.参保人员编号,a.参保人姓名 from 缴费统计表 as a join 个人_业务信息表 as b on a.个人账号= where a.个人账号 is null三、子查询、嵌套查询Select * from 表1 where 表1.字段1 in (select 字段2 from 表2 where 条件)或Select * from 表1 into 新表where 表1.字段1 not in (select 字段2 from 表2 where 条件)或Select * into 新表from (select * from 表1 where 条件) 含义:表2的查询结果作为表1的查询条件。
51CTO下载-60道题目
where addr not in('上海市','北京市')
go
/*6在员工表employee中查找姓“王”用姓名最后一个字为“功”的员工。*/
select emp_no,emp_name from employee
go
/*11查找员工表中所属部门。(去掉重复记录)*/
select distinct dept from employee
go
/*12查找员工表中的所有记录,并按薪水由低到高进行排序。*/
select * from employee
order by salary desc
go
/*13查找出职称为经理或职称为职员的女员工的姓名、职称、性别。*/
order by qty*unit_price desc
go
/*--16、检索product 表和sale_item表中数量大于2的相同产品的产品编号、产品名称、数量、单价。*/
select a.prod_id,b.prod_name,a.qty,a.unit_price from sale_item a inner join product b
go
/*11查找员工表中所属部门。(去掉重复记录)*/
select distinct dept from employee
go
/*12查找员工表中的所有记录,并按薪水由低到高进行排序。*/
select * from employee
order by salary desc
go
/*13查找出职称为经理或职称为职员的女员工的姓名、职称、性别。*/
select查询命令可以包含的子句
一、SELECT查询命令概述SELECT查询命令是SQL语言中最常用的命令之一,用于从数据库中检索数据。
SELECT命令不仅可以简单地检索表中的所有数据,还可以具体筛选所需的数据,使得查询结果更加精确。
二、SELECT查询命令的语法结构SELECT查询命令通常包含以下子句:1. SELECT子句:用于指定需要检索的列。
可以是单个列名,也可以是多个列名,并用逗号隔开。
也可以使用“*”通配符表示检索所有列。
2. FROM子句:用于指定数据来源的表名。
在SELECT命令中,FROM子句是必须的,用于指明要从哪张表中检索数据。
3. WHERE子句:用于指定筛选条件,根据条件来筛选出符合要求的数据行。
可以使用比较运算符、逻辑运算符以及LIKE等关键词进行条件筛选。
4. ORDER BY子句:用于指定查询结果的排序方式,可以按照指定的列进行升序(ASC)或降序(DESC)排序。
5. GROUP BY子句:用于将查询结果按照指定的列进行分组,通常与聚合函数一起使用,如COUNT、SUM等。
三、其他常用的SELECT查询命令子句除了上述常见的SELECT查询命令子句外,还有一些辅助性的子句用于增强SELECT命令的功能。
1. DISTINCT关键词:用于返回唯一不同的值,去除重复的行。
2. HAVING子句:用于筛选由GROUP BY子句分组得到的数据,类似于WHERE子句,但是在分组数据上进行筛选。
3. LIMIT子句:用于限制查询结果的返回数量,通常与ORDER BY子句一起使用。
四、使用示例以下是一个简单的SELECT查询命令的使用示例:```SELECT column1, column2FROM table1WHERE conditionORDER BY column1 ASC```其中,column1和column2为需要检索的列名,table1为数据来源的表名,condition为筛选条件。
五、总结SELECT查询命令是SQL语言中非常重要的一个命令,通过灵活使用SELECT查询命令的各种子句,可以实现从数据库中精确地检索所需的数据,并对查询结果进行排序、筛选、分组等操作。
sql中select语句
sql中select语句1. 查询订单表中的所有数据SELECT * FROM 订单表;2. 查询商品表中的商品名称和价格SELECT 商品名称, 价格 FROM 商品表;3. 查询客户表中年龄大于30岁的客户信息SELECT * FROM 客户表 WHERE 年龄 > 30;4. 查询订单表中金额大于1000的订单数量SELECT COUNT(*) FROM 订单表 WHERE 金额 > 1000;5. 查询员工表中工资在2000到3000之间的员工信息SELECT * FROM 员工表WHERE 工资BETWEEN 2000 AND 3000;6. 查询客户表和订单表中共同存在的客户信息SELECT * FROM 客户表 INNER JOIN 订单表 ON 客户表.客户ID = 订单表.客户ID;7. 查询订单表中按照下单时间降序排列的前10条订单信息SELECT * FROM 订单表 ORDER BY 下单时间 DESC LIMIT 10;8. 查询客户表中不重复的城市信息SELECT DISTINCT 城市 FROM 客户表;9. 查询订单表中金额最大的订单信息SELECT * FROM 订单表 ORDER BY 金额 DESC LIMIT 1;10. 查询员工表中工资最低的员工信息SELECT * FROM 员工表 ORDER BY 工资 ASC LIMIT 1;11. 查询客户表中姓氏为张的客户信息SELECT * FROM 客户表 WHERE 姓名 LIKE '张%';12. 查询商品表中库存大于10且价格低于100的商品信息SELECT * FROM 商品表 WHERE 库存 > 10 AND 价格 < 100;13. 查询订单表中下单时间在2021年的订单数量SELECT COUNT(*) FROM 订单表WHERE 下单时间BETWEEN '2021-01-01' AND '2021-12-31';14. 查询员工表中工资的平均值SELECT AVG(工资) FROM 员工表;15. 查询客户表中年龄最大的客户信息SELECT * FROM 客户表 ORDER BY 年龄 DESC LIMIT 1;16. 查询订单表中下单时间最早的订单信息SELECT * FROM 订单表 ORDER BY 下单时间 ASC LIMIT 1;17. 查询员工表中工资在平均工资以上的员工信息SELECT * FROM 员工表WHERE 工资> (SELECT AVG(工资) FROM 员工表);18. 查询客户表中姓氏不为王的客户信息SELECT * FROM 客户表 WHERE 姓名 NOT LIKE '王%';19. 查询订单表中下单时间在2021年且金额大于1000的订单数量SELECT COUNT(*) FROM 订单表WHERE 下单时间BETWEEN '2021-01-01' AND '2021-12-31' AND 金额 > 1000;20. 查询员工表中工资在2000到3000之间且职位为经理的员工信息。
select sql语句
select sql语句
SELECT语句是SQL中最常用的语句之一。
SELECT语句通常用于从数据库中检索数据。
SELECT语句可以从一个表中选择一些列,也可以从多个表中选择一些列。
SELECT语句也可以用来计算聚合函数,如SUM、AVG、COUNT、MIN和MAX。
SELECT语句的基本语法为:
SELECT 列名1, 列名2, ... FROM 表名
SELECT语句也可以使用WHERE子句来限制选择的行。
WHERE子句可以使用运算符(如=、<、>、<=、>=、<>)和逻辑操作符(如AND、OR、NOT)来连接多个条件。
例如:
SELECT 列名1, 列名2, ... FROM 表名 WHERE 列名1>10 AND 列名2='abc'
SELECT语句还可以使用ORDER BY子句按升序或降序排列选择的行。
ORDER BY子句通过列名指定排序列,可以使用ASC(升序)或DESC(降序)指定排序方式。
例如:
SELECT 列名1, 列名2, ... FROM 表名 ORDER BY 列名1 DESC 除了基本的SELECT语句,SQL还提供了其他一些SELECT语句,如DISTINCT、GROUP BY、HAVING和JOIN等。
这些语句可以更灵活地检索和处理数据,提高数据处理效率。
- 1 -。
数据库查询表的语句
数据库查询表的语句
1. “嘿,你知道吗,SELECT * FROM table 就像打开一个宝库的钥匙呀!比如你想看看学生表里所有学生的信息,这不就派上用场啦!”
2. “哇塞,WHERE 子句那可太重要啦,就好比是个精准的筛选器呢!像要找出成绩大于 90 分的学生,WHERE 成绩>90 不就搞定啦!”
3. “哎呀呀,AND 和 OR 这俩家伙可有意思啦!AND 就像必须都满足,OR 则是满足其一就行呀!比如说找男生且成绩好的,或者女生且成绩好的,这俩就用得上啦!”
4. “嘿,GROUP BY 不就是把相似的东西归到一起嘛,就像把苹果都放一堆,香蕉都放另一堆一样!比如按班级分组统计人数,多有用呀!”
5. “哇哦,HAVING 可厉害啦,它就像是对分组后的结果再进行筛选呢!比如找出平均成绩大于 80 的班级,HAVING 平均成绩>80 就行啦!”
6. “哎呀,ORDER BY 不就是给数据排排队嘛,就像给小朋友排队一样整齐!比如按成绩高低排序,多直观呀!”
7. “嘿,JOIN 操作那可是把不同的表连接起来呀,就像把拼图拼在一起一样!像要把学生表和成绩表连起来看,JOIN 就发挥大作用啦!”
8. “哇,UNION 能把多个结果合并起来呢,这不就像把几堆糖果放到一起嘛!比如把两个查询结果合并,UNION 就好用啦!”
9. “嘿呀,LIMIT 能限制结果的数量呀,就像只拿前面几个宝贝一样!
比如只想看前 10 条记录,LIMIT 10 就好啦!”
10. “哇塞,子查询那可是个厉害的家伙呢,就像一个隐藏的小助手!比如先查出成绩最高的人的信息,再根据这个做其他操作,子查询就超有用呀!”
我的观点结论:数据库查询表的语句真是丰富多样又超级实用呀,掌握了它们,就能在数据的海洋里畅游啦!。
mysql select查找语句
mysql select查找语句MySQL是一种开源关系型数据库管理系统,为用户提供了一套结构化查询语言(SQL)用于管理和操作数据库。
在MySQL中,SELECT语句是最常用的语句之一,用于从数据库中检索数据。
首先,让我们来了解一下SELECT语句的基本语法。
下面是一个简单的SELECT语句的示例:SELECT column1, column2, ...FROM table_name;在这个语句中,我们使用SELECT关键字来指定我们要查询的列。
使用FROM关键字来指定我们要查询的表。
接下来,让我们通过一个具体的例子来说明如何使用SELECT语句。
假设我们有一个名为"employees"的表,其中包含了员工的信息,我们想要查询所有员工的姓名和薪水。
SELECT name, salaryFROM employees;在这个查询中,我们指定了"employees"表作为数据源,然后指定了我们要查询的列是"name"和"salary"。
执行这个查询后,MySQL将返回包含所有员工姓名和薪水的结果集。
除了简单的SELECT语句之外,我们还可以对查询结果进行筛选和排序。
例如,我们可以使用WHERE子句来筛选特定条件的数据。
SELECT name, salaryFROM employeesWHERE department = 'IT';在这个例子中,我们添加了一个WHERE子句来过滤只返回部门为"IT"的员工的姓名和薪水。
另外,我们还可以使用ORDER BY子句来对结果集进行排序。
SELECT name, salaryFROM employeesORDER BY salary DESC;在这个例子中,我们使用ORDER BY子句按照工资的降序对结果集进行排序。
此外,SELECT语句还支持一些聚合函数,如SUM、COUNT和AVG等。
SELECT查询语句
like
„%‟表示零个或多个字符; ‘_‟表示一个字符; 查询名字中含有‘%’使用转义字符 escape „\‟;
order by Nhomakorabea
order by column asc order by column desc 数据大多数的时候是按照插入数据时的 顺序进行显示 不指定排序字段的排列方式时,结果就 会按照升序排列。
使用rownum
一个伪字段存在,这个字段的名字叫做 rownum, 用来标识每条记录的行号,行号从1开始, 每次递增1, 当rownum和order by 一起使用时,会首 先选出符合rownum条件的记录,然后再 排序
在Select语句中使用单引号
要在Select语句中使用单引号,必须使用 两个单引号来表示。
消除重复的值
用distinct关键字来消除结果集中的重复 信息 当distinct用来修饰多个字段的时候,指 的是需要消除后面所有字段的组合重复 结果。
where
条件比较
=,!=,<>,<,>,<=,>=,any,some,all is null,is not null between x and y exsits(sub-query) in(list),not in(list) like _ ,%,escape „\„ _\% escape „\‟ not like not,and,or
to_char数字格式
格式控制符 9 含义 代表一位数字,如果该位没有数字则不进行显示,但 对于小数点后面的部分仍会强制显示
0
$
代表一位数字,如果该位没有数字则强制显示0
查询(select)相关的语句
查询(select)相关的语句一、简单查询语句================1、查询所有列select * from dept;--做练习可以,真正做开发不要这样。
2、查询指定列desc emp;select empno, ename, sal, job from emp;3、查询日期列select ename, to_char(hiredate, 'yyyy-mm-dd') from emp;4、取消重复行select distinct deptno, job from emp;5、使用算术表达式select ename, sal, sal * 12 from emp6、使用列别名select ename as NAME, sal * 12 as "ANNUALSALARY" from emp;7、处理NULLselect ename, sal, comm, sal + comm from emp;select ename, sal, comm, sal + nvl(comm, 0) from emp;8、连接字符串select ename || '的岗位是' || job from emp;9、去掉结果中的重复行select distinct job from emp;二、限制数据============1、在where子句中使用数字值select ename, sal from emp where sal > 2000;2、在where子句中使用字符值select ename, sal from emp where job = 'MANAGER';3、在where子句中使用日期值select ename, sal, hiredate from emp where hiredate > '01-1月-82';4、在where子句中使用between...and操作符select ename, sal, deptno from emp where sal between 2000 and 3000;5、在where子句中使用like操作符%:表示0个或多个字符_:表示单个字符select ename, sal, deptno from emp where ename like 'S%';select ename, sal, deptno from emp where ename like '__O';select ename, sal, deptno from emp where ename like '%a_';6、在where子句中使用in操作符select ename, sal, deptno from emp where job in ('CLERK', 'MANAGER');7、在where子句中使用is null操作符select ename, sal, deptno from emp where mgr is null;8、在where子句中使用and操作符select ename, sal, deptno from emp where deptno = 20 and job = 'CLERK';9、在where子句中使用not操作符select ename, sal, deptno from emp where comm is not null;10、显示表中前几行内容select * from emp where rownum <= 3;伪列 rownumrowid三、排序数据============1、升序排序select ename, sal, deptno from emp order by sal;2、降序排序select ename, sal, deptno from emp order by sal desc;3、使用多列排序select ename, sal, deptno from emp order by deptno asc, sal desc;4、使用非选择列表进行排序select ename, deptno from emp order by sal desc;5、使用列别名排序select ename, sal * 12 年收入, deptno from emp order by 年收入 desc;6、使用列位置排序select deptno, ename, sal from emp order by 1;四、复杂查询============1、数据分组1)分组函数max和minselect max(sal) 最高工资, min(sal) 最低工资 from emp;avg和sumselect avg(sal) 平均工资, sum(sal) 总计工资 from emp;countselect count(*) 雇员总数 from emp;count(表达式) 显示非null的总计行数2)group by和having子句使用group by进行单列分组select deptno, avg(sal) from emp group by deptno;使用group by进行多列分组select deptno, job, avg(sal), max(sal) from emp group by deptno, job;使用having子句限制分组显示结果select deptno, avg(sal) from emp group by deptno having avg(sal) < 2500;使用order by子句改变分组排序结果select deptno, avg(sal) from emp group by deptno order by avg(sal);使用数据分组的注意事项分组函数只能出现在选择列表、having子句和order by子句中。
select语句
select语句4.1.1 select语句⼀、select 查询语句1.select[all | distinct]*|列名1[,列名2,.........,列名n]from表名[where 条件表达式][group by 列名 [asc | desc ][having 条件表达式]][order by 列名 [asc | desc],.....][limit [offset]记录数];4.1.2 查询列⼀、查询所有列e onlinedb;select*from goodstype;⼆、查询指定的列1.select gdCode,gdName,gdPrice,gdSaleQty from Goods;三、计算列值1.select gdName,gdSaleQty*gdPrice from Goods;2.select uName, year(now())-year(ubirth) from users;四、为查询结果中的列指定列标题1.select gdName as商品名,gdPrice as价格,gdCity as城市from Goods;2.select gdName,gdSaleQty*gdPrice from goods;4.1.3选择⾏⼀、使⽤⽐较运算符1.where表达式1 ⽐较运算符表达式2eg: select uID,uName from Users where uID =8;eg:select uID,uName,uPhone from Users where year(uBirth)>=2000;⼆、使⽤逻辑运算符1.where[not]表达式1 逻辑运算符表达式2eg:select uID,uName,uPhone from Users where year(uBirth) >=2000and uSex'男';eg:select tID,gdname,gdprice from goods where tid=4or gdprice<=50;eg:select gdName,gdPrice from goods where not(gdPrice>50);eg:select gdName,gdPrice,gdCity from goods where gdCity='长沙'or gdCity ='西安'and gdPrice<=50;三、使⽤between and 运算符1.where表达式[not]between初始值and终⽌值eg:select gdname,gdprice from goods where gdprice between 100and500;四、使⽤in运算符1.where表达式[not]in (值1,值2,.........)eg:select gdname,gdcity from goods where gdcity in ('长沙','西安','上海');五、使⽤like运算符1.where列名[not]like'字符串'[escape '转义字符']eg:select uname,usex,uphone from users where uname like'李%';eg:select uname,usex,uphone from users where uname like'_湘%';eg:select gdname,gdprice,gdcode from goods where gdname '华为P9\_%';eg:select gdname,gdprice,gdcode from goods where gdname '华为P9|_%'escape'|';4.1.5 使⽤limit限制结果集返回的⾏数1.limit [offset,]记录数eg:select gdcode,gdname,gdprice from goods limit 3;eg:select gdcode,gdname,gdprice from goods limit 3,3;4.1.6数据分组统计⼀、使⽤聚合函数1.sum/avg/max/min ( [all | distinct ]列名|常量|表达式)eg:select sum(gdsaleqty) from goods;eg:select max(gdprice) from goods2.count ( { [ [all | distinct]列名|常量|表达式] |* } )eg: select count(*) from users;eg: select count(distinct uid) from orders;⼆、group by ⼦句1.group by[ all ]列名1, 列名2, [ ,....n][ with rollup][having 条件表达式]eg:select uid,uname,usex,ucity from users group by ucity;eg:select ucity, count (*) from users group by ucity;2.group_count([distinct]表达式[order by 列名][sparator 分隔符])eg:select ucity,group_concat(uid) as uids from users group by ucity;eg:select ucity,group_concat(uid order by uid separator '_') as uids from users group by ucity;eg:select ucity,count(*) from users where ucity in ('长沙','上海') group by ucity with rollup;eg:select ucity ,count(*) from users group by ucity having count (*)>=3;4.2.1连接查询1.select[ALL | DISTINCT ]*|列名1[,列名2,....,列名n]from表1 [别名1]JOIN表2 [别名2][on 表1.关系列 = 表2.关系列 | using(列名)][where 表达式] 4.2.2内连接1.select tname,gdcode,gdname,gdprice from goodstype JOIN goods on goodstype.tid = goods.tid where tname ='服饰';。
select查询数据库语句
select查询数据库语句一、查询所有数据SELECT * FROM 表名;这个语句可以用来查询指定表中的所有数据,*表示所有列,可以将其替换为指定的列名来查询指定的数据。
二、查询指定列的数据SELECT 列名1, 列名2, ... FROM 表名;这个语句可以查询指定表中指定列的数据,列名之间用逗号分隔,可以查询多个列的数据。
三、查询指定条件的数据SELECT * FROM 表名 WHERE 条件;这个语句可以查询符合指定条件的数据,条件可以是列名和值的比较,也可以是多个条件的组合,使用AND、OR等逻辑运算符。
四、查询数据并按照指定列排序SELECT * FROM 表名 ORDER BY 列名;这个语句可以查询指定表中的所有数据,并按照指定列的值进行排序,默认是升序排序,可以加上DESC关键字进行降序排序。
五、查询数据并指定查询结果的数量SELECT * FROM 表名 LIMIT 数量;这个语句可以查询指定表中的指定数量的数据,可以用来控制查询结果的数量,常用于分页查询。
六、查询数据并进行分组SELECT 列名1, 列名2, ... FROM 表名 GROUP BY 列名;这个语句可以查询指定表中的数据,并按照指定列进行分组,可以用来统计每个分组中的数据。
七、查询数据并进行条件统计SELECT 列名, COUNT(*) FROM 表名 WHERE 条件 GROUP BY 列名;这个语句可以查询指定表中符合条件的数据,并按照指定列进行分组,然后统计每个分组中的数据数量。
八、查询数据并进行多表连接SELECT 列名 FROM 表名 1 INNER JOIN 表名 2 ON 表名 1.列名 = 表名2.列名;这个语句可以查询多个表中的数据,并对表进行连接,连接条件是指定的列名相等。
九、查询数据并进行条件判断SELECT 列名1, 列名2, ... FROM 表名 WHERE 列名1 IS NULL;这个语句可以查询指定表中指定列的数据,并进行条件判断,判断列的值是否为NULL。
常用select语句
1、从pb导出数据:select * from ts_mxh_user_info where stat_month=200712 and city_code='E19A'; 另存类型Dbase3select * from ts_mxh_user_info where stat_month=200901 and city_code='E19A' and serial_number like ‘13%’;select * from ts_mxh_user_info where stat_month=200901 and city_code='E19A' and serial_number not like ‘13%’;select * from ts_mxh_user_info where stat_month=200901 and city_code='E19B'select * from ts_mxh_user_info where stat_month=200901 and city_code='E19C'select * from ts_mxh_user_info where stat_month=200901 and city_code='E19D'select * from ts_mxh_user_bill where stat_month=2009012、追加记录:use e:\mbg\info0712appen from e:\mbg\info0712_1appen from e:\mbg\info0712_23、核对info表:PB:select count(*),sum(bill_fee/100) from ts_mxh_user_info where stat_month=200712 ;VF:sele sum(bill_fee/100) from e:\mbg\info0812VF:sele sum(fee_sum) from e:\mbg\bill0812VF:sele sum(debt_fee/100) from e:\mbg\info0812VF:sele sum(fee_sum) from e:\mbg\debt08124、提取公话数据:引用e:\mbg\移动公话用户每月欠费清单提取乡镇团场公话通话统计Do e:\mbg\计算每月通话用户数_07年乡镇团场公话通话统计.PRGmodify command e:\mbg\统计移动公话每月欠费清单.PRGdo e:\mbg\统计移动公话每月欠费清单.PRGmodify command e:\mbg\2008年公话相关数据统计_原件.prg5、各营业部净增通话:发电子邮件计算每月通话用户数_07年乡镇团场营业厅净增通话统计0802.PRG计算每月净增通话统计表的指标语句.PRG计算营业厅当月欠费回收率_2007年5月重新改0802.prg统计移动公话和红名单等当月欠费回收率.prg6、关联集团信息化收入、短信费sele * from e:\mbg\集团信息化收入统计表_总个数577.dbf group by 手机号码sele a.*,b.city_code,b.bill_fee/100 as 收入12月,bill_fee_m/100 as 短信费12月from e:\mbg\集团信息化收入统计表_总个数577.dbf a,e:\mbg\info0712 b where a.手机号码=b.serial_num and b.bill_fee/100>0copy to e:\mbg\t1sele * from e:\mbg\集团信息化收入统计表_总个数577 where 手机号码not in (sele 手机号码from e:\mbg\t1)copy to e:\mbg\t2close alluse e:\mbg\t1appen from e:\mbg\t2copy to e:\mbg\集团信息化收入统计表_总个数580_12月收入type xls7、sele 手机号,count(*) from e:\mbg\2007年9月末梢代办放号清单group by 手机号8、提取零次用户清单发电子邮件给市场部主任业务区经理副经理管理员Do e:\mbg\提取每月零次用户的情况.PRG9、提取乡镇团场公话通话统计Do e:\mbg\计算每月通话用户数_07年乡镇团场公话通话统计.PRG10、计算代销代办每月入网第4个月的在网率核实号码是否重复:sele 手机号,count(*) from e:\mbg\4月末稍代办放号清单 group by 手机号copy to e:\mbg\t3sele * from e:\mbg\t3 where cnt>1sele er_id,a.* from e:\mbg\2007年9月末梢代办放号清单 a,e:\mbg\info0709 b where a.手机号=b.serial_num and b.arrive_tag='1'copy to e:\mbg\t0sele a.*,er_state,b.debt_fee/100 as 往月欠费,stat_month as 统计月份from e:\mbg\t0 a,e:\mbg\info0712 b where er_id=er_id order by 业务区,部门,代销商copy to e:\mbg\t1select a.*,erstate as 状态from e:\mbg\t1 a,e:\mbg\userstate b where er_state=rstatecocopy to e:\mbg\2007年9月末梢代办放号清单_在第4个月清单copy to e:\mbg\2007年9月末梢代办放号清单_在第4个月清单 type xlssele 业务区,部门,代销商,count(*) as 在网数 from e:\mbg\2007年9月末梢代办放号清单_在第4个月清单 where 状态 in ('开通','高额停机') and 往月欠费=0 group by 业务区,部门,代销商 order by 业务区,部门copy to e:\mbg\2007年9月末梢代办放号清单_在第4个月在网汇总 type xlssele er_id,a.* from e:\mbg\2007年9月营销员放号清单.dbf a,e:\mbg\info0709 b where a.手机号=b.serial_num and b.arrive_tag='1'copy to e:\mbg\t0sele a.*,er_state,b.debt_fee as 往月欠费,stat_month as 统计月份from e:\mbg\t0 a,e:\mbg\info0712 b where er_id=er_id order by 业务区,营销员姓名copy to e:\mbg\t1select a.*,erstate as 状态from e:\mbg\t1 a,e:\mbg\userstate b where er_state=rstatecocopy to e:\mbg\2007年9月营销员放号清单_在第4个月清单copy to e:\mbg\2007年9月营销员放号清单_在第4个月清单 type xlssele 业务区,营销员姓名,count(*) as 在网数 from e:\mbg\2007年9月营销员放号清单_在第4个月清单 where 状态 in ('开通','高额停机') and 往月欠费=0 group by 业务区,营销员姓名 order by 业务区,营销员姓名copy to e:\mbg\2007年9月营销员放号清单_在第4个月在网汇总 type xls10、sele from where a.in_date>={^2007-7-1} and a.substr(SERVICE_US,2,1)<>'1 anda.public_tag='0' andb.11、sele 负责人所在,负责人,count(*),sum(欠费金额),sum(扣罚金额) from e:\mbg\扣罚明细清单080112 group by 负责人所在,负责人12、李斌(李斌) 11:19:25就是在7月以后入网的用户从来没有开通过彩铃业务,剔除公话及买希腊普卡用户,要用户的手机号码及消费及是否开通sele serial_num,user_id,bill_fee/100 as 消费,user_state as 状态from e:\mbg\info0712 where arrive_tag='1' and in_date>={^2007-7-1} and substr(SERVICE_US,2,1)<>'1' and public_tag not in ('1','2','3') and user_id in (sele user_id from e:\mbg\discnt0712 where discnt_cod<>20000416 and discnt_cod<>20001933)copy to e:\mbg\t1sele a.*,erstate from e:\mbg\t1 a,e:\mbg\userstate b where a.状态=rstatecocopy to e:\mbg\未开通彩铃清单_李斌数据type xlscopy to e:\mbg\未开通彩铃清单_李斌数据deli with tab13 、前两个月月消费均在100-300元;2、客户品牌神州行天山通;2、需求1600户。
select语句
一个典型的关系型数据库通常由一个或多个被称作表格的对象组成。
数据库中的所有数据或信息都被保存在这些数据库表格中。
数据库中的每一个表格都具有自己唯一的表格名称,都是由行和列组成,其中每一列包括了该列名称,数据类型,以及列的其它属性等信息,而行则具体包含某一列的记录或数据。
以下,是一个名为天气的数据库表格的实例。
城市最高气温最低气温北京10 5上海15 8天津8 2重庆 20 13该表格中“城市”,“最高气温”和“最低气温”就是三个不同的列,而表格中的每一行则包含了具体的表格数据。
数据查询。
Select语句的语法格式如下:select column1 [, column2,etc] from tablename[where condition];([] 表示可选项)select语句中位于select关键词之后的列名用来决定那些列将作为查询结果返回。
用户可以按照自己的需要选择任意列,还可以使用通配符“*”来设定返回表格中的所有列。
select语句中位于from关键词之后的表格名称用来决定将要进行查询操作的目标表格。
Select语句中的where可选从句用来规定哪些数据值或哪些行将被作为查询结果返回或显示。
在where条件从句中可以使用以下一些运算符来设定查询标准:= 等于> 大于< 小于>= 大于等于<= 小于等于<> 不等于除了上面所提到的运算符外,LIKE运算符在where条件从句中也非常重要。
LIKE运算符的功能非常强大,通过使用LIKE运算符可以设定只选择与用户规定格式相同的记录。
此外,我们还可以使用通配符“%”用来代替任何字符串。
举例如下:select firstname, lastname, cityfrom employeewhere firstname LIKE ‘E%’;(注意,字符串必须被包含在单括号内)上述SQL语句将会查询所有名称以E开头的姓名。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') bwhere a.score>b.score and a.s#=b.s#;2、查询平均成绩大于60分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >60;3、查询所有同学的学号、姓名、选课数、总成绩;select Student.S#,Student.Sname,count(SC.C#),sum(score)from Student left Outer join SC on Student.S#=SC.S#group by Student.S#,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%';5、查询没学过“叶平”老师课的同学的学号、姓名;select Student.S#,Student.Snamefrom Studentwhere S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select Student.S#,Student.Sname from Student,SC whereStudent.S#=SC.S# and SC.C#='001' and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher whereTeacher.T#=Course.T# and Tname='叶平'));8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2 from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 <score;9、查询所有课程成绩小于60分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);10、查询没有学全所有课的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名; select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;update SC set score=(select avg(SC_2.score)from SC SC_2where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC where S#='1002') group by S# having count(*)=(select count(*) from SC whereS#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、号课的平均成绩;Insert SC select S#,'002',(Select avg(score)from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语 ,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM SC AS tGROUP BY S#ORDER BY avg(t.score)18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.C# = R.C# andL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.C# = IL.C# and IM.S#=IL.S#GROUP BY IL.C#)ANDR.Score = (SELECT MIN(IR.score)FROM SC AS IRWHERE R.C# = IR.C#GROUP BY IR.C#);19、按各科平均成绩从低到高和及格率的百分数从高到低顺序SELECT t.C# AS 课程号,max(ame)AS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数FROM SC T,Coursewhere t.C#=course.C#GROUP BY t.C#ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数 ,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数 ,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数 FROM SC21、查询不同老师所教不同课程平均分从高到低显示SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩FROM SC AS T,Course AS C ,Teacher AS Zwhere T.C#=C.C# and C.T#=Z.T#GROUP BY C.C#ORDER BY AVG(Score) DESC22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩SELECT DISTINCT top 3SC.S# As 学生学号,Student.Sname AS 学生姓名 ,T1.score AS 企业管理,T2.score AS 马克思,T3.score AS UML,T4.score AS 数据库,ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分FROM Student,SC LEFT JOIN SC AS T1ON SC.S# = T1.S# AND T1.C# = '001'LEFT JOIN SC AS T2ON SC.S# = T2.S# AND T2.C# = '002'LEFT JOIN SC AS T3ON SC.S# = T3.S# AND T3.C# = '003'LEFT JOIN SC AS T4ON SC.S# = T4.S# AND T4.C# = '004'WHERE student.S#=SC.S# andISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)NOT IN(SELECTDISTINCTTOP 15 WITH TIESISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)FROM scLEFT JOIN sc AS T1ON sc.S# = T1.S# AND T1.C# = 'k1'LEFT JOIN sc AS T2ON sc.S# = T2.S# AND T2.C# = 'k2'LEFT JOIN sc AS T3ON sc.S# = T3.S# AND T3.C# = 'k3'LEFT JOIN sc AS T4ON sc.S# = T4.S# AND T4.C# = 'k4'ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) +ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]SELECT SC.C# as 课程ID, Cname as 课程名称,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85],SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70],SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60],SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -]FROM SC,Coursewhere SC.C#=Course.C#GROUP BY SC.C#,Cname;24、查询学生平均成绩及其名次SELECT 1+(SELECT COUNT( distinct 平均成绩)FROM (SELECT S#,AVG(score) AS 平均成绩FROM SCGROUP BY S#) AS T1WHERE 平均成绩 > T2.平均成绩) as 名次,S# as 学生学号,平均成绩FROM (SELECT S#,AVG(score) 平均成绩FROM SCGROUP BY S#) AS T2ORDER BY 平均成绩 desc;25、查询各科成绩前三名的记录:(不考虑成绩并列情况)SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 3 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;26、查询每门课程被选修的学生数select c#,count(S#) from sc group by C#;27、查询出只选修了一门课程的全部学生的学号和姓名select SC.S#,Student.Sname,count(C#) AS 选课数from SC ,Studentwhere SC.S#=Student.S# group by SC.S# ,Student.Sname havingcount(C#)=1;28、查询男生、女生人数Select count(Ssex) as 男生人数 from Student group by Ssex having Ssex='男';Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex='女';29、查询姓“张”的学生名单SELECT Sname FROM Student WHERE Sname like '张%';30、查询同名同性学生名单,并统计同名人数select Sname,count(*) from Student group by Sname having count(*)>1;;31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)select Sname, CONVERT(char (11),DATEPART(year,Sage)) as agefrom studentwhere CONVERT(char(11),DATEPART(year,Sage))='1981';32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;34、查询课程名称为“数据库”,且分数低于60的学生姓名和分数Select Sname,isnull(score,0)from Student,SC,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# and ame='数据库'and score <60;35、查询所有学生的选课情况;SELECT SC.S#,SC.C#,Sname,CnameFROM SC,Student,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# ;36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;SELECT distinct student.S#,student.Sname,SC.C#,SC.scoreFROM student,ScWHERE SC.score>=70 AND SC.S#=student.S#;37、查询不及格的课程,并按课程号从大到小排列select c# from sc where scor e <60 order by C# ;38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003';39、求选了课程的学生人数select count(*) from sc;40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩select Student.Sname,scorefrom Student,SC,Course C,Teacherwhere Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC whereC#=C.C# );41、查询各个课程及相应的选修人数select count(*) from sc group by C#;42、查询不同课程成绩相同的学生的学号、课程号、学生成绩select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C# ;43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;44、统计每门课程的学生选修人数(超过10人的课程才统计)。