對Oracle的增刪改查基本操作

提示:操作生產庫的表時,最好先用上一篇文章裏的導入excel文件創建一個臨時表,把要操作的數據全部準備好,都來自臨時表,那樣比較單一,操作會更加簡單。

1.創建表
   1)直接創建
   
    create table emp1(
	name varchar2(20),
	salary number(8,2)default 1000,
	id number(4),
	hire_date date
    );


   2)通過子查詢的方式創建
   
   create table emp2
   as 
   select last_name name,employee_id id,hire_date 
   from employees;  


   或者
    
    create table emp2
    as 
    select last_name name,employee_id id,hire_date 
    from employees 
    where department_id = 80;/where 1=2;

2.修改表
    1)增加新的列
    
   alter table emp1 add(birthday date);



    2)修改現有的列
   alter table emp1 modify(name varchar2(25) default 'abc');

    3)重命名現有的列
    alter table emp1
    rename column salary to sal;


    4)刪除現有的列
 
  alter table emp1 drop column birthday;

3.清空表中的數據(與delete from table_name區分開)
   
  truncate table emp2;


4.重命名錶

   
  rename emp2 to emp3;


5.刪除表
  drop table emp3;

數據處理

1)增
    1.1 增添一條記錄
   
  insert into  [表名](,,,,,)
  values(,,,,,)

    1.2 從其它表中拷貝數據

   
  insert into [表名]
  select .... from [另一個表] 
  where ....

2)改
   
  update [表名]
  set .....
  where ....

3)刪
  
  delete from [表名]
  where ....

4)查
   
  select ....

約束 :對創建的表的列屬性、字段進行的限制。諸如:not null/unique/primary key/foreign key/check

1.如何定義約束---在創建表的同時,添加對應屬性的約束
   1.1 表級約束 & 列級約束
	create table emp1(
		employee_id number(8),
		salary number(8),
		--列級約束
		hire_date date not null,
		dept_id number(8),
		email varchar2(8) constraint emp1_email_uk unique,
		name varchar2(8) constaint emp1_name_uu not null,
		first_name varchar2(8),
		--表級約束
		constraint emp1_emp_id_pk primary key(employee_id),
		constraint emp1_fir_name_uk unique(first_name),
		constraint emp1_dept_id_fk foreign key(dept_id) references departments(department_id) ON DELETE CASCADE

)

  1.2 只有not null 只能使用列級約束。其他的約束兩種方式皆可


過濾查詢:四個基本的過濾查詢

①between......and......包含兩邊邊界

SELECT last_name, salary
FROM   employees
WHERE  salary BETWEEN 2500 AND 3500;


②in:在裏面的一個

SELECT employee_id, last_name, salary, manager_id
FROM   employees
WHERE  manager_id IN (100, 101, 201);
③like:模糊查詢,%代表任意個字符,_代表一個字符

SELECT employee_id, last_name, salary, manager_id
FROM   employees
WHERE  manager_id IN (100, 101, 201);

④null

SELECT last_name, manager_id
FROM   employees
WHERE  manager_id IS NULL;

邏輯運算:and,or,not

SELECT employee_id, last_name, job_id, salary
FROM   employees
WHERE  salary >= 10000
OR     job_id LIKE '%MAN%';

排序:order by;  ASC:升序  DESC:降序, 必須在select語句的結尾處

SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BY hire_date ;
降序:
SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BY hire_date DESC ;
多個列排序:

SELECT last_name, department_id, salary
FROM   employees
ORDER BY department_id, salary DESC;

單行函數
①控制大小寫

LOWER('SQL Course')

UPPER('SQL Course')

SELECT employee_id, last_name, department_id
FROM   employees
WHERE  LOWER(last_name) = 'higgins';

②字符控制函數


















例子:

SELECT employee_id, CONCAT(first_name, last_name) NAME, 
       job_id, LENGTH (last_name), 
       INSTR(last_name, 'a') "Contains 'a'?"
FROM   employees
WHERE  SUBSTR(job_id, 4) = 'REP';


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章