1.创建用户:
create user username identified by password ;
grant create session, create table ,create view to username;
2.查询相关:
desc tables;
select * from table;
select fieldname1,fieldname2 from tablename;
2.1查询并排序
select fieldname from table order by fieldname desc/asc;//desc 降序 asc升序。
2.2查询表连接:
select field from table1 join table2 on (连接条件) where (查询条件);
3.创建表:
create table tablename(X type);
4.备份表:
create table tablename2 as select * from table;
5.插入数据:
insert into tablename values(values);
insert into tablename(fieldname1,fieldname2) values(values1,values2);//为制定字段插入数据。
insert into tablename2 select * from tablename;//将表1的字段全部插入表2 .
6.rownum 这是oracle自带功能 他会给插入的字段依次填一个尾子段 即rownum 且自动排序。但是只能取小或小于等于不能取大或等。
6.1 查大于可以写成子查询:select fieldname from (select rownum r,fieldname from table) where r > 10;
7.update 语句
update field set field = new field where field = new X;
8.delete 语句
delete from table;
delete from field where field = X;
9.提交 commt;
10.约束
unique //唯一约束
constraint Xname unique/not null // 添加约束 约束名 约束条件
10.1多条约束
//需要添加多表约束 在建表语句最后加“,” 然后写:
constraint Xname unique/not null/X(dieldname1,fieldname2,...);
11.键
//对于外键(foreign key) 被参考字段必须是主键。
//同时插入数据后 作为被参考字段无法用delete删除。
//主键唯一 不可重复 不过需注意有组合主键的情况。
12.alter
alter table tablename add/modify(field type);
13.不知道有多少张表时:
desc user_tables;
14.建立索引:
create index indexname on tablename(fieldname);//fieldname 是要建立的字段;
15.建立视图://视图是一个子查询 有时可以用来保护数据
create view v$_viewname as select fieldname1,fieldname2 from tablename;
16.自动递增
首先创建一个"sequence" create sequence seq;
然后select seq.nextval from dual;
16.1依次插入:
insert into fieldname values (seq.nextval,'value1','value2','...');
17.三范式://4,5范式一般不用
//三范式一般追求数据的不冗余。
17.1第一范式:
a。要有主键
b。列不可分
17.2第二范式:
不能存在部分依赖(对于组合主键,非主键部分不能仅仅依赖部分主键而不是依赖整个组合主键)//解决方法为拆分列
17.3第三范式:
非主键要一拉主键。
18.plsql
18.1 输出:
dbms_output.putline("");//这种输出方式不能打印boolean类型。
18.2 declare ://declare是声明。
例: declare
v_name varchar2(20);
begin
v_name :='myname';// ':=' 为赋值语句
dbms_output.put_line(v_name);
end;
输出结果为:myname
18.2.1 declare 错误处理:
例:
declare
v_num number :=0;
begin
v_num := 2/v_num;
dbms_output.put_line(v_num);
exception
when others then
dbms_output.put_line('error');
end;
19.常用变量类型:
binary_integer:整数,主要用来计数而不是用来表示字段类型。
number:数字类型
char:定长字符串
varchar2:变长字符串
date:日期
long:长字符串 最长2GB
boolean:布尔类型,可以取值为true,false和null值。//plsql里 boolean不赋值默认为null 而不是false。
20.table 变量类型://相当于java数组
例:
declare
type_table_emp_empno is table of emp.empno%type index by binary_integer;
v_empnos type_table_emp_empno;
begin
v_empnos(0) := 7369;
v_empnos(2) := 7839;
v_empnos(-1) := 9999;
dbms_output.put_line(v_empnos(-1));
end;
21.record 变量类型 ://相当于java类
例:
declare
type type_record_dept is record
(
deptno dept.deptno%type,
dname dept.dname%type,
loc dept.loc%type
);
v_temp type_record_dept;
begin
v_temp.deptno := 50;
v_temp.dname := 'aaaa';
v_temp.loc := 'bj';
dbms_output.put_line(v_temp.deptno||''||v_temp.dname);
end;
22.DDL语句://要加execute immediate'语句'
begin
execute immediate 'create table T (nnn varchar2(20) default ''aaa'')';//对于“aaa” 在语句例需要单引号 但是由于本身已经写在一对单引号里,所以写两个单引号。
end;
23.if语句:
例:
取出7369的薪水,如果<1200,则输出‘low’,如果<2000则输出‘middle’,否则‘high’
declare
v_sal emp.sal%type;
begin
select sal into v_sal from emp
where empno = 7369;
if(v_sal < 1200) then
dbms_output.put_line('low');
elseif(v_sal < 2000) then
dbme_output.put_line('middle');
else
dbms_output.put_line('high');
end if;
end;
24.游标 cursor 相当于指针
declare
cursor c is
select * from emp;
v_emp c%rowtype;
begin
open c;//游标必须执行打开语句才会起效。
fetch c into v_emp; //游标的移动
dbms_output.put_line(v_emp.ename);
close c;
end;
26.触发器:
create table emp2_log
(
uname varchar2(20);
action varchar2(10);
atime date
);
create or replace trigger trig //触发器关键字 trigger
after insert or delete or update on emp2 for each row
begin
if inserting then
insert into emp2_log values(USER,'insert',sysdate);
elsif updating then
insert into emp2_log values(USER,'insert',sysdate);
elsif deleting then
insert into emp2_log values(USER,'insert',sysdate);
end if;
end;
create user username identified by password ;
grant create session, create table ,create view to username;
2.查询相关:
desc tables;
select * from table;
select fieldname1,fieldname2 from tablename;
2.1查询并排序
select fieldname from table order by fieldname desc/asc;//desc 降序 asc升序。
2.2查询表连接:
select field from table1 join table2 on (连接条件) where (查询条件);
3.创建表:
create table tablename(X type);
4.备份表:
create table tablename2 as select * from table;
5.插入数据:
insert into tablename values(values);
insert into tablename(fieldname1,fieldname2) values(values1,values2);//为制定字段插入数据。
insert into tablename2 select * from tablename;//将表1的字段全部插入表2 .
6.rownum 这是oracle自带功能 他会给插入的字段依次填一个尾子段 即rownum 且自动排序。但是只能取小或小于等于不能取大或等。
6.1 查大于可以写成子查询:select fieldname from (select rownum r,fieldname from table) where r > 10;
7.update 语句
update field set field = new field where field = new X;
8.delete 语句
delete from table;
delete from field where field = X;
9.提交 commt;
10.约束
unique //唯一约束
constraint Xname unique/not null // 添加约束 约束名 约束条件
10.1多条约束
//需要添加多表约束 在建表语句最后加“,” 然后写:
constraint Xname unique/not null/X(dieldname1,fieldname2,...);
11.键
//对于外键(foreign key) 被参考字段必须是主键。
//同时插入数据后 作为被参考字段无法用delete删除。
//主键唯一 不可重复 不过需注意有组合主键的情况。
12.alter
alter table tablename add/modify(field type);
13.不知道有多少张表时:
desc user_tables;
14.建立索引:
create index indexname on tablename(fieldname);//fieldname 是要建立的字段;
15.建立视图://视图是一个子查询 有时可以用来保护数据
create view v$_viewname as select fieldname1,fieldname2 from tablename;
16.自动递增
首先创建一个"sequence" create sequence seq;
然后select seq.nextval from dual;
16.1依次插入:
insert into fieldname values (seq.nextval,'value1','value2','...');
17.三范式://4,5范式一般不用
//三范式一般追求数据的不冗余。
17.1第一范式:
a。要有主键
b。列不可分
17.2第二范式:
不能存在部分依赖(对于组合主键,非主键部分不能仅仅依赖部分主键而不是依赖整个组合主键)//解决方法为拆分列
17.3第三范式:
非主键要一拉主键。
18.plsql
18.1 输出:
dbms_output.putline("");//这种输出方式不能打印boolean类型。
18.2 declare ://declare是声明。
例: declare
v_name varchar2(20);
begin
v_name :='myname';// ':=' 为赋值语句
dbms_output.put_line(v_name);
end;
输出结果为:myname
18.2.1 declare 错误处理:
例:
declare
v_num number :=0;
begin
v_num := 2/v_num;
dbms_output.put_line(v_num);
exception
when others then
dbms_output.put_line('error');
end;
19.常用变量类型:
binary_integer:整数,主要用来计数而不是用来表示字段类型。
number:数字类型
char:定长字符串
varchar2:变长字符串
date:日期
long:长字符串 最长2GB
boolean:布尔类型,可以取值为true,false和null值。//plsql里 boolean不赋值默认为null 而不是false。
20.table 变量类型://相当于java数组
例:
declare
type_table_emp_empno is table of emp.empno%type index by binary_integer;
v_empnos type_table_emp_empno;
begin
v_empnos(0) := 7369;
v_empnos(2) := 7839;
v_empnos(-1) := 9999;
dbms_output.put_line(v_empnos(-1));
end;
21.record 变量类型 ://相当于java类
例:
declare
type type_record_dept is record
(
deptno dept.deptno%type,
dname dept.dname%type,
loc dept.loc%type
);
v_temp type_record_dept;
begin
v_temp.deptno := 50;
v_temp.dname := 'aaaa';
v_temp.loc := 'bj';
dbms_output.put_line(v_temp.deptno||''||v_temp.dname);
end;
22.DDL语句://要加execute immediate'语句'
begin
execute immediate 'create table T (nnn varchar2(20) default ''aaa'')';//对于“aaa” 在语句例需要单引号 但是由于本身已经写在一对单引号里,所以写两个单引号。
end;
23.if语句:
例:
取出7369的薪水,如果<1200,则输出‘low’,如果<2000则输出‘middle’,否则‘high’
declare
v_sal emp.sal%type;
begin
select sal into v_sal from emp
where empno = 7369;
if(v_sal < 1200) then
dbms_output.put_line('low');
elseif(v_sal < 2000) then
dbme_output.put_line('middle');
else
dbms_output.put_line('high');
end if;
end;
24.游标 cursor 相当于指针
declare
cursor c is
select * from emp;
v_emp c%rowtype;
begin
open c;//游标必须执行打开语句才会起效。
fetch c into v_emp; //游标的移动
dbms_output.put_line(v_emp.ename);
close c;
end;
26.触发器:
create table emp2_log
(
uname varchar2(20);
action varchar2(10);
atime date
);
create or replace trigger trig //触发器关键字 trigger
after insert or delete or update on emp2 for each row
begin
if inserting then
insert into emp2_log values(USER,'insert',sysdate);
elsif updating then
insert into emp2_log values(USER,'insert',sysdate);
elsif deleting then
insert into emp2_log values(USER,'insert',sysdate);
end if;
end;