SQL高级
规定返回要查询的个数 【top 子句】
oracle中:select * from persons where ROWNUM < 5
mySQL中:select * from persons LIMIT 5
搜索指定列的指定模式【like操作符】
select * from persons where city like ‘N%’ [查找以N开头的city,%N:表示以N结尾的city;%N%:表示city中包含N的;NOT LIKE:不包含]
where子句中规定多个值【in操作符】
select * from persons where name in ('icessun','icessun1',....)
选取介于两个值之间的数据【between操作符】
select * from persons where name [not] between 'icessun' and 'icessun1' (以字母顺序显示介于icessun 和icessun1 中的name数据)
给列取别名,或者表取别名【as操作符】
select name as a from persons
select p.name from persons as p[也可以省略as]
根据两个或者多个表中的数据,进行查询【join操作符】
left join:即使右表没有匹配,也从左表返回所有行
select * from persons left join jobs on persons.id = jobs.id order by persons.id
left join 会从左表中返回所有匹配行,即使右表中没有匹配的数据
right join:即使左表没有匹配,也从右表中返回所有行
full join:只要其中一个表存在匹配,就返回匹配行
join(inner join) :表中至少有一个匹配,则返回行
select * from persons inner join jobs on persons.id = jobs.id order by persons.id
内连接,相当于查询多个表,并且这几个表中都有关系,才能查询到结果
合并两个或者多个select语句的结果集【UNION 操作符】
union 内部的select语句必须拥有相同数量的列,列也必须要有相似的数据类型;每条select语句的列的顺序必须相同
union 默认 不允许重复的值; union all 允许重复的值
union 连接的结果集中的列,默认是第一个select语句中的列名
select name from persons union (all) select name from persons1
创建表的备份backup【select into 语句】
从一个表中选取数据,然后插入到另一个表中,对当前记录的存档
select * into 表1 from 表2
in子句:可以向数据库里面拷贝一张表 select * into 表1 in 'backup.db' from 表2:把查询出来的数据插入到表1中,再把表1拷贝到backup数据库里面
select * into 表1 from 表2 inner join 表3 on 表2.id = 表2.id order by 表2.id
创建数据表:create table 表名称 (列名称1 数据类型1,列名称2 数据类型2,.....)
创建数据库:create database my_db
表中数据的约束:在创建表的时候,对表中数据的一种约束
not null :不能为空
一个数据表中,只能有一个主键 primary key,对列起作用;可以有多个unique key :唯一约束数据表中的每一条数据,和primary key 的作用差不多
外键 foreign key :每一个表的外键指向其他表的主键 ,用来预防破坏表之间的链接动作
创建视图【view】
create view 视图名称 as select * from persons where persons.name = 'icessun';然后直接去操作这个视图:select * from 视图名称
基于sql语句结果集的可视化表,总是显示最近sql语句执行的结果集数据
删除视图:drop view 视图名称
更新视图:重新执行一遍创建视图的代码就行
日期函数【date】处理
保证插入的日期格式和数据库中的日期格式匹配
最好是保留日期的全部,而不是日期的一部分
Is Null 和 Is Not Null
null:可以作为未知或者不适用的占位符,不能和0比较,不等价,也就是说,不能用运算符号来比较,只能适用 is null 或者 is not null
select * from persons where persons.age is not null
可以直接在select 语句中进行四则运算
select p.age*3 from persons p // 对所有的查询的age,都乘以3