sqlplus登录
普通用户登录
c:>sqlplus
请输入用户名:scott
请输入口令:
sqlplus scott/11
quit退出
管理员登录
sqlplus /nolog
连接数据库
SQL>connect /as sysdba
--查询当前用户下的所有的表
--select * from tab;
--tab是数据字典(是oracle的管理员分配给oracle普通用户的一些资源 tab是oracle系统提前定义的关键字)
scott用户下
DEPT部门表
DEPTNO DNAME LOC
--------- -------------- -----------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
--查询dept部门表结构的定义
SQL> desc dept;
名称 是否为空? 类型
----------------------------------------- -------- -------------------
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
SQL> set linesize 120 --设置行宽
SQL> set pagesize 120 --设置页
--设置每一列的宽度
SQL> col empno(列名) for 999999 --对于数字用一个9代表占1个单位
SQL> col empname(列名) for a20 --对于字符用a20表示占20个单位
--清屏
SQL> host cls
select语言后面可以跟*、多个列名、表达式、别名
--查询员工姓名、工资
SQL> select ename,sal from emp;
--别名、表达式
SQL> select ename as "姓名",sal 工资,sal*12 年薪 from emp;
姓名 工资 年薪
---------- ---------- ----------
SMITH 800 9600
ALLEN 1600 19200
--注意点:假如工资之间有空格或者其他特殊字符,必须加""
--sql语句大小写不敏感
--表达式遵循算术表达式规则
--如果SQL语句写错了,可以使用ed命令进行修改(在ed命令打开的文本框里不要加;--分号),保存后,键入"/"执行命令
oracle中的空值
--空值是无效的,未指定的,未知的或不可预知的值
--空值不是空格或者0
--包含空值的数学表达式的值都为空值(即空值与任何有效值进行计算,结果都是空值)
--滤空函数修正空值 --nvl(列名,自己想要的值)
SQL> select sal "月薪",sal*12+nvl(comm,0) 年薪 from emp;
月薪 年薪
---------- ----------
800 9600
1600 19500
--查询奖金为空的员工
SQL> select * from emp
2 where comm is null;(where comm = null这是错误写法)
--查询奖金不为空的员工
select * from emp
where comm is not null(where comm != null这是错误写法)
--连接符 "||"
SQL> select 'hello1'|| 'hello2' from emp;
--注意点:在sql语句中出现了日期和字符串要使用单引号括起来,别名是双引号
--dual虚表,由oracle管理员分配,查询和表没有任何关系的数据时,要用虚表(伪表),一个数据字典
SQL> select 'hello1'|| 'hello2' from dual;
'HELLO1'||'H
------------
hello1hello2
--distinct 删除重复行
SQL> select distinct deptno from emp;
sql优化①:select中使用列名查询比使用*查询效率更高
select子句中的别名不可以用在where子句中,但是from子句中别名可以在where中使用