数据库
SQL语句
SQL查询的基本结构
单关系查询:
select 属性 from table; 例: 找出所有教师所在的系名;
select distinct 属性 from table;删除重复;
select all 属性 from table;显示指明不去除重复; 属性:property
select name from instructorwhere dept_name = ‘Comp. Sci’ and salary > 70000;
// 找出所有在computer science系且工资超过70000美元的教师的姓名
where语句中可以使用 and or not
多关系查询
select:用于列出查询结果中所需要的属性;
from: 查询求值中需要访问的关系列表;
where:作用在from子句中关系的属性上的谓词;
理解顺序: from。。。 where。。。 select
例:
select name, instructor.dept_name, building
from instructor, department
where instructor.dept_name = department.dept_name;
找出所有教师(instructor)的姓名,以及她们所在系的名称和系所在建筑的名称;
属性名前加上关系名作为前缀,表示该属性来自于哪个关系。
自然连接(natural join)
自然连接运算作用与两个关系,并产生一个关系作为结果。
例1:对于大学中所有讲授课程的教师,找出它们的姓名以及所讲述的所有课程标识。
select name, course_id
from instructor, teaches
where instructor.ID = teaches.ID;
若用自然连接运算则更简洁:
select name, course_id
from instructor natural join teaches;
例2:允许用户指定需要哪些列项 ( joing using语句 ):
select name, title
from ( instructor natural join teaches )join course using ( course_id );
附加的基本运算
更名运算:
old-name as new-name :as语句既可以出现在select子句中,也可出现在from子句中。
例1:
select name as instructor_name, course_id
from instructor, teaches
where instructor.ID = teaches.ID;
例2:
select T.name, S.course_id
from instructor as T, teachesas S
where T.ID = S.ID; //from。。。 where。。。 select
字符串运算:
1> SQL使用单引号来标示字符串: ‘Computer’、‘it''s right’ //单引号在字符串内 用两个单引号字符来表示。
/*SQL标准中 字符串的相等运算大小写敏感,但在MySQL和SQL Sever中不区分大小写 */
select instructor.*
from instructor, teaches
where instructor.ID = teaches.ID;
补充:形如select * 的select子句表示from子句结果关系的所有属性都被选中。
排列选组的显示次序
1> order by 子句:使查询结果中的元组按排列顺序显示。
例1:按字母顺序列出在Physics系的所有教师。
select name
from instructor
where dept_name = 'Physics'
order by name;
例2:按salary的讲叙列出整个instructor关系;如果有几位教师的工资相同,按姓名升序排列。
select *
from instructor
order by salary desc, name asc; //desc表示降序, asc表示升序。
select name, course_id
from instructor, teaches
where ( instructor.ID, dept_name ) = ( teaches.ID, 'Biology' ); //where instructor.ID = teaches.ID and dept_name = 'Biology' ;
集合运算
并运算 union
交运算
差运算
空值
聚集函数
嵌套子查询
数据库的修改
删除、插入、更新