您的位置:首页 > 数据库

数据库笔记2015-8-29

2015-08-29 20:28 162 查看
1、select * 是效率最低的。采用投影操作的效率要高,

2、distinct 加在查询的列的前面用于去重复,跟多个列时,表示多有的列都一样时去重

3、between.. . and... 包括开头和结尾

4、in(..、..、..、) 在范围内,只要是括号中其中一个就行 相当于多个or连接

5、like ... eg like 'a%'以a开头的 like '%a%' 包含a的 下划线表示任意一个字符 like '_b%' 表示第二个字母是b的

查询包含%的 like '%\%%' escape '\' \表示转意 #也可以作为转意字符 like '%#%%' escape '#'

6、not in() 除了。。。

7、null 空; where name is null where name is not null

8、and 的优先级高于or where name=‘killy’ or salary>9000 and sex=‘男' 先执行后面的and

9、order by 默认升序 order by salary desc 降序 order by salary,name 先按salary排序 salary一样的按名字排 order by salary,name desc 说明:按salary升序排,salary相同的时候,按名字的降序排序,desc在哪个的后面 哪个就降序 若都想降序就都加desc

ordre by 7 表示按第七列升序排序

select name,salary from emp order by 1 表示按name排序2表示按salary排序 这时后面的数字表示的是投影顺序

order by + 别名 表示按别名排序

10、limit(0,3)从第一条开始取 取3条

11、concat(name,salary) 把两个列拼到一起

12、substr(字段名,从第几个位置开始,截几个)

13、ltrim()去左边的空格 rtrim去右边的空格 trim()去前后的空格 中间的不去

14、分组查询:相同字段的列合并即为分组

group by 出现在投影中 的列必须出现在group by 中 聚合函数的参数除外,出现在groupby中的列不一定出现在投影中 group by 必须放到where 后面

注意:group by 的sql中若果过滤条件中有组函数,则不能使用where 要用having ,且having 放在group by 的后面

select job,avg(salary) from employee

group by job having avg(salary)>8000

一、求每个工作种类的平均工资;select job,avg(salary) from emp group job,

15、表链接:内连接:inner join(简写为可简写为join) 只返回两张表匹配项

自然连接:在两张表中寻找列名和数据类型都相同的字段,然后自动的将他们连接起来,并返回所有符合条件的结果。它是内连接的一种

cross join 返回笛卡尔积

外连接(左连接:left join on 右连接:right join on 全连接:full join on 没有左连接跟右连接的并集,没有关联上的记录也显示出来)

可用(+)号表示 在哪个表 哪个就是匹配表 在右边就是左连接

自连接:只有一张表:员工表:select work.ename worker,mgr.ename manager from scott.emp work,scott.emp mgr where worker.mgr = mgr.empno orderby worker.ename

16、创建视图:先登录system授予权限grant create any view to tom(tom为数据库名)

create view emp as select eid, ename as employee_name, workyear as year from employees; (emp即视图 是个虚表)

select * from emp

修改视图:create or replace view emp as select eid, ename as employee_name,esalary, workyear as year from employees;

删除视图 drop view emp

利用视图 更新 数据表


通过视图, 不但可以对 基础表中的数据进行查询, 而且可以对数据表中的数据进行更新。 更新的方式非常简单 : 直接更新视图中的数据即可将 对基础表 进行相应的更新。

--当然, 并非视图中的所有列都能够 进行更新, 并反射到基础表中, 只有那些直接由基础表 获得的列可以进行更新操作。

插入视图数据
:插入以后,原表中的其他行为空,只有在视图中出现的行有数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: