以前写过的一些oracle语句
这下以后用起来就方便了。可算是找到了
Orcl 数据库服务 启动项:
OracleDBConsoleorcl
OracleOraDb10g_home1iSQL*Plus
OracleOraDb10g_home1TNSListener
OracleServiceORCL
都被我配置了延迟启动。。。这样好歹 能让我先做点儿 什么。
2016.2.2今天配置成了手动启动。
GOODS_ID GOODS_NAME GOODS_PRICE GOODS_CA GOODS_PROVIDER
-------- ---------- ----------- -------- ---------------------
1 shangpin1 50 weijin 33
插入语句。
SQL> insert into goods_tb values(2,'weijin',35,'yongpin',33);
-- 修改表结构。
SQL> alter table goods_tb modify(goods_name varchar2(10));
创建表:
Create table test_tb(
Test_id number(2),
Test_name varchar(20)
);
Select * from emp where sal>all(select sal from emp where deptno=20);
添加约束:
主键约束:
alter table employee_tb add constraint pk_employee_tb_id primary key (employee_id);
外键约束:
alter table employee_tb add constraint fk_employee_tb_id foreign key (department_id) references department_tb(department_id);
复合主键:
create table depart_pos(
department_id int not null,
position_id int not null,
primary key (department_id,position_id) #设定复和主键
);
数据库各项异常:
Ora-02290 违反检查约束条件
Ora-00291 未找到父项关键字
Ora-00298 父项关键字 不匹配
Ora-00904 标识符无效
ora-00911 无效字符 【插入语句当中本来是用英文逗号分割的,而我的用的是中文的。】
大部分情况下,此错误是由于引用了不存在的列名导致的。比如select name from Studtent 当studeng表中无name列时,系统就会报此错误。
-- 数据库 命名的规范问题 tb 下划线隔开 不能使用数字开头
-- 数据库也有数据类型 varchar2
-- 创建表格
-- 表格中的字段应该选择什么样 数据类型
-- 主键id 都选择 number int
-- char 数据的长度不会经常变化的时候 varchar2 变化的时候
create table emp_tb(
emp_id number,
emp_name varchar2(20),
emp_sex char(4),
emp_age number,
emp_sal number(9,2),
emp_time date
)
create table dept_tb(
dept_id number,
dept_name varchar2(20)
)
-- 删除表格
select * from stu_tb3;
drop table stu_tb3;
-- 修改表格
-- 表结构的修改
-- 添加一个字段
alter table emp_tb add dept_id number;
select * from emp_tb;
-- 修改字段 类型
-- 你要是 改字段类型 或者 是长度的时候 一定要谨慎
alter table emp_tb modify emp_age varchar2(10)
alter table emp_tb modify emp_age int
-- 删除字段
alter table emp_tb drop column emp_age;
-- 表数据的操作
select * from emp_tb;
insert into emp_tb (emp_id,emp_name,emp_time) values(3,'zhangsan','1-1月-2016');
update emp_tb set emp_name = 'wangwu' where emp_id = 2;
delete from emp_tb where emp_id = 2;
commit;
select * from emp_tb;
-- 在当前的事物上 这只一个保存点
savepoint a;
delete from emp_tb where emp_id = 2;
savepoint b;
delete from emp_tb;
select * from emp_tb;
commit;
rollback to a;
-- 表约束的操作
-- 约束
-- 目的: 保证我们数据表数据的完成性
-- 每个字段的数据类型和长度 也都一种约束
-- not null unique check primary key foregin key
-- 没有任何约束 不行的 至少 都得有一个 主键
-- 在创建表的同时 在字段后面 直接添加
create table stu_tb1(
stu_id number not null,
stu_name varchar2(20) unique
)
-- primary key 自身有三个内容 非空 唯一 索引
create table stu_tb2(
stu_id number primary key,
stu_name varchar2(20) unique
)
-- check
create table stu_tb3(
stu_id number primary key ,
stu_name varchar2(20),
stu_sex char(4) default '男',
stu_age number check (stu_age between 18 and 60)
)
drop table stu_tb3;
select * from stu_tb1;
-- 在创建表的同时 在所有字段后面 添加约束
create table stu_tb4(
stu_id number,
stu_name varchar(2),
constraint pk_stu_tb4_id primary key(stu_id),
constraint un_stu_tb4_name unique (stu_name)
)
-- 在创建表格以后 再去添加约束
select * from emp_tb;
alter table emp_tb modify emp_name varchar(20) not null
alter table emp_tb add
constraint pk_emp_tb_id primary key (emp_id)
--
alter table dept_tb add
constraint pk_dept_tb_id primary key (dept_id)
-- 外键约束
alter table emp_tb add
constraint fk_emp_tb_dept_id foreign key (dept_id)
references dept_tb(dept_id)
--数据查询
-- 基本查询
-- 查询所有字段
select * from emp;
-- 查询指定的字段
select empno,ename,job from emp;
select distinct job,empno from emp;
-- 给查询的字段 取别名
select empno as "编号",ename as empname from emp;
-- 查询每个员工 年薪
select empno,ename,sal*12 as "年薪" from emp;
-- mysql ifnull()
select empno,ename,(sal+nvl(comm,0))*12 as "年薪" from emp;
select * from emp
-- 条件查询
-- 如果查询工资高于3000 的员工的信息;
select empno,ename,job,sal from emp where sal > 3000;
select * from emp where hiredate > '1982/1/1';
select * from emp where sal between 2000 and 3000;
select * from emp where sal >=2000 and sal<=3000;
select * from emp where ename like '%A%'
select * from emp where ename like '__A%'
-- 复习
select * from emp
-- 排序查询
-- 聚合函数查询
-- 分组查询
-- 复习
select * from emp;
select deptno,job,sal from emp where ename='SMITH';
select (sal+nvl(comm,0))*12 from emp;
---
select * from emp where empno not in(7839,7844,123,456)
select * from emp where mgr is not null;
--查询工资高于500或者是岗位为MANAGER的雇员,
--同时还要满足他们的姓名首字母为大写的J?
select * from emp
where (sal>500 or job = 'MANAGER') and ename like 'J%'
select * from emp where 1=1 and order by sal;
-- from where select order by
select * from emp order by deptno ,sal desc ;
-- 按照年薪排序
select (sal+nvl(comm,0))*12 as "年薪" ,ename from emp
order by (sal+nvl(comm,0))*12 desc;
--分组函数
select max(sal),min(sal),avg(sal),sum(sal),count(*) from emp;
select count(empno) from emp;
-- 分组查询
-- 如果你要进行 分组查询 select 中 就只能 显示 分组字段 或者 分组函数
select deptno,max(sal),avg(sal) from emp where 1=1
group by deptno order by avg(sal);
-- from where group by having select order by
select deptno,max(sal),avg(sal) from emp where 1=1
group by deptno having avg(sal)>3000 order by avg(sal);
-- 最大工资的那个人叫啥
-- 条件子查询
select ename,sal from emp where sal > (select avg(sal) from emp);
-- 笛卡尔积现象
select * from emp;
select * from dept;
select * from emp e,dept d;
-- 关联查询
-- 内连接查询
select * from emp e,dept d where e.deptno = d.deptno;
select * from emp e inner join dept d on e.deptno = d.deptno
-- 外连接查询
-- 左外联
select * from emp e left join dept d on e.deptno = d.deptno;
--select * from emp e,dept d where e.deptno =* d.deptno;
-- 右外联
select * from emp e right join dept d on e.deptno = d.deptno;
-- 全外联
select * from emp e full join dept d on e.deptno = d.deptno;
-- 自连接查询
select e.empno,e.ename,e2.empno,e2.ename
from emp e inner join emp e2 on e.mgr = e2.empno
-- 工资的级别
select * from salgrade;
select e.ename,e.sal,s.grade from emp e,salgrade s
where e.sal between s.losal and s.hisal;
-- 子查询
-- 条件子查询
-- 单列子查询
-- 单列单行
select * from emp where sal = (select max(sal) from emp);
select * from emp where deptno =
(select deptno from emp where ename ='SMITH');
-- 单列 多行
select * from emp where job in(
select distinct job from emp where deptno = 20);
--- 多列子查询
select * from emp where (job,deptno) = (
select job,deptno from emp where ename = 'SMITH');
select * from emp where sal>(
select max(sal) from emp where deptno = 30);
select * from emp where sal > all(
select sal from emp where deptno = 30);
-- from 子句子查询
select * from (select empno,ename,sal from emp)
a where a.sal = 100;
-- 分页查询
select * from (
select e.*, rownum rn from emp e
order by empno desc) a where a.rn<11 and a.rn>5;
select * from (
select e.*, rownum rn from emp e where rownum<=10
order by empno desc) a where a.rn>5;
-- 索引 提高查询的效率
-- 主键来讲 默认就有索引
-- 单列索引
create index emp_tb_index_emp_name on emp_tb(emp_name)
-- 多列索引
create index emp_tb_index_emp_name2 on emp_tb(emp_name,emp_sex)
-- 索引是在数据库表使用的后期,用来对数据库查询的一个优化
-- 大表:字段比较多, 数据比较
-- 经常会被用在where 条件, 外键字段,
select * from emp_tb;
select index_name,table_name from user_indexes
where table_name='EMP_TB';
select * from user_ind_columns where index_name='PK_EMP_TB_ID'
-- 删除索引
drop index emp_tb_index_emp_name2
drop index pk_emp_tb_id
drop primary key emp_tb;
-- 视图
-- 减少程序员所写代码
-- 起到对象权限的分配作用
create view emp_age_view as
select a.empno,a.ename,a.sal from (
select e.*, rownum rn from emp e where rownum<=10
order by empno desc) a where a.rn>5;
select * from emp_age_view;
--
drop view emp_age_view;
-- 序列创建
create sequence emp_sequence
increment by 1----每次增加几个
minvalue 1----最小值为1
nomaxvalue----不限制最大值
start with 1----从1开始
cache 10----缓存
order;
--
select emp_sequence.nextval from dual;
select emp_sequence.currval from dual;
select * from dual;
select * from dept_tb;
insert into dept_tb values(emp_sequence.nextval,'教学部');
-- 触发器
-- 前置触发 还有后置 触发
-- insert update delete
-- 行级触发 列级触发
create or replace trigger dept_tb_insert
before insert on dept_tb
for each row
begin
select emp_sequence.nextval into:New.dept_id from dual;
end;
select * from emp_tb;
insert into emp_tb (emp_name,emp_sex,emp_sal)
values('刘能','男',5000)
insert into dept_tb (dept_name) values('教学部');
select * from dept_tb;
以前写过的一些oracle语句的更多相关文章
- 53个Oracle语句优化规则详解(转)
Oracle sql 性能优化调整 1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种:a. RULE (基于规则) b. COST (基于成本) c. CHOOSE ...
- Oracle语句中IN和=的区别有哪些?
Oracle语句中IN和=的区别有: 1.首先应用范围不一样:in 可以理解为是范围内的选择:= 只有一个.例如: select sno, sname from t1 where sno in ('s ...
- [转载]T-SQL(Oracle)语句查询执行顺序
原文链接:http://blog.sina.com.cn/s/blog_61c006ea0100mlgq.html sql语法的分析是从右到左,where子句中的条件书写顺序,基本上对sql性能没有影 ...
- 性能测试常用Oracle语句
性能测试常用Oracle语句 显示数据库当前的连接数 select count(*) from v$process; 显示数据库最大连接数: select value from v$parameter ...
- oracle语句随笔
oracle语句随笔 dmp数据的导入. ; --创建用户 GRANT CONNECT,RESOURCE,DBA TO memsspc; --赋值权限 --cmd 中导入命令 IMP memsspc@ ...
- Oracle语句优化1
Oracle语句优化1 优化就是选择最有效的方法来执行SQL语句.Oracle优化器选择它认为最有效的 方法来执行SQL语句. 1. IS NULL和IS NOT ...
- SQL点滴10—使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比
原文:SQL点滴10-使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比 今天偶尔看到sql中也有with关键字,好歹也写了几年的sql语句,居然第一次接触,无知啊.看了一位博主的文章 ...
- oracle语句insert into select如何加后续插入条件
oracle语句insert into select如何加后续插入条件 2014-01-21 10:48匿名 分类:其他编程语言 | 浏览 2746 次 oracle中有批量插入语句insert i ...
- Oracle 语句中“||”代表什么啊?
Oracle 语句中“||”代表什么啊? Oracle 语句中“||”代表什么啊?跟ServerSQL中的字符串的连接符“+”是一个概念么? 1. 恩是的 是一个含义...select '1'||'2 ...
随机推荐
- leetcode@ [343] Integer Break (Math & Dynamic Programming)
https://leetcode.com/problems/integer-break/ Given a positive integer n, break it into the sum of at ...
- 阿里云slb http https配置
- fx-experience-tools
http://fxexperience.com/2012/03/announcing-fx-experience-tools/ I have some cool new stuff for you t ...
- 使用Cygwin通过ssh命令行来访问Windows8
安装Cygwin可以参考<如何在Windows中通过Cygwin来使用Linux命令>. 在Win8下貌似有个bug,需要将cygwin\bin\mintty 修改为cygwin\bin\ ...
- Android问题-DelphiXE8安装后编译Android提示SDK无法更新问题(XE10也可以解决)
资料来原:http://www.chenruixuan.com/archives/479.html (DelphiXE8 更新SDK)http://www.dfwlt.com/forum.php?mo ...
- 让UITableViewCell的分隔线宽度等于屏幕的宽度
3种方法: 1.自定义cell: 1).取消系统的分隔线 2).添加一个高度为1,宽度为屏幕宽度的UIView作为cell的子视图,通过设置frame或者约束使这个UIView始终在cell的底部 3 ...
- 几个代码片段-计算程序运行时间+获得当前目录+生成MD5
计算程序运行时间 long startTime = System.currentTimeMillis(); System.out.println("程序运行时间: " + (Sys ...
- C:移位运算符
1在向右移位时,空出的位是由0填充,还是由符号位的副本填充? 如果被移位的对象是无符号数,那么空出的位将被0填充.如果被位移的对象是有符号数,那么C语言实现既可以用0填充空出的位,也可以用符号位的副本 ...
- [C语言 - 6] static & extern
A. extern函数 一个c文件生成一个obj文件 外部函数:允许其他文件访问.调用的函数(默认函数为外部函数),不允许存在同名的外部函数 my.c //define a extern fu ...
- Castle IOC容器实践之FactorySupport Facility
PDF版本下载:http://file.ddvip.com/2008_10/1223538519_ddvip_4853.rar示例代码下载:http://file.ddvip.com/2008_10/ ...