sql的一点总结<一>
sql总结
1.常见的数据库对象有哪些?
表(table) 视图(view) 序列(sequence) 索引(index) 同义词(synonym)
存储过程(procedure) 存储函数(function) 触发器(trigger)
2.表:数据的主要存储方式,由行和列组成
视图:存储起来的select语句。
对视图中数据的DML操作,会导致创建视图使用的表中的数据的修改。
create view emp_vu
as
select department_id,avg(salary) dept_avg_sal
from employees
group by department_id;
--with read only
select * from emp_vu;
序列:提供了一系列有规律的数值,常用来作为表的主键的值
create sequence emp_id_seq
start with 1001
increment by 1
maxvalue 10000
--minvalue
--cycle/nocycle
--cache/nocache
1)nextval / currval
select emp_id_seq.currval from dual;
select emp_id_seq.nextval from dual;
create table emp(
id number(10),
name varchar2(15)
)
insert into emp
values(emp_id_seq.nextval,'BB');
select * from emp;
裂缝:①多个表共用一个序列②出现回滚③出现异常
索引(index):当使用索引作用的列作为查询条件进行查询时,可以提高查询的效率。
--如何创建索引:①自动创建(声明为主键或唯一性约束的列) ②手动创建
create index emp_sal
on employees(salary);
3.重点:表
DDL:CREATE TABLE;ALTER TABLE;TRUNCATE TABLE;DROP TABLE;RENAME .. TO ..
不可回滚,即意味着:自动提交
--1.创建表
--1.1“白手起家”
create table dept(
dept_id number(10),
dept_name varchar2(15),
location_id varchar2(10),
birth Date
)
select * from dept;
--1.2基于现有的表,创建
create table emp1
as
select employee_id id,last_name name,hire_date,salary
from employees
--where department_id = 80;
where 1=2;
select * from emp1;
--1)对现有的表的复制/空表
create table emp_copy
as
select * from employees
--where 1=2;
select * from emp_copy;
--2.修改表
--2.1增加一个列
ALTER table emp
add(salary number(10,2) default 2000);
select * from emp;
--2.2修改现有的列
alter table emp
modify(salary number(15,2));
insert into emp(id,name)
values(1004,'CC');
--2.3重命名现有的列
alter table emp
rename column salary to sal;
--2.4删除现有的列
alter table emp
drop column sal;
--3.重命名现有的表
rename emp to employee;
select * from employee;
--4.清空表
truncate table employee;
rollback;
--5.删除表
drop table employee;
DML:增、删、改、查
--增insert into ...
--1.一条一条的添加
select * from dept;
insert into dept
values(,,,);
insert into dept(dept_id,location_id,dept_name)
values(,,);
--2.导入数据
insert into dept(dept_id,location_id,dept_name)
select department_id,location_id,department_name
from departments;
alter table dept
modify(dept_name varchar2(20));
--删
delete from dept
where dept_id < 40;
--改
update dept
set location_id = 1700
where dept_id = 20;
commit;
--查询(重中之重)
select .... --分组函数(count / max / min / avg / sum)
from ...,....--多表连接
where ...--过滤条件和 多表的连接条件(若不写,会出现笛卡尔积的错误)
group by ...--凡是在select中出新了分组函数,则没有使用分组函数的列要作为group by的条件
having avg(..) ...--分组函数作为过滤条件,要使用having
order by ... asc/desc;
--存储起来的pl/sql语句:
declare
--声明变量、记录类型、游标
begin
--执行部分
exception
--异常处理部分
end;
--存储过程(procedure) :没有返回值
create or replace procedure ... (param1 param1_type,param2 param2_type)
is
begin
end;
--存储函数(function) :有返回值
create or replace function ...(param1 param1_type,param2 out param2_type)
return 变量类型
is
begin
...
return ...;
end;
--触发器(trigger)
create or replace trigger ...
after/before
update/delete/.. on 表名
begin
end;
<!-- Start -->
获知及时信息,请关注我的个人微信订阅号:0与1的那点事

<!-- End -->
本文为博主原创文章,转载请注明出处!
http://www.cnblogs.com/libingbin/
感谢您的阅读。
sql的一点总结<一>的更多相关文章
- java.util.Date和java.sql.Date 一点区别
最近无意中发现,在oracle中同一样的一个Date类型字段,存储的日期格式有两种不同的情况,第一种是2011-1-1 12:00:00,第二种是2011-1-1,仔细查找发现在向数据库中写数据的时候 ...
- sql注入一点小心得
好久没写技术博客,最近研究产品关于用户体验方面较多,加上项目突然比较多,设计原型.跟进开发.设计师等工作着实没时间写博客. 接下来技术上主要php深入学习和mysql优化.这两天看了关于sql注入方面 ...
- SQL语句一点小心得
在Sqlserver中 if 语句后面的语句加begin end 括起来 问题:执行速度问题,在存储过程中没有加begin end 执行速度很慢,加了begin end执行速度加快 ALTER PRO ...
- iBATIS.net获取运行时sql语句
[本文原创,第一次离首页如此之近.发在候选区攒攒rp,管理员看着不合适可以撤下.] 虽然只在iBatis的世界里小打小闹匆匆数月,却历经数次与领导和同事激辩,再通过不懈努力学习和开发积累,楼猪终于被它 ...
- SQL basic
Function 从例子学习 drop function dbo.getWorkingDateCount; --getWorkingDateCount = functionName CREATE FU ...
- 关于MAX()函数的一点思考
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/103 考虑如下表和sql: CREATE TABLE `ikno ...
- 渗透之路基础 -- SQL进阶(盲注和报错注入)
SQL注入之盲注 实战过程中,大多情况下很少会有回显,这个时候就要去使用盲注技术 盲注,Blind SQL Injection,听这名字就感觉整个过程就是一个盲目的过程 当注入时,没有任何提示的时候, ...
- (八)动态 sql
目录 什么是动态 sql sql 片段 foreach 标签 什么是动态 sql 我们之前在映射文件中,配置 sql 的时候,其实都是静态的 : <!--复杂查询--> <selec ...
- 怎样优化SQL
[原则一:选择需要优化的SQL] 1,选择需要优化的SQL:不是所有的SQL都需要优化,在优化的过程中,首选更需要优化的SQL; 怎么选择?优先选择优化高并发低消耗的SQL: 1,1小时请求1W次,1 ...
随机推荐
- 结对编程--Goldpoint Game
黄金点游戏 黄金点游戏描述: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值. ...
- 在octave语言中K-means聚类算法求聚类中心的向量化计算
使用octave编程的时候,一定要注意使用向量化编程的思想,下面我就说说我今天做题遇到的一个K-means聚类问题,如何使用octave中的函数向量计算聚类中心centroids. octave几个函 ...
- 基于FPGA的OLED真彩色动态图像显示的实现
源:基于FPGA的OLED真彩色动态图像显示的实现 作为第3代显示器,有机电致发光器件(Organic Light Emitting Diode,OLED)由于其主动发光.响应快.高亮度.全视角.直流 ...
- ASIHTTPRequest异步请求
我们运行程序,如果网速很慢,查询的时候会一直黑屏,直到请求结束画面才出现,这样用户体验很不好.因此同步请求一般只是在某个子线 程中使用,而不在主线程中使用.异步请求的用户体验要比同步请求好,因此一般情 ...
- A股暴跌三日市值蒸发4.2万亿 股民人均浮亏超2万
A股暴跌三日市值蒸发4.2万亿 股民人均浮亏超2万 http://finance.qq.com/a/20150508/010324.htm?pgv_ref=aio2015&ptlang=205 ...
- Unity3D ——强大的跨平台3D游戏开发工具(五)
第九章 图形用户界面类G.U.I 您在玩很多3D游戏的时候,不知是否注意到在游戏界面中,总有一些图形和文字信息是不随着3D视角的改变而改变的.这也是由于游戏本身的要求而决定的.比如说英雄的生命值,聊天 ...
- git 关联远程库(https协议)
1.在oschina上新建库 2.在本地文件夹右键->"git Bash here" 3.设置全局变量: git config --global user.name &quo ...
- 解决VirtualBox下安装虚拟机(Ubuntu)出错(不能为虚拟电脑Ubuntu打开一个新的任务)的有关问题
[转]http://www.myexception.cn/program/1964906.html 解决VirtualBox下安装虚拟机(Ubuntu)出错(不能为虚拟电脑Ubuntu打开一个新的任务 ...
- bzoj1121
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1121 题解: 神题啊,妈的不会写的都去吃屎吧.
- UVa 10718 - Bit Mask
题目大意:给一数N,在区间[L, U]上找到一个数M使得M| N的值最大,如果有M有多个可能值,取最小的那个值. 从最高位开始逐位判断,如果N的该位为0,为使M | N的值最大,M的该位应考虑置为1, ...