host cls 清屏
show user 当前用户
select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ -----------------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
SQL> --tab: 表(数据字典)
SQL> desc emp 查看表的结构
SQL> select * from emp; 查询所有员工的所有信息
SQL> set linesize 150 设置行宽
SQL> col ename for a8 设置列宽
SQL> col sal for 9999
SQL> / 执行上一条sql语句
SQL优化:
1. 尽量使用列名取代*(Oracle9i之后,一样),如果单纯用到*,数据库就要查询*代表什么列,这样效率低
SQL> select empno,ename,sal,sal*12
2 formemp; 查询员工的员工号 姓名 月薪 年薪,这里from写错了
上一句是一个错误语句,改正的方法有两种
1、--c命令 change
SQL> 2 首先写2,表示第2行出现错误,回车后就后出现第二行
2*form emp
SQL> c /form/from c/要修改的/修改成什么
2*from emp
2、--ed命令 edit
SQL> ed 输入ed后就会自动打开一个记事本,将原有的sql语句返回,这样就能修改了因为已写入 file afiedt.buf,保存后DOS中就修改了,再执行就没问题了。
起别名的方式
1、as “别名” 2、直接别名
例:select empno as "员工号",ename "姓名",sal 月薪,sal*12 年薪* from emp
SQL> --DISTINCT:重复记录只取一次
SQL> select DISTINCT deptno from emp; 部门就没有重复的了
SQL> select DISTINCT deptno,job from emp; 如果要两列DISTINCT作用于后面所有的列,那么先是第一列没有重复的,再作用于第二列
算数运算符
SQL> select empno,ename,sal,sal*12,comm,sal*12+commfrom emp;
SQL语句中的null值
1. 包含null的表达式都为null 只要是某一数据加减乘除null都为null
SQL> 2. null!=null null不是0,要想成为0就要用到虑空函数nvl(a,b)如果a为空,就用b替换
例:1、select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0)* from emp
这样即便列为null也没事,都替换为0了
2、查询奖金为null的员工select * from emp where comm=null;这样是查不出来的
这时要将sql改为select * from emp where comm is null
连接符 ||
显示Hello World
方式一:可以用到concat(a,b)连接函数,将ab连接 select concat('Hello',' World')from dual;
注:from dual dual表是一个伪表,仅仅用于作显示
方式二:用连接符'||'来连接 select 'Hello'||' World' from dual;
Sql命令与sqlplus命令的区别
Sql中关键字不能缩写 是一种语言 sqlplus命令关键字可以缩写 是一种环境
save c:\aa.sql 将上一条sql存到c:\aa.sql
@c:\aa.sql 取出这个sql