SQL查询的基本结构由三个子句构成:select/from/where/ 。查询的输入是关系,在这些关系上进行where和select子句中指定的运算,然后产生以关系作为结果。
3.3.1单关系查询
“找出所有教师的名字啊”---select name from instructor;
如果我们想要去除重复可以在select语句后面加入关键字distinct。
select子句还可以带含有+、-*、/运算符的算术表达式,运算的对象可以是元祖的属性。---select ID,name,salary*1.1 from instructor;
“找出CS系且工资超过70000美元的教师名字“
select name
from instructor
where dep_name=’CS’ and salary>70000;
SQL 允许where子句中使用逻辑连词 and or not
3.3.2多关系查询
”找出所有的教师的名字,以及他们所在的系系名和建筑的名字“-select name,instructor.dept_name,building
from instructor,department
where instructor.dept_name=department.dept_name;
通常来说,一个SQl查询语言的含义可以理解为:
1.为from子句中的关系列出笛卡尔积。
2.在步骤1的结果上应用where子句产生的制定谓词。
3.对于步骤2结果中的元祖,输出select子句指定的属性(表达式的结果或称为元祖分量)
3.3.3自然连接-natrue join
略
3.4.1 更名运算 –as
3.4.2 字符串运算
百分号(%):匹配任意子串。
下划线(_):匹配任意字符。
模式是大小写敏感的,在字符上可以使用 like操作符实现模式匹配。使用escape关键词来定义转义字符。
like ‘ab\%cd%’escape’\’匹配所有以”ab%cd“开头的字符串。
在SQL1999中还提供similar to操作,它具备比like更强大的运算模式匹配能力。它的模式定义语法类似UNIX的正则表达式。
* 星号表示所有的属性。
3.4.4排列元祖的显示次序
select name
from instructor
where dept_name='Physics'
order by name;
order by 默认升序