Oracle+总结 (1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle
SQL datebase (DB)
Structured query language 结构化查询语言
DDL(数据定义语言)
Date definition language
create table 建表
alter table 修改表结构
drop table 删表
column data type width constraints(约束)
DML(数据操作语言)
Data manipulation language
insert update delete
data row record
TCL(事物控制语句)
Transcation control language
commit(提交) rollback(回滚) savepoint
DQL(数据查询语言)
Data query language
select
Install software rdbms 安装软件
create database 创建数据库
登录数据库sqlplus username/password
ORACLE_SID(环境变量) 数据库对应的实例的名字,该名字决定了连接哪个具体的数据库
show user查看当前用户
desc tablename查看表结构desc describe的缩写
查询员工的姓名,和工资
select first_name,salary from s_emp;
查询员工的名字和职位
select first_name,title from s_emp;
edit修改sql语句l 查看/运行
select * from s_dept; 列出部门表的所有信息
列出每个员工的年薪
select first_name,salary*12 from s_emp;
列出每个员工的总收入
select first_name,salary*12*(1+commission_pct/100) "tol sal" from s_emp;
空值会导致算术表达式为空,Oracle认为null为无穷大
select first_name,salary*12*(1+nvl(commission_pct,0)/100) tol_sal,
Commission_pct
from s_emp
nvl(p1,p2)
if(p1 is null) then return p2;
else return p1;
coalesce 和nvl实现的是同样的功能,nvl只能用在Oracle,coalesce可以用在多种数据库,nvl的两个参数的类型必须一致
给列起别名在列后直接跟别名,别名有空格,或者大小写敏感,要给别名加“”
将姓和名拼接起来''表示字符串,“”表示别名,||表示字符串的拼接select first_name||last_name employee from s_emp;
select first_name||' '||last_name employee from s_emp;
select first_name||' is in department '||dept_id||'.' from s_emp;
列出有哪些部门
select distinct name from s_dept;
distinct 去重(null值夜只保留一个),只能放在select后
列出公司有哪些不同的职位
select distinct title from s_emp;
set feed on显示查询返回的记录数
各个部门有哪些不同的职位
select title,dept_id from s_emp;部门号和职位联合起来唯一
列出工资大于1000的员工
select first_name,salary from s_emp where salary>1000;
年薪大于12000的员工(where语句后的字段最好不要使用表达式,影响效率) select first_name,salary*12 from s_emp where salary>1000;
where子句不能跟列的别名
列出Carmen的年薪
select first_name,salary from s_emp where first_name='Carmen';
哪些人的职位是Stock Clerk
select first_name,title from s_emp where title='Stock Clerk';
哪些员工的工资在1550-2000之间
select first_name,salary from s_emp where salary>=1550 and salary<=2000;
select first_name,salary from s_emp where salary between 1550 and 2000;
列出部门号为31,41,43的员工的工资
select first_name,salary,dept_id from s_emp where dept_id=31 or
dept_id=41 or dept_id=43;
select first_name,salary,dept_id from s_emp where dept_id in (31,41,43);
select first_name,salary,dept_id from s_emp where dept_id =any (31,41,43); %表示0或多个字符
_表示任意一个字符
select last_name from s_emp where last_name like 'M%';
系统表,user_tables 记录数据库中有哪些表
查询当前用户下有哪些表
select table_name from user_tables;
查找用户下所有以“s_”的表名
select table_name from user_tables where table_name like 'S\_%' escape '\';
escape '\' 表示定义\为转义字符
哪些员工没有提成
select first_name,commission_pct from s_emp where commission_pct is null; 判断字段的值是否为空is null 而不是=null
哪些员工有提成
select first_name,commission_pct from s_emp where commission_pct is not null;