INSERT
①INSERT INTO table [(column [, column…])]
VALUES (value [, value…]);
使用這種語法一次只能向表中插入一條數據。
不能使用這種方式同時向表中插入多條數據
②通過創建腳本的方式
如:INSERT INTO departments
(department_id, department_name, location_id)
VALUES (&department_id, ‘&department_name’,&location);
和C語言中取地址符類似
③INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE ‘%REP%’;
從其他表中拷貝數據,可以根據WHERE子句來確定是否插入數據,以及插入什麼數據
UPDATE
UPDATE table
SET column = value [, column = value, …]
[WHERE condition];
可以一次更新多條數據:同樣的用WHERE子句來控制
同樣的也可以在UPDATE語句中使用子查詢
DELETE
DELETE FROM table
[WHERE condition];
同樣的也可以在DELETE語句中使用子查詢
約束是一種規定
**NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK**
創建表的同時可以創建約束
創建表後可以修改約束
可以在表級或列級定義約束
可以通過數據字典來查看約束
表級約束和列級約束:
作用范圍:
①列級約束只能作用在一個列上
column [CONSTRAINT constraint_name] constraint_type,
②表級約束可以作用在多個列上(當然表級約束也
可以作用在一個列上)
column,…
[CONSTRAINT constraint_name] constraint_type
(column, …),
定義方式:列約束必須跟在列的定義後面,表約束不與列一起,而是單獨定義。
非空(not null) 約束只能定義在列上UNIQUE :
唯一約束,允許出現多個空值:NULL。
FOREIGN KEY:
FOREIGN KEY: 在表級指定子表中的列
REFERENCES: 標示在父表中的列
ON DELETE CASCADE(級聯刪除): 當父表中的列被刪除時,子表中相對應的列也被刪除
ON DELETE SET NULL(級聯置空): 子表中相應的列置空
CHECK:
可以理解為自定義約束
練習的話,我會單獨寫一篇。因為學sql主要就是的練,最難的部分就是子查詢,需要多練,這裡給大家說一下我認為比較高效的聯系方法,就是一定要注意書寫格式,例如:
--查詢平均工資最低的部門信息和該部門的平均工資
SELECT d.*, (SELECT avg(salary)
FROM employees
WHERE department_id = d.department_id)
FROM departments d
WHERE department_id = (
SELECT department_id
FROM employees
GROUP BY department_id
HAVING avg(salary) = (
SELECT min(avg(salary))
FROM employees
GROUP BY department_id
)
)
這樣的書寫格式方便分析