java学习笔记——mysql中 数据处理(增、删、改)、约束 与 分页

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;

猜你喜欢

转载自blog.csdn.net/qq_25106373/article/details/80917284