1 更名运算
1) 通用形式:
old-name as new-name
2) 存在原因:
a)from 子句的两个关系中可能存在同名属性, 在这种情况下, 结果中就会出现重复的属性名
b)select 子句中使用算术表达式, 结果属性就没有名字
c) 有时候我们看某个名字不爽, 就可更改那个名字 [捂脸. jpg]
3) 示例:
- SELECT name AS instructor_name,course_id
- FROM instructor,teaches
- WHERE instructor.id = teaches.id;
- # 在这里呢? 很明显是为了凸显这个 name(名字) 是属于 instructor(教师) 的
as 子句在重命名关系中很有用重命名关系是把长的关系名变成短的, 使得查询更加方便例如
- SELECT T.name,S.course_id
- FROM instructor AS T,teaches AS S
- WHERE T.id = S.id;
如果你是在 IDE 上操作数据库, 是没啥感觉的 (因为有自动补全功能), 但在命令行中, 重命名关系就显得重要了
在上面的查询中, T 和 S 可以认为是关系的拷贝, 更准确说是关系的别名诸如 TS, 被称作相关名称, 通常也称作表别名相关变量元组变量等等
2 字符串运算
在 SQL 中, 使用一对单引号来标识字符串, 例如'hello world'而如果单引号是字符串的一部分, 那就用两个单引号表示, 如:'it''s right'表示 it's right
在 SQL 标准中, 字符串的相等运算时大小写敏感的在其他数据库方言中可能并非如此, 如 MySQL,SQL Server 中是不区分大小写的 (当然, 你也可以更改这些设置)
SQL 字符串操作函数:
1)upper(s) 将字符串转换为大写;
2)lower(s) 将字符串转换为小写;
3)trims(s) 去掉字符串后面的空格;
使用 like 实现字符串的模式匹配:
使用两个特殊的字符来描述模式 (模式匹配是大小写敏感的):
百分号 (%): 匹配任意字符串;
下划线 (_): 匹配任意一个字符;
示例:
1)str% 匹配任何一 str 开头的字符串;
2)%com% 匹配任何包含 com 子串的字符串, 例如 company,compute 等
3)_ _ _匹配只含三个字符的字符串;
4) _ _ _ % 匹配至少含三个字符的字符串;(三条下划线是没有空格, 空格也是字符)
SQL 示例:
- # 将教师名字转化为大写
- SELECT upper(name) AS upname
- FROM instructor
- where name LIKE '%e%';
- # 找出名字包含有 e 的教师的信息
- SELECT*
- FROM instructor
- where name LIKE '%e%'
instructor 表的所有数据
限制操作后的结果表
转换大写
值得注意的是:
但我们所要限制的字符串当中包含 % 或者_时, 则需要使用转义字符, SQL 中使用 escape 来定义转义字符, 例如
- # 匹配所有以开头为 ab%cd 的字符串
- like 'ab\%cd%' escape '\';
- # 匹配所有以 ab\cd 开头的字符串
- like 'ab\\cd%' escape '\';
当然转义字符不一定是这里所写的'\', 也可以是其他字符, 不过在大多编程语言当中, 用'\'来充当转义字符
3 排列元组的显示次序:
order by 子句: 默认使用升序
通用形式:
order by 要排序的属性名 <method>;
<method > 表示可写或不写, 选项有 desc(降序),asc(升序);
示例:
- # 根据属性 id 降序输出结果关系
- SELECT *
- FROM instructor
- ORDER BY id DESC ;
降序输出
4where 子句谓词的简化:
between 子句: 表示在某个闭区间内;
同理, not between 表示不再某个区间内;
- # 下面两条句子是等价的
- SELECT *
- FROM instructor
- WHERE salary BETWEEN 10000 AND 12000;
- SELECT *
- FROM instructor
- WHERE salary>=10000 AND salary<=12000;
再有:
- # 下面两条句子是等价的
- SELECT *
- FROM instructor
- WHERE salary = 66000.00 AND dept_name = 'biology';
- SELECT *
- FROM instructor
- WHERE (salary,dept_name) = (66000.00,'biology');
来源: http://www.jianshu.com/p/99287c4040a3