一.概念区分
数据库是一种内部联系密切、冗余度小、结构性强、独立性高、可供有关用户共享的数据集合。
数据库技术是把一些相关数据组织成数据库,并对其进行集中、统一的管理,实施很强的安全性和完整性控制的技术。
数据库管理系统是一个用来管理数据库的大型软件。它的主要功能是管理和维护数据库,接受用户提出的访问,处理数据库的各种请求。
数据库系统是指计算机系统中引入数据库后的系统构成,一般是由相关的数据库、数据库管理系统、应用程序、数据库管理人员及用户组成。
二.sql语句分类
DDL(数据库定义语句):create,alter,drop;
DML(数据操作语句):insert,delete,update,select;
DCL(权限控制语句):grant to授予权限,revoke from收回权限。
三.Oracle数据库操作
1.数字number
字符varchar2
日期类型date
2.表结构
创建表:create table 表名(不同字段用逗号分隔)
删除表:drop table 表名
修改表结构:
增加列:alter table 表名 add 列名 列属性
删除列:alter table 表名 drop column 列名
修改列属性:alter table 表名 modify 列名 列属性
3.表内容
新增:insert into 表名 (字段名)values (对应的类内容,如果是字符加单引号);
修改:update 表名 set 字段名=‘修改内容’;
删除:delete from 表名 where 修改条件;
查询:select 字段名 from 表名。
eg. 给列起别名:select name as "姓名" from person;
列计算:select id*12 as id from person;
nvl(comm,0):一个转换函数,如果comm为空,则为零,否则值为comm;
列合并:select ‘员工姓名是’||ename||',工作是'||job as "员工信息" from emp; 注意:和数据一起显示则用单引号,如果是别名则用双引号。
排序:asc升序,desc降序。 select * from emp order by sal asc,ename desc;
条件:select * from emp where job = 'clerk' and sal<3000;
模糊查询:%代表0或多个任意字符,_代表一个任意字符。select * from emp where ename like '_s%';
(1)select * from emp where sal in (6000,7000,8000);是里面的任意一个即可
(2)select * from emp where sal>any(1000,2000,3000);大于3个中任一个即可
(3)select * from emp where sal>all(1000.2000.3000);大于所有的
(4)and的优先级大于or:select * from emp where sal between 1000 and 3000;
日期转换函数:to_char(hiredate,'yyyy-mm-dd')将日期转化为varchar2
to_char(hiredate,'yyyy')只转换成年
to_date(hiredate,'yyyy-mm-dd hh24:mi:ss')第二个参数表示转化的格式
聚合函数(分组函数):max,min,sum,avg,count(数据统计),group by(分组)
eg.查询每个部门的最高工资
select max(sal) from emp group by deptno;
组合分组:group by deptno, job
查询每个部门每种工作的平均工资
select avg(sal) from emp group by deptno,job;
关键字执行顺序:where——group by——having——order by
distinct:相同元素合并
eg.查询一共有多少个不同的工作
select sum(distinct deptno) from emp;
4.多表查询(面试重点,建议找例子练习一下)
等值连接:在笛卡尔积(所有条件的组合)的基础上进行条件筛选。
自连接:同等值连接同样的道理,只是将同一个表进行连接。
外连接:分左外连接和右外连接,左外连接以作表为基准,右外连接以右表为基准。注意:等值连接和自连接是求积,外连接是求和。
eg.select * from dept d left join emp e on e.deptno = d.deptno(外连接条件,不是帅选) where empno is null;
两个表纵向连接:使用union连接(必须有相同数量的列,并且列的类型必须相同)
eg.select sname,ssex,sage from student union select tname,tsex,tage from teacher;