扒扒数据库长长知识(下载资源组合看)之 02(基本SQL SELECT语句)
2016-03-14 22:50
555 查看
1 登录
普通用户登录
C:\>sqlplus scott/11 quit退出 用户名+密码
超级用户登录
C:\>sqlplus /nolog
SQL*Plus: Release 10.1.0.2.0 - Pr
Copyright (c) 1982, 2004, Oracle.
SQL> connect /as sysdba //操作用户登录方式
已连接。
查看用户下有什么表
SQL> select * from tab; tab是数据字典 (oracle超级管理员分配给普通用的资源....,tab关键字....)
SQL> select * from dept; 查询表的所有记录
DEPTNO(部门编号) DNAME 部门名称 LOC 位置
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> desc dept 结构
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
SQL>
基本命令
> set linesize 150 设置行宽
set pagesize 140 设置页大小
SQL> select * from emp;
EMPNO(员工编号) ENAME (员工名字) JOB 工种编号
MGR HIREDATE(日志时间) SA(工资)L
COMM(奖金)
DEPTNO(部门编号)
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
已选择14行。
--- 设置列宽
数字SQL> col empno for 99999999999999999999
字符方式设置列宽
SQL> col ename for a20
SQL> select * from emp;
---清屏
host cls
======================================
select 语言(*检索所有列 部分列 表达式 别名)
select * from emp;
---显示员工姓名 员工编号 工作 月薪 年薪
select ename, empno, job, sal , sal*12 from emp;
select ename as "员工姓名" , empno "编号", job 工作, sal 月 薪 , sal*12 年薪 from emp;
--1别名: 省掉"" as
--2类名,有空格时, 不能省掉""
SQL> select ename as "员工姓名" , empno "编号", job 工作, sal "月 薪" , sal*12 年薪 from emp
员工姓名 编号 工作 月 薪 年薪
---------- ---------- --------- ---------- ----------
SMITH 7369 CLERK 800 9600
ALLEN 7499 SALESMAN 1600 19200
WARD 7521 SALESMAN 1250 15000
JONES 7566 MANAGER 2975 35700
MARTIN 7654 SALESMAN 1250 15000
BLAKE 7698 MANAGER 2850 34200
CLARK 7782 MANAGER 2450 29400
SCOTT 7788 ANALYST 3000 36000
KING 7839 PRESIDENT 5000 60000
TURNER 7844 SALESMAN 1500 18000
ADAMS 7876 CLERK 1100 13200
JAMES 7900 CLERK 950 11400
FORD 7902 ANALYST 3000 36000
MILLER 7934 CLERK 1300 15600
已选择14行。
===============
---显示员工姓名 员工编号 工作 月薪 年收入(月薪*12+comm)
select ename, empno, job, sal , sal*12+comm from emp ;
空值问题:
1 NULL空值 任何数和null运算都为null (null无穷大)
2 空值不是空 null != null
null滤空函数 nvl (a, b) -- 当a是空的时候,返回b( 其中 b可以是数字/字符串)
---字符串和日期在sql语言用单引号扩起来...
select ename, empno, job, sal , nvl (sal*12+comm, 0) from emp
SQL> ed
已写入 file afiedt.buf
1* select ename, empno, job, sal , nvl (sal*12+comm, 0) from emp
SQL> edit
已写入 file afiedt.buf
1 select ename, empno, job, sal , sal*12+ nvl(comm,0) 年收入
2* from emp
SQL> /
ENAME EMPNO JOB SAL 年收入
-------------------- ---------- --------- ---------- ----------
SMITH 7369 CLERK 800 9600
ALLEN 7499 SALESMAN 1600 19500
WARD 7521 SALESMAN 1250 15500
JONES 7566 MANAGER 2975 35700
MARTIN 7654 SALESMAN 1250 16400
BLAKE 7698 MANAGER 2850 34200
CLARK 7782 MANAGER 2450 29400
SCOTT 7788 ANALYST 3000 36000
KING 7839 PRESIDENT 5000 60000
TURNER 7844 SALESMAN 1500 18000
ADAMS 7876 CLERK 1100 13200
JAMES 7900 CLERK 950 11400
FORD 7902 ANALYST 3000 36000
MILLER 7934 CLERK 1300 15600
已选择14行。
查询奖金为空的员工
select * from emp
where comm is null
1 select * from emp
2* where comm is null
SQL> /
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
查询奖金不为空的员工
select * from emp
where comm is not null
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
-------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
========null 捣蛋鬼 ======
---连接符
select 'hello' || 'world' from emp;
select 'hello' || 'world' from dual; --伪表 虚表
dual是数据字典 (oracle超级管理员分配给普通用的资源....,tab关键字....)
SQL> select sysdate from dual;
SYSDATE
--------------
07-10月-14
SQL>
----DISTINCT 1)作用去除重复的行
1* select DISTINCT deptno from emp
SQL> /
DEPTNO
----------
30
20
10
SQL> \
2)DISTINCT 修饰多个字段的时, 当部门编号和工种都一样的时候,认为是重复的...
否则 不同行.
====DISTINCT 2个字段
select DISTINCT deptno, job from emp
SQL 和 SQL*Plus
insert SQL
update
一种语言
select
ANSI 标准SQL99
delete
关键字不能缩写
使用语句控制数据库中的表的定义信息和表中的数据
ed edit SQL*Plus
col
一种环境
Oracle 的特性之一
ibm 关键字可以缩写 db2
inf 命令不能改变数据库中的数据的值omix
集中运行
普通用户登录
C:\>sqlplus scott/11 quit退出 用户名+密码
超级用户登录
C:\>sqlplus /nolog
SQL*Plus: Release 10.1.0.2.0 - Pr
Copyright (c) 1982, 2004, Oracle.
SQL> connect /as sysdba //操作用户登录方式
已连接。
查看用户下有什么表
SQL> select * from tab; tab是数据字典 (oracle超级管理员分配给普通用的资源....,tab关键字....)
SQL> select * from dept; 查询表的所有记录
DEPTNO(部门编号) DNAME 部门名称 LOC 位置
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> desc dept 结构
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
SQL>
基本命令
> set linesize 150 设置行宽
set pagesize 140 设置页大小
SQL> select * from emp;
EMPNO(员工编号) ENAME (员工名字) JOB 工种编号
MGR HIREDATE(日志时间) SA(工资)L
COMM(奖金)
DEPTNO(部门编号)
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
已选择14行。
--- 设置列宽
数字SQL> col empno for 99999999999999999999
字符方式设置列宽
SQL> col ename for a20
SQL> select * from emp;
---清屏
host cls
======================================
select 语言(*检索所有列 部分列 表达式 别名)
select * from emp;
---显示员工姓名 员工编号 工作 月薪 年薪
select ename, empno, job, sal , sal*12 from emp;
select ename as "员工姓名" , empno "编号", job 工作, sal 月 薪 , sal*12 年薪 from emp;
--1别名: 省掉"" as
--2类名,有空格时, 不能省掉""
SQL> select ename as "员工姓名" , empno "编号", job 工作, sal "月 薪" , sal*12 年薪 from emp
员工姓名 编号 工作 月 薪 年薪
---------- ---------- --------- ---------- ----------
SMITH 7369 CLERK 800 9600
ALLEN 7499 SALESMAN 1600 19200
WARD 7521 SALESMAN 1250 15000
JONES 7566 MANAGER 2975 35700
MARTIN 7654 SALESMAN 1250 15000
BLAKE 7698 MANAGER 2850 34200
CLARK 7782 MANAGER 2450 29400
SCOTT 7788 ANALYST 3000 36000
KING 7839 PRESIDENT 5000 60000
TURNER 7844 SALESMAN 1500 18000
ADAMS 7876 CLERK 1100 13200
JAMES 7900 CLERK 950 11400
FORD 7902 ANALYST 3000 36000
MILLER 7934 CLERK 1300 15600
已选择14行。
===============
---显示员工姓名 员工编号 工作 月薪 年收入(月薪*12+comm)
select ename, empno, job, sal , sal*12+comm from emp ;
空值问题:
1 NULL空值 任何数和null运算都为null (null无穷大)
2 空值不是空 null != null
null滤空函数 nvl (a, b) -- 当a是空的时候,返回b( 其中 b可以是数字/字符串)
---字符串和日期在sql语言用单引号扩起来...
select ename, empno, job, sal , nvl (sal*12+comm, 0) from emp
SQL> ed
已写入 file afiedt.buf
1* select ename, empno, job, sal , nvl (sal*12+comm, 0) from emp
SQL> edit
已写入 file afiedt.buf
1 select ename, empno, job, sal , sal*12+ nvl(comm,0) 年收入
2* from emp
SQL> /
ENAME EMPNO JOB SAL 年收入
-------------------- ---------- --------- ---------- ----------
SMITH 7369 CLERK 800 9600
ALLEN 7499 SALESMAN 1600 19500
WARD 7521 SALESMAN 1250 15500
JONES 7566 MANAGER 2975 35700
MARTIN 7654 SALESMAN 1250 16400
BLAKE 7698 MANAGER 2850 34200
CLARK 7782 MANAGER 2450 29400
SCOTT 7788 ANALYST 3000 36000
KING 7839 PRESIDENT 5000 60000
TURNER 7844 SALESMAN 1500 18000
ADAMS 7876 CLERK 1100 13200
JAMES 7900 CLERK 950 11400
FORD 7902 ANALYST 3000 36000
MILLER 7934 CLERK 1300 15600
已选择14行。
查询奖金为空的员工
select * from emp
where comm is null
1 select * from emp
2* where comm is null
SQL> /
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
查询奖金不为空的员工
select * from emp
where comm is not null
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
-------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
========null 捣蛋鬼 ======
---连接符
select 'hello' || 'world' from emp;
select 'hello' || 'world' from dual; --伪表 虚表
dual是数据字典 (oracle超级管理员分配给普通用的资源....,tab关键字....)
SQL> select sysdate from dual;
SYSDATE
--------------
07-10月-14
SQL>
----DISTINCT 1)作用去除重复的行
1* select DISTINCT deptno from emp
SQL> /
DEPTNO
----------
30
20
10
SQL> \
2)DISTINCT 修饰多个字段的时, 当部门编号和工种都一样的时候,认为是重复的...
否则 不同行.
====DISTINCT 2个字段
select DISTINCT deptno, job from emp
SQL 和 SQL*Plus
insert SQL
update
一种语言
select
ANSI 标准SQL99
delete
关键字不能缩写
使用语句控制数据库中的表的定义信息和表中的数据
ed edit SQL*Plus
col
一种环境
Oracle 的特性之一
ibm 关键字可以缩写 db2
inf 命令不能改变数据库中的数据的值omix
集中运行
相关文章推荐
- 扒扒数据库长长知识(下载资源组合看)之 00(oracle简介)
- java之redis篇(spring-data-redis整合)
- oracle基本总结
- mysql 中文乱码问题
- SQL Server 2016 RC0 安装(超多图)
- 在mac os上安装mysql5.7.11
- sqlite查看所有表名、判断表是否存在,字段名及字段信息
- Servlet+数据库建表
- MySQL二进制日志操作
- mysql下忘记密码的解决办法
- C#数据库——用多线程来组合一个SQL语句
- 经典SQL语句大全
- Oracle存储过程中异步调用的实际操作步骤
- MySQL的高级查询
- 第56课:Spark SQL和DataFrame的本质
- mysql安装zip
- 教务管理系统-数据库设计初稿
- 深入分析MySQL ERROR 1045 (28000)
- sqlserver 游标
- 图解MySQL5.5详细安装与配置过程