sql知识总结

分页查询
在oracle中  分页查询通过隐含的rownum查询
select *
from(
select rownum r,*
from(slect * from
from tb)
where rownum<=100 )      只能小于
)where r>=90        这里注意外嵌套后r已经是表内列,通过嵌套确定要显示的列


mysql中
通过limit x,y的方式确定第x行起(+1),后再显示y行
任何情况下的查询语句,limit都在最后,查询的越多越慢
select distinct concat
from
where
group by
order by 
limit


表连接
表连接是连接字段,并筛选掉一部分不符合条件的行,注意这里字段有重复部分没有删除,所以不能作为嵌套部分,所谓内连接就是所连接的表都去除一部分


注意这里行只减不增


不管内外连接都是非标准的
内连接依然成为标准如下:
select e.id,d.name(查询条件中注意有多行重复,用别称区分)


from enter e,docker d  注意逗号,注意在最开始的from中简写表名称
where 连接条件
e.id=d.id;

and 连第三张表的条件
注意还可以加普通筛选条件

使用表连接时注意查找共性元素

外链接是不去除条件,也是非标准语句,由各厂商自定义
a *=b右
a =*b左
a(+)=b左  oracle
a=b(+)右
一般外链接语句,inner和outer都可以省略
a inner join b
a left outer join b
a right outer join b
a full join b  mysql不支持
都在from中过滤:
from a (left) join b on(条件)
(不需要加and)join c on(条件)。。。
直接后面加语句继续连多张表
select *
from employees e left join departments d
     on(e.department_id=d.department_id)
     left join locations l
     on(d.location_id=l.location_id);
left语句从左表开始不丢行。


事务
begin commit  rollback
start transaction


一组sql必须全部执行,否则回滚,最基本的数据操作单位
ACID
atomic
consistency
isolation
durancy


四层隔离
写法:set tx_isolation=' '
read-uncommitted
脏读,重写,幻读     一起读写,而且读取未提交的日志文件
read-committed
重写,幻读           不读取未提交部分,但是读写同时进行,每次查的结果不一样
repeatal-read
幻读(一般默认为)
      查询都是第一次查询的结果,只在本地进行,(所以不知道最新数据),另外只有在commit或者***操作已经变动的数据,才会返回最新数据。。。
serializable   
最高安全但最低效率

索引 
create index name
on table(id或者,name)
或者:两个字段同时索引,注意只对字段前面所搜


drop index  name


innodb和myisam都是
B+tree结构
最多搜索 n*log(n为底)X    X为总量,公式为运算次数。


视图  
注意不存数据,但是表面可以当做表
主要是为了安全(隐藏表),便捷
创建
create view 名称
as
select。。。
和关联记忆
create table tb
as
select。。。。。

查看
类似表desc,show table..\G,show view\G


删除
drop view 名称。


explain
显示可能用到的约束,用到的约束,字段数据宽度,搜索行数
阅读更多
文章标签: 学习笔记
个人分类: 数据库
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭