数据库学习相关常用语句

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;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值