设为首页 收藏本站
查看: 1005|回复: 0

[经验分享] 27. SQL -- TSQL(SELECT语句的使用,子查询,连接,通配符 )(3)

[复制链接]

尚未签到

发表于 2018-10-23 08:49:33 | 显示全部楼层 |阅读模式

  •   通配符:
  通配符一般是通过LIKE 使用的。
  T-SQL 中支持四种通配符,如表所示:
  运算 符 含 义
  %
  代表零个或多个任意字符
  _
  代表一个任意字符
  []
  指定范围内的任意单个字符
  [^]
  不在指定范围内的任意单个字符
  例如,
  “AB%”表示以AB 开始的任意字符串;
  “_cd”表示以cd 结尾的三个字符的字符串;
  “[ef]%”表示以e 或f 开始的任意字符串;
  “[s-v]ing”表示开始是s 到v,结尾是ing,长度为四个字符的字符串;
  “m[^c]%”表示以m 开始且第二个字符不是c 的任意字符串。
  例1:查询emp_id字段以P10 开始的任意字符串
  select*
  from TimeRecords
  where emp_id like 'P10%'
  例2:查询emp_id字段以P10 开始及以10 结尾的任意字符串
  select*
  from TimeRecords
  where emp_id like 'P10%10'
  例3:查询emp_id字段以P10 开始及以9 结尾的任意字符串
  select*
  from TimeRecords
  where emp_id like 'p10%[9]'
  例4:查询emp_id字段以P10 开始及以0-9 结尾的任意字符串
  select*
  from TimeRecords
  where emp_id like 'p10%[0-9]'
  例5:查询emp_id字段以P10 开始及不以0-4 结尾的任意字符串
  select*
  from TimeRecords
  where emp_id like 'p10%[^0-4]'
  例6:查询emp_id字段不是以P10 开始的任意字符串
  select*
  from TimeRecords
  where emp_id not like 'P10%'

  •   见查询类型:
  查询所有的数据行和列select * from TimeRecords
  查询部分行列——条件查询 加where
  在查询中使用列名as 别名
  查询空行is null
  在查询中使用常量列demo‘ as col1
  查询返回限制的行数top \TOP 50 PERCENT \TOP 接收变量

  •   select 查询语句基本使用:
  SELECTselect_list
  [INTO new_table ]
  FROMtable_source
  [WHERE search_condition ]
  [GROUP BY group_by_expression ]
  [HAVING search_condition ]
  [ORDER BY order_expression [ ASC | DESC ] ]
  1)、如果查询表中所有列的信息,用“*”代替列名。
  select* from TimeRecords
  2)、查询指定的列,并应用别名
  selectclock_id as clock,
  join_idas joinid,
  card_idas card
  from TimeRecords
  3)、为表名指定别名。
  select
  clock_idas clock,
  card_idas card
  from TimeRecords as tire
  或者
  selectclock_id clock,
  card_idcard
  from TimeRecords tire
  4)、消除结果集中重复的行。
  selectdistinct clock_id as clock
  from TimeRecords
  5)、查询返回限制的行数
  返回前10 行的内容:
  selecttop 10 *
  from TimeRecords
  返回总表的1%的内容:
  selecttop 1 percent *
  from TimeRecords
  6)、使用带条件的查询:
  a. 基于比条件查询
  select*
  from TimeRecords
  where clock_id = '105'
  条件:=,>,>=,'2011-06-10'
  groupby CONVERT(char(10),sign_time,121),emp_id ) as a
  groupby sdate
  orderby sdate
  语句解释:
  从TimeRecords 表中,查询出匹配sign_time 字段大于‘2011-06-10 的sign_time 字段并命名别名为sdate, emp_id 字段并命名别名为userid,并对sign_time 及emp_id 字段进行分组,且将查询结果作为虚拟表为命名别名为a,从表a 中对sdate 字段进行分组,筛选出sdate 字段及对userid 字段进行count(计数)并命名别名为int,最终对查询结果
  进行排序.
  连接查询(等值查询):
  select*
  from TimeRecords as a , TimeRecords_2as b
  where a.clock_id= b.clock_id

  •   连接,交叉连接和自连接
  连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。
  内连接的连接查询结果集中仅包含满足条件的行,内连接是SQL Server 缺省的连接方式,可以把INNER JOIN 简写成JOIN,根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种;交叉连接的连接查询结果集中包含两个表中所有行的组合;
  的连接查询结果集中既包含那些满足条件的行,还包含其中某个表的全部行,有3种形式的外连接:左外连接、右外连接、全外连接。
  a. 交叉(CROSS JOIN)
  交叉连接即笛卡儿乘积,是指两个关系中所有元组的任意组合。一般情况下,交叉查询是没有实际意义的。
  格式:from tablea cross join tableb
  例:
  select*
  from Production.Productas a crossjoin Production.ProductReview as b
  where a.ProductID= b.ProductID
  上面查询将2 个关系表的内容组合成一个表
  b. 查询(INNER JOIN ON)
  内连接是一种最常用的连接类型。内连接查询实际上是一种任意条件的查询。使用内连接时,如果两个表的相关字段满足连接条件,则从这两个表中提取数据并组合成新的记录,也就是说,在内连接查询中,只有满足条件的元组才能出现在结果关系中根据比较方式分为:
  ○1 、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结、果中列出被连接表中的所有列,包括其中的重复列。
  ○2 、不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-625220-1-1.html 上篇帖子: 27. SQL -- TSQL(SELECT语句的使用,子查询,连接,通配符 )(3) 下篇帖子: UbuntuServer最佳方案学习之一:安装Ubuntu Server
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表