码迷,mamicode.com
首页 > 数据库 > 详细

Sql学习笔记2

时间:2015-04-19 13:10:34      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

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”开头的字符串。

 

Sql学习笔记2

标签:

原文地址:http://www.cnblogs.com/Dezhong-chen/p/4438738.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!