账号管理
? 使用DBA登录:
? 1、运行命令行工具
sqlplus /nolog
conn sys/admin@orcl as sysdba;
? 2、解锁命令
alter user scott account unlock | lock (解锁|加锁)
? 3、测试
conn scott/tiger@orcl;
创建数据库
? 在开始菜单Oracle-…中,找到 Database configuration Assistant
常用命令
- ? sqlplus /nolog
- conn scott/tiger@msb; //进入自己创建的数据库
- show user; //查看当前用户
- set linesize 150; //修改每一行可以显示多少个字符
- set pagesize 200; //修改每一页可以显示多少个字符
- passw; //修改密码(统一密码 tiger )
SQL语言
? Sql分类
- 数据操纵语言 DML: ----对表数据的增删改查操作
- 数据定义语言 DDL: ----对数据库的创建,修改操作
- 数据控制语言 DCL: —对数据库的权限操作
实验用的数据表
- select * from tab; //查看用户下的所有表
- select * from user_tables; //详细查询当前用户下的所有表
- desc 表名; //查看表结构
表的介绍
- emp表–雇员表(employee)
- dept表–部门表(department)
- salgrade表–公司制度表
- bonus表–奖金表
添加注释
–给表添加注释 comment on table emp is ‘雇员表’; –给列添加注释 comment on column emp.empno is ‘雇员工号’;
SELECT (A)
? 格式:
? SELECT [DISTINCT] {*,column alias,…}
? FROM table alias
? Where 条件表达式
注释:
–查询雇员表工部门编号是10的员工
? select empno,ename from emp where deptno = 10;
–去除重复数据(去重复也可以针对多个字段) select distinct deptno from emp;
–在查询的过程中可以给列添加别名,同时也可以给表添加别名 select e.empno 雇员编号,e.ename 雇员名称,e.job 雇员工作 from emp e where e.deptno = 10;
注:
- 给列起别名可以加 as 也可以不加
- 给列齐别名,如果别名中包含空格,那么需要整体用双引号包含起来
- 注意只查询固定数据的时候,建议不要使用 * ,效率低
where (A)
/* Where(A) 条件比较 – =,!=,<>,<,>,<=,>=,any,some,all 判断语句 – is null,is not null 检查是否为空 – between x and y 包含 x 和 Y 的值 – in(list),not in(list) 某些值的等值判断的时候 – exists(sub-query) – like _ ,%,escape ‘\‘ _% escape ‘\’ */
– = select * from emp where deptno = 10; – != select * from emp where deptno != 10; – <> 不等于 select * from emp where deptno <> 10; – < 小于 select sal from emp where sal < 1500; – > 大于 select sal from emp where sal > 1500; – <= 小于等于 select sal from emp where sal <= 1500; – >= 大于等于 select sal from emp where sal >= 1500; – any 取其中任意一个进行判断条件 select sal from emp where sal > any(1000,2000,3000); – some some跟any是统一效果,只要大于其中某一个值都会成立 select sal from emp where sal > some(1000,2000,3000); – all 大于所有的值才会成立 select sal from emp where sal > all(1000,2000,3000);
–is null 在sql的语法中,null表示一个特殊的含义, null != null 不能使用=,!=进行判断,需要使用is或者is null select comm from emp where comm is null; –is not null select * from emp where comm is not null;
–between x and y 包含 x 和 Y 的值 select * from emp where sal between 1000 and 2000; select * from emp where sal >= 1000 and sal <=2000;
–需要进行某些值的等值判断的时候可以使用 in 和 not in –in (list) select * from emp where deptno in(10,20); –可以使用and和or关键字,and 相当于是 与 操作,or相当于是 或 操作 –and和or可能出现在同一个sql语句中,此时需要注意and和or的优先级 –and的优先级要高于or,所以要将or相关操作用括号()括起来,提高优先级 select * from emp where deptno = 10 or deptno = 20; –not in (list) select * from emp where deptno not in(10.20);
–exists(sub-query),当exists中的子查询语句能查到对应效果的时候,意味着条件满足 – 相当于双层for循环, –通过外层循环来规范内层的循环 select * from emp e where exists (select deptno from dept d where (deptno = 10 or deptno = 20) and e.deptno = d.deptno);
–模糊查询 –like _ ,%,escape ‘\‘ _% escape ‘\’ /* 在like语句中,需要使用占位符或者通配符 _(下划线) :某个字符或者数字仅出现一次 % :任意字符出现次数 escape :使用转义字符,可以自己规定转义字符
使用like的时候要慎重,因为like的效率比较低 使用lile可以参考使用索引,但是要求不能以%开头 */ –查询以S开头的用户 select * from emp where ename like(‘S%’); –查询名字以S开头且倒数第二个字符以T的用户 select * from emp where ename like(‘S%T_’); –查询名字中带%的用户 select * from emp where ename like(’%%%’)escape(’’);
order by (A)
/* order by 进行排序操作 默认情况下完成的升序 asc :是默认的排序方式,表示升序 desc :表示降序排序的操作 1、排序是按照自然顺序进行排序的,如果是数值,就按照从大到小 2、如果是字符串,就按照字典进行排序 3、在进行排序的时候可以指定多个字段,而且多个字段可以使用不用的排序方式 4、在每次执行order by 的时候,相当于做了全排序,思考全排序的效率 */ –order by 排序操作 – 对emp中的工资进行升序排序 select * from emp order by sal; – 对emp中的工资进行降序排序 select * from emp order by sal desc; –多个字段的排序 select * from emp order by sal desc,ename asc;
创建计算字段(A)
–字符串连接符 select 'my name is ’ || ename name from emp; select concat('my name is ',ename) from emp; –计算所有员工的年薪; select ename,(e.sal + nvl(e.comm,0)) * 12 from emp e;
通用函数 nvl (A)
? 引入函数:nvl(arg1,arg2),如果arg1是空,那么返回arg2,如果不是空,则返回原来的值
–计算所有员工的年薪; select ename,(e.sal + nvl(e.comm,0)) * 12 from emp e;
并集、全集、交集、差集
|