oracle課堂隨筆--第十四天

來源:互聯網
上載者:User

標籤:select   miss   修改表   validate   自動   erro   varchar2   for   exist   

集合操作

select employee_id, job_id from employees

union all          不去除  保留重複值

select employee_id, job_id from job_history;

 

select employee_id, job_id from employees

Union                去除重複值

select employee_id, job_id from job_history;

 

select employee_id, job_id from employees

Intersect   相交

select employee_id, job_id from job_history;

 

select employee_id from employees

Minus    減

select employee_id from job_history;

 

select employee_id, job_id, salary from employees

union all

select employee_id, job_id, null from job_history;

 

select employee_id, job_id, to_char(salary) from employees

union all

select employee_id, job_id, ‘no salary‘ from job_history;

上下相對應

 

集合排序:

select employee_id, job_id, salary from employees

union all

select employee_id, job_id, null from job_history

order by salary;

 

select employee_id, job_id, null from job_history

union all

select employee_id, job_id, salary from employees

order by 3;

DML

Create table t1 as select *from employees

Drop  table tl;

 

insert:            插入                                字串

SQL> create table t1(x int, y char(1), z date);

SQL> insert into t1(x, y, z) values (1, ‘a‘, sysdate);

                             表             數值                                  

SQL> insert into t1(x, z, y) values (2, sysdate+1, ‘b‘);

SQL> insert into t1(x, y, z) values (1, null, sysdate);

SQL> insert into t1(x, z) values (2, sysdate+1);

SQL> insert into t1 values (1, null, sysdate);

                                                 所有值都得寫上

SQL> create table my_emp as select * from employees;

SQL> create table my_emp as select last_name, salary from employees where department_id=50;

SQL> create table avg_sal as select department_id, avg(salary) avg_sal from employees group by department_id;

SQL> create table my_emp as select * from employees where 1=0;

SQL> insert into my_emp select * from employees;

 

update:更新  列

SQL> update my_emp set salary=salary*1.1;

SQL> update my_emp set salary=salary*1.1 where department_id=50;

SQL> update my_emp set salary=salary*1.1, commission_pct=0.5 where employee_id=197;

 

delete:

SQL> delete from my_emp where employee_id=197;

SQL> delete from my_emp where department_id=50;

SQL> delete from my_emp;

 

子查詢:

SQL> create table my_emp as select * from employees;

SQL> alter table my_emp add(department_name varchar2(30));

SQL> update my_emp outer set department_name=(select department_name from departments where department_id=outer.department_id);

 

update (select t1.department_name as aname,t2.department_name bname from my_emp t1 ,departments t2 where t1.department_id=t2.department_id) set aname=bname;

 

 在new_dept表中刪除沒有員工的部門

SQL> create table my_dept as select * from departments;

delete from my_dept outer

where not exists

(select 1 from my_emp

where department_id=outer.department_id);

Commit 結束

 

delete和truncate:

delete truncate

語句類型 dml ddl

undo資料 產生大量undo資料 不產生undo資料

空間管理        不釋放 釋放

文法 where 刪除全部資料

 

DDL

 

 

字串:

SQL> create table t1(x char(10), y varchar2(10));

SQL> insert into t1 values(‘x‘, ‘y‘);

SQL> select dump(x), dump(y) from t1;

數值:

SQL> create table t1(x number(5,2), y number(5));

SQL> insert into t1 values (123.45, 12345);

SQL> insert into t1 values (12.345, 12345);

SQL> insert into t1 values (12.345, 123.45);

SQL> select * from t1;

SQL> insert into t1 values (12.345, 112345);

日期時間:

SQL> create table t1(a date, b timestamp, c timestamp with time zone, d timestamp with local time zone);

SQL> insert into t1 values (sysdate, systimestamp, systimestamp, systimestamp);

SQL> alter session set time_zone=‘+9:00‘;

SQL> select * from t1;

修改表結構:

SQL> alter table t1 add(e char(10));

SQL> alter table t1 drop(e);

SQL> alter table t1 modify(d not null);

 

約束條件:

欄位(列):not null, check(salary>0)

行與行:primary key, unique

表與表之間:foreign key

create table dept (

    deptno int constraint dept_deptno_pk primary key,

    dname varchar2(20) constraint dept_dname_nn not null);

 

create table emp (

    empno int constraint emp_empno_pk primary key,

    ename varchar2(20) constraint emp_ename_nn not null,

    email varchar2(50) constraint emp_email_uq unique,

    salary int constraint emp_salary_ck check(salary>0),

    deptno int constraint emp_deptno_fk references dept(deptno))

 

SQL> select constraint_name, constraint_type from user_constraints where table_name in(‘DEPT‘, ‘EMP‘);

 

SQL> insert into emp values (100, ‘abc‘, ‘[email protected]‘, 10000, 10);

insert into emp values (100, ‘abc‘, ‘[email protected]‘, 10000, 10)

*

ERROR at line 1:

ORA-02291: integrity constraint (HR.EMP_DEPTNO_FK) violated - parent key not

found

 

 

SQL> insert into dept values (10, ‘sales‘);

 

1 row created.

 

SQL> insert into dept values (10, ‘market‘);

insert into dept values (10, ‘market‘)

*

ERROR at line 1:

ORA-00001: unique constraint (HR.DEPT_DEPTNO_PK) violated

 

 

SQL> insert into dept values (20, ‘market‘);

 

1 row created.

 

SQL> commit;

 

Commit complete.

 

SQL> insert into emp values (101, ‘def‘, ‘[email protected]‘, 10000, 20);

 

create table emp (

    empno int constraint emp_empno_pk primary key,

    ename varchar2(20) constraint emp_ename_nn not null,

    email varchar2(50) constraint emp_email_uq unique,

    salary int constraint emp_salary_ck check(salary>0),

deptno int constraint emp_deptno_fk references dept(deptno) on delete set null)或者on delete cascade

 

Create table tl(x int constraint tl_x_pk primary key);

Alter  table tl (add y int);

Alter table tl add(z int ,a int);

Alter table tl frop (z ,a);

Alter table  tl modify(y char(1));

Alter table  tl modify(y default ‘a’)

Alter table tl  disable novalidate constraint tl_x_pk;

Insert into tl values(1,’a’);

Insert into tl values(1,’b’);

Alter table tl enable validate constraint tl_x_pk;

Delete tl;

Alter table tl enable validate constraint tl_x_pk;

Drop table tl;

 

 

instead of trigger視圖觸發器  替代觸發器

 

序列:

SQL> create sequence test_seq increment by 1 start with 1 maxvalue 1000 nocycle cache 20;

SQL> create table t1(x int primary key, y int);

SQL> insert into t1 values (test_seq.nextval, 11); 反覆執行

SQL> select * from t1;

 

 

Select test_seq.currva  from dual   每用一次 序列增長一次

 

 

 

索引:

主鍵和唯一性限制式自動建立索引:

SQL> select constraint_name, constraint_type from user_constraints where table_name=‘EMPLOYEES‘;

SQL> select index_name, index_type  uniqueness; from user_indexes where table_name=‘EMPLOYEES‘;

SQL> set autot on

SQL> select last_name from employees where employee_id=100; 走索引

SQL> select email from employees; 走索引

SQL> select last_name from employees where salary=2100; 全表掃描

SQL> create index emp_salary_ix on employees(salary);

SQL> select last_name from employees where salary=2100; 走索引

SQL> set autot off

oracle課堂隨筆--第十四天

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.