Sql学习笔记2——SQL查询的基本结构

2.2    SQL查询的基本结构

*select相当于关系代数中的投影运算,from 相当于笛卡尔积运算,where相当于选择运算,是一个作用在from子句中关系的属性上的谓词。

1)单关系查询:

  select name

  from instructor;  /*默认为不去除重复*/

  select *

  from instructor; /* *表示所有属性*/

可以用distinct和all来指定是否去除重复。

  select distinct name

  from instructor;  /*去除重复*/

  select  name

  from instructor

  where dept_name='Comp.sci';

2)多关系查询:

     select A1,A2,……,An;

  from r1,r2,……,rm;

  where P;

  eg:

对于大学中所有讲授课程的老师,找出他们姓名以及所讲述课程标识:

     select name,course_id

  from instructor,teaches

  where instructor.id=teaches.id;

3)自然连接 

  select A1,A2,……,An;

  from r1 natural join  r2 natural join r3……natural join rm;

  上例例子可以写成:

  select name,course_id

  from instructor natural join teaches;

*using 子句,当自然连接运算的几个表中有多个相同属性时,可能会造成我们查询结果不正确,因此使用using子句来指定那些列应该相等。

  select name,title

  from (instructor natural join teaches) join course using name(course_id);

4)更名运算

无更名情况下,首先from子句的关系中可能存在同名属性,这样结果就会出现重复的属性名;其次,如果我们在select子句中使用算术表达式,则结果中属性就没有属性名;再次,有时候在实际应用中我们要根据需求改变结果中属性的名字。

as子句:oldname as newname  

eg:

  select T.name,S.course_id

  from instructor as T,teaches as S

  where T.id =S.id;

5)字符串运算

在字符串上可以使用like操作符来实现模式匹配。我们用两个特殊字符来描述模式:

百分号% :匹配任意子串。

下划线_  :匹配任意一个字符。(模式对大小写敏感)

字符串处理函数:

upper(s):将串s转换为大写

lower(s):将串s转换为小写

trim(s):去掉串s后面的空格

eg:找出所在建筑名称中包含子串Waston的所有系名

  select dept_name

  from department

  where building like ‘%Waston%';

*当查询子串中包含%或_或转义字符时,要用转义字符’\',我们在like比较运算中用escape关键字来定义转义字符。

eg:like ’ab\%cd%' escape ' \ '  匹配所有以“ab%cd”开头的字符串。

     like ’ab\\cd%' escape ' \ '  匹配所有以“ab\cd”开头的字符串。

 6)排列元组的显示次序:order by子句

  select name

  from instructor

  where dept_name='Physics'

  order by name;

*默认使用升序,可以用desc表示降序,asc表示升序

eg:

  select *

  from instructor

  order by salary desc,name asc;

7)where 子句谓词总结

包括以下:

where子句的谓词中可以对比较结果使用诸如and、or和not等布尔运算。

转载于:https://www.cnblogs.com/Dezhong-chen/p/4438738.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值