数据库 oracle数据库基本知识

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中使用
原文地址:https://www.cnblogs.com/zhanggaofeng/p/6254277.html