1.启动一系列操作:
```
开始--cmd cmd
启动服务 net start oracleserviceorcl
进入sqlplus sqlplus
以超级管理员登录 sys/Oracle11 as sysdba
查看当前用户 show user
解锁scott alter user scott identified by tiger account unlock;
切换到scott conn scott/tiger
查看 show user
```
2.问题:
如何查看用户下有哪些表? select * from tab;
如何查看表有哪些属性?desc[ribe] tablename;
SQL: structure query language 结构化查询语言。
DQL:数据查询语言: select
DDL:数据定义语言: create,alter,drop
DML:数据修改语言: insert,update,delete
DCL:数据控制语言: commit,rollback,grant,revoke
查询: select
1、最简单的查询: select from ;
(a) 查询表中所有记录。用*
select * from emp;
(b) 查询特定属性。多个属性之间用逗号分隔。
查询每个员工的工号、姓名和参加工作时间。
select empno, ename, hiredate from emp;
(c) 可以用distinct去掉重复记录。
select deptno from emp;
select distinct deptno from emp;
select distinct deptno,sal from emp;
(d) 可以用||把多个属性连接在一起。
查询每个员工的工资,要求显示格式为: XX员工的工资是:XX
select ename,sal from emp;
select ename||'员工的工资是:'||sal from emp;
注意: 所有sql语句以分号为结束标志。
所有出现的标点符号应该是英文半角状态下的。
2、条件查询: select from where;
(a) 条件表达式的组成: 属性名 运算符 比较值
(b) 算数运算符: > < >= != <>
查询工资超过2000的员工姓名。
select ename,sal from emp where sal>2000;
(c) 逻辑运算符: not and or
查询20号部门工资超过2000的员工姓名。 deptno=20 and sal>2000
(d) in(几个中的一个),between and(连续值域)
查询20号、30号部门员工的姓名和经理号。
select ename,mgr from emp where deptno=20 or deptno=30 or deptno=40 or deptno=50;
deptno in(20,30,40,50)
(e) 空值: null.空值不代表任何一个具体的值,其与任何数进行运算,结果永远是空值。 3+null 3>null .
问题: 如何查询空值?
1. 查询哪些员工奖金为空。
select ename from emp where comm=null;
is运算符: comm is null comm is not null
2. 查询每个员工的月收入。 sal+comm
select ename,sal+nvl(comm,0) from emp;
3. 空值处理函数: nvl(a,b) ,当a为空,返回b,否则返回a.
nvl2(a,b,c)