mysql中 数据处理(增、删、改)
#数据处理
-- DDL : 数据定义语言
CREATE TABLE emp6(
id INT(10),
NAME VARCHAR(20),
hire_date DATE,
salary DOUBLE(10, 2)
);
-- DML :数据操纵语言
-- 1.添加数据
INSERT INTO emp6
VALUES(101, '张三', '1999-9-9', 9999.99);
INSERT INTO emp6(id, NAME, hire_date)
VALUES(102, '李四', NOW());
-- 基于现有表导入数据
INSERT INTO emp6(id, NAME, salary)
SELECT employee_id, last_name, salary
FROM employees;
-- 2.修改数据
UPDATE emp6
SET salary = 8888.88
WHERE id = 102;
-- 同时修改多列
UPDATE emp6
SET salary = 20000, NAME = '张柳', hire_date = '1998-8-8'
WHERE id = 101 AND NAME = '张三';
DESC emp6;
-- 3.删除数据
DELETE FROM emp6
WHERE id = 101;
-- 4.查询数据
SELECT * FROM emp6;
SET autocommit = FALSE;
-- DCL:数据控制语言
COMMIT;
-- 一个或多个的 DML 语句称为一个事务
ROLLBACK;
mysql中的 约束 与 分页
#约束与分页
-- NOT NULL 非空约束,规定某个字段不能为空
-- 创建非空约束
CREATE TABLE emp1(
id INT(10),
NAME VARCHAR(20) NOT NULL -- 列级约束
);
SELECT * FROM emp1;
INSERT INTO emp1(id, NAME)
VALUES(101, NULL);
INSERT INTO emp1(id)
VALUES(101);
INSERT INTO emp1(id, NAME)
VALUES(NULL, '李四');
-- 修改非空约束
ALTER TABLE emp1
MODIFY id INT(10) NOT NULL;
-- 取消非空约束
ALTER TABLE emp1
MODIFY id INT(10) NULL;
-- UNIQUE 唯一约束,规定某个字段在整个表中是唯一的
CREATE TABLE emp2(
id INT(10),
NAME VARCHAR(20),
CONSTRAINT emp2_name_un UNIQUE(NAME) -- 表级约束
);
SELECT * FROM emp2;
INSERT INTO emp2
VALUES(102, '张三');
CREATE TABLE emp3(
id INT(10),
NAME VARCHAR(20),
phone VARCHAR(25),
email VARCHAR(30),
CONSTRAINT emp3_phone_email_un UNIQUE(phone, email)
);
SELECT * FROM emp3;
INSERT INTO emp3
VALUES(101, '张三', '1234567777', '[email protected]');
TRUNCATE TABLE emp3;
-- 添加唯一约束
ALTER TABLE emp3
ADD CONSTRAINT emp3_id_un UNIQUE(id);
-- 删除唯一约束
ALTER TABLE emp3
DROP INDEX emp3_id_un;
-- PRIMARY KEY 主键(非空且唯一), 通常使用主键确定唯一一条数据
CREATE TABLE emp4(
id INT(10) PRIMARY KEY,
NAME VARCHAR(20)
);
CREATE TABLE emp5(
id INT(10),
NAME VARCHAR(20),
CONSTRAINT emp4_id_pk PRIMARY KEY(id)
);
SELECT * FROM emp7;
INSERT INTO emp7
VALUES(1011, '张三11');
SELECT * FROM emp5;
TRUNCATE TABLE emp7;
-- 添加主键约束
CREATE TABLE emp7(
id INT(10),
NAME VARCHAR(20)
);
ALTER TABLE emp7
ADD CONSTRAINT emp7_id_pk PRIMARY KEY(id, NAME);
ALTER TABLE emp7
ADD CONSTRAINT emp7_name_pk PRIMARY KEY(NAME);
-- 删除主键约束
ALTER TABLE emp7
DROP PRIMARY KEY;
-- FOREIGN KEY 外键 : 通常关联另一个表的主键,出现在外键表中的数据一定出现在主键表中
CREATE TABLE dept(
department_id INT(10),
department_name VARCHAR(20),
CONSTRAINT dept_id_pk PRIMARY KEY(department_id)
);
CREATE TABLE emp8(
id INT(10),
NAME VARCHAR(20),
dept_id INT(10),
CONSTRAINT emp8_deptId_fk FOREIGN KEY(dept_id) REFERENCES dept(department_id)
-- ON DELETE CASCADE -- (级联删除): 当父表中的列被删除时,子表中相对应的列也被删除
ON DELETE SET NULL -- (级联置空): 子表中相应的列置空
);
SELECT * FROM dept;
SELECT * FROM emp8;
INSERT INTO dept
VALUES(10, 'IT');
INSERT INTO emp8
VALUES(101, 'Tom', 10);
DELETE FROM emp8
WHERE id = 101;
DELETE FROM dept
WHERE department_id = 10;
-- 添加外键约束
CREATE TABLE emp9(
id INT(10),
NAME VARCHAR(20),
dept_id INT(10)
);
ALTER TABLE emp9
ADD CONSTRAINT emp9_deptId_fk FOREIGN KEY(dept_id) REFERENCES dept(department_id);
-- 删除外键约束
ALTER TABLE emp9
DROP FOREIGN KEY emp9_deptId_fk;
-- CHECK 检查约束, 注意:mysql中使用check没有效果,oracle中使用有效
CREATE TABLE emp10(
id INT(10),
NAME VARCHAR(20),
salary DOUBLE(10, 2),
CONSTRAINT emp10_salary_ck CHECK(salary > 5000)
);
SELECT * FROM emp10;
INSERT INTO emp10
VALUES(101, 'Tom', 3000);
# MYSQL 分页(重点)
-- 公式:(当前页数-1)* 每页条数,每页条数
SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary DESC
LIMIT 20, 10;