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;
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';