重点内容mysql与oracle的区别?
mysql:免费的,并发量小,数据类型(int,varchar) 主键自增:(勾选);没有自动备份;任何一个用户可以操作多个用户;不分大小的问题, oracle:收费的,并发量大,数据类型(number ,varchar) 主键自增,(创建序列);有自动备份;一个用户可以操作一个数据库.;严格区分大小写
oracle数据类型
数字:number
number(2.2)两位整数和两位小数
变长的字符类型varchar2
固定长度字符类型:char
Date 日期
select nvl(成绩列,0) from 表
如果表中成绩列有为NULL,就替换成0
count(字段)
create tablespace lanou datafile 'C:/lanou.ora' size 1000m
--注释:创建用户和密码
create user lanou3g indentified by lanou3g default tablespace lanou quota 500m on users
--赋权限
grant all privileges to lanou3g
--创建表
create table emp (
id number(4),
name varchar2(30),
age number(3),
gender char(1),
sal number(8,2)
)
---新增语句
insert into emp values(1001,'张三三',23,0,5600.45);
--主键自增
create sequence emp_seq start with 1002 increment by 1;
--测试插入语句,用序列
insert into emp values(emp_seq.nextval,'张三三',24.0,5600.45);
--提交
commit
---给张三三涨工资
update emp set sal=8000 where name='张三三'
--删除张三三(这个人离职了)
delete from emp where name='张三三';
commit;
--批量删除(id是有序和无序的)
--有序(between and)
delete from myuser where u_id between 110 and 113;
--无序(才用尾列来删除)
delete from myuser where rownum<140
--别名使用:表名 别名
select * from emp e_test
--查询用户薪水低于六千的
--分析几张表 :t_user
--分析查询字段:所有字段
--条件:sal
select * from emp where sal<5000
--and连接符必须用在where之后
--需求:查询用户薪水低语5000,姓名李四
--字段:sal 和name
select * from emp where sal<5000 and name='李四'
--like 模糊查询
--需求:查询用户薪水低于5000的,名字带李的
select * from emp where sal<5000 and name like'%李%'
--过滤 :distinct
select distinct name from emp;
--对工资的排序,正序asc(默认),倒叙desc
select * from emp order by sal asc;
--分组函数:group by ,必须与聚合函数一起使用
select count(*) from emp
select max(sal) from emp
--主键
create sequence deptno start with 1 increment by 1;
alter table emp add(deptno number);
select * from emp
select * from dept
insert into dept values(deptno.nextval,'策划部','上海');
insert into dept values(deptno.nextval,'开发部','北京')
insert into dept values(deptno.nextval,'销售部门','北京')
--联合查询
--需求一:查询4号部门下所有员工的信息
--设计2张彪
--设计字段:emp * dept dname
--关联字段: emp,deptno=d.daptno
select e.* ,d.dname from emp e join dept d on e.deptno=d.deptno where d.deptno=4
--左连接
--概念:满足坐标条件的显示,不满足为null
select e.* ,d.dname from emp e right join dept d on e.deptno=d.deptno where d.deptno=4
--注意:1.left join 两边两张表
-------2.on 后面跟条件
--分页sql(重点)
--分析分页[rownum序列--读取顺序]
select * from(
select c.*,rownum r from
(select * from emp) c
) where r<3 and r>=1
select ename from emp where deptno in (select deptno from emp where ename='SCOTT');
select * from emp where mgr>(select avg(mgr) from emp);
sal>all(select sal from emp where depton='30')
select ename from emp where job =(select job from emp where ename ='SCOTT')
--先查询每个部门的平均薪水
--比较
--设计多个字段 enamel sal
select ename from emp where sal >(select avg(sal) from emp)
--查询部门中有salesman但是不包含salesman
select * from emp
--设计的字段:job ename deptno
select ename from emp where job<>(select distinct job from emp where job='SALESMAN' )
and deptno=(select distinct deptno from emp where deptno='30')
--超找最低工资高于部门30的员工的工资和部门信息
--4.1查询所有人最低工资
--4.2查询部门30中工资最高工资的人,他的工资
--4.3比较
select min(sal) min_sal from emp where min_sal>(select max(sal) from emp deptno=30)
--5 先插工资比部门平均工资高的员工的信息
--5.1先查询部平均工资
--5.2在查部门中比平均工资高的人
--5.3比较
select ename from emp where sal>
(select avg(sal) from emp group by deptno)
========================================
首字母大写
select upper(enamel) from emp
显示正好为5个字符
select substr (ename,0,5) from emp;