1.substr
SUBSTR (str, pos) // 在str中从pos位置开始截取后面的字符串,标示符从1开始
适用于mysql和oracle
SUBSTR(str,pos,len) // 在str中从pos位置开始截取len个长度的字符串,标示符从1开始
例:Geography 表
Region_Name | Store_Name |
East | Boston |
East | New York |
West | Los Angeles |
West | San Diego |
SELECT SUBSTR(San Diego,2,4)
FROM
Geography
WHERE Store_Name='San Diego';
结果:'an D'
2.LIKE
根据规则挑选出符合要求的字段
'A_Z': 所有以 'A' 起头,中间加一任意字符,且以 'Z' 为结尾的字串。 'ABZ' 和 'A2Z' 都符合这一个模式,而 'AKKZ' 并不符合 (因为在 A 和 Z 之间有两个字原,而不是一个字原)。
'ABC%': 所有以 'ABC' 起头的字串。举例来说,'ABCD' 和 'ABCABC' 都符合这个套式。
'%XYZ': 所有以 'XYZ' 结尾的字串。举例来说,'WXYZ' 和 'ZZXYZ' 都符合这个套式。
'%AN%': 所有含有 'AN' 这个套式的字串。举例来说, 'LOS ANGELES' 和 'SAN FRANCISCO' 都符合这个套式。
like常用通配符:
通配符 | 意义 |
---|---|
% | 一个或多个字符 |
_ | 一个字符 |
[str] | str中的任一字符 |
[!str]/[^str] | 不含str中的任一字符 |
3.WHERE/GROUP BY/HAVING
当同时含有以上三个语句时,执行顺序为
执行where子句查找符合条件的数据;
使用group by 子句对数据进行分组;对group by 子句形成的组运行聚集函数计算每一组的值;
最后用having 子句去掉不符合条件的组。
where中不能使用聚合函数,而having可以
4.IN
select * from 表名 where 字段名 in (a1,a2,...) //查找字段名为a1,a2...的表信息
5.INTERSECT和union和union all
union是两个结果集的并集,INTERSECT是两个结果集的交集,union all不同于union,它会列出所有的值,包括重复的
6.trim和ltrim和rtrim
trim是删除左右两边的空格数
ltrim是删除左边的空格数
rtrim是删除右边的空格数
trim('字符1' from '字符串2') 分别从字符2串的两边开始,删除指定的字符1。
7.CONCAT( )
concat(str1,str2) // 将str1和str2拼接起来
8.创建索引
create index index_name on 表名(字段名)
如果需要将索引按降序排列
create index index_name on 表名(字段 desc)
9.外键
外键是为了确保资料的完整性,比如A表是用户的信息,B表是用户的采购信息,这时候我们必须确保B表的用户id在A表中存在
A 表
栏位名 | 性质 |
SID | 主键 |
Last_Name | |
First_Name |
B表
栏位名 | 性质 |
Order_ID | 主键 |
Order_Date | |
Customer_SID | 外来键 |
Amount |
建表时创建外键
create table B{
Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
primary key(Order_ID),
foreign key (Customer_SID) references A(SID)
};
已有主键添加外键
alter tabe B add foreign key (Customer_SID) references A(SID);
10.sql中的join
join | 意义 |
---|---|
inner join | 返回左右表中匹配的行 |
left join | 返回左表中所有行,即使在右边没有匹配的值 |
right join | 返回右表中所有行,即使在左边没有匹配的值 |
full join | 返回左右表所有的行,不匹配的值用null补齐 |
11.sql中的约束
unique
列中元素必须唯一
primary key
为列集合提供列唯一性约束
主键必须唯一且不能为空
一张表应该有一个主键,且只能有一个主键。
可以设置多个字段为主键,即复合主键。
check
check约束用于限制列中的值的范围。
12.Auto-increment
新纪录在插入表时会生成一个唯一的值
14.视图view
基于 SQL 语句的结果集的可视化的表
CREATE VIEW view_name AS
SELECT * FROM 表名 WHERE 条件
15.group by
select的字段要么在group by中出现,要么通过聚合函数出现,不能出现一对多的形式