535 字
3 分钟
MySQL学习笔记 (3)
NOTE基于 MySQL 26.7。CREATE TABLE
创建数据库
CREATE SCHEMA scoredb;然后选中这个数据库:
USE scoredb;以后可以用 scoredb.employee 这种写法指定库名和表名。
CREATE TABLE
CREATE TABLE 语句用于创建表。
CREATE TABLE department ( dept_no CHAR(3) NOT NULL, dept_name VARCHAR(50) NOT NULL, director VARCHAR(50) DEFAULT '院长', CONSTRAINT department_pk PRIMARY KEY (dept_no), CONSTRAINT department_name_un UNIQUE (dept_name));
CREATE TABLE employee ( emp_id INTEGER NOT NULL, last_name VARCHAR(40) NOT NULL, first_name VARCHAR(40), dept_no CHAR(3), hire_date DATE, salary NUMERIC(12, 2), manager_id INTEGER, is_active BOOLEAN, job_id VARCHAR(10), phone VARCHAR(20), title VARCHAR(50), CONSTRAINT employee_pk PRIMARY KEY (emp_id), CONSTRAINT emp_id_ck CHECK (emp_id > 0), CONSTRAINT employee_dept_fk FOREIGN KEY (dept_no) REFERENCES department (dept_no));约束可以写在列后面,也可以写成 CONSTRAINT 名字 …。
先插入部门,再插入员工(因为员工的部门编号要在部门表里存在):
INSERT INTO department (dept_no, dept_name, director)VALUES ('D01', '教务处', '院长'), ('D02', '人事处', '院长'), ('D03', '财务处', '院长');
INSERT INTO employee ( emp_id, last_name, first_name, dept_no, hire_date, salary, manager_id, is_active, job_id, phone, title)VALUES (101, '张三', '明', 'D01', DATE '2018-03-01', 9000, NULL, TRUE, 'T01', '13800000001', '讲师'), (102, '李四', '华', 'D01', DATE '2019-07-15', 12000, 101, TRUE, 'T01', NULL, '副教授'), (103, '王五', '强', 'D02', DATE '2021-01-10', 7500, 101, TRUE, 'T02', '13800000003', '助教'), (104, '赵六', '芳', 'D02', DATE '2016-11-20', 15000, NULL, FALSE, 'T02', '13800000004', '教授');约束
约束用来限制表中的数据。
| 约束 | 作用 |
|---|---|
NOT NULL | 列不能是 NULL |
UNIQUE | 列的值不能重复 |
PRIMARY KEY | 主键:非空且唯一,一张表一个 |
FOREIGN KEY | 外键:值必须在另一张表里存在 |
CHECK | 值必须满足条件,例如 emp_id > 0 |
DEFAULT | 插入时没给值就用默认值 |
外键列可以是 NULL(如果该列允许 NULL)。
ALTER TABLE
ALTER TABLE 语句用于修改表。
ALTER TABLE employee ADD COLUMN email VARCHAR(100);ALTER TABLE employee ADD CONSTRAINT employee_email_un UNIQUE (email);ALTER TABLE employee DROP INDEX employee_email_un;ALTER TABLE employee DROP COLUMN email;ALTER TABLE department ALTER COLUMN director SET DEFAULT '院长';ALTER TABLE department ALTER COLUMN director DROP DEFAULT;DROP TABLE
DROP TABLE 语句用于删除表。
DROP TABLE employee, department;有外键时,先删除子表,或者先删除外键。
索引
CREATE INDEX 语句用于创建索引,加快查找。
CREATE INDEX employee_name_idx ON employee (last_name);主键和 UNIQUE 已经带有索引。删除索引:
DROP INDEX employee_name_idx ON employee;参考
MySQL学习笔记 (3)
https://blog.chuwu.top/posts/sql/mysql3/