mysql8.0啟動報錯:thr innodb_system data file ibdata1 must be writable
CREATE TABLE demp1
(
deptId INT PRIMARY KEY AUTO_INCREMENT,
deptName VARCHAR(20),
location VARCHAR(50)
);
CREATE TABLE emp2(
emp_id INT PRIMARY KEY AUTO_INCREMENT,
emp_name VARCHAR(30),
age INT,
deptId INT,
CONSTRAINT dept_emp_id FOREIGN KEY (deptId) REFERENCES demp1(deptId)
);
INSERT INTO demp1(deptName, location) VALUES ('銷售部', '廣州');
INSERT INTO demp1(deptName, location) VALUES ('實施部', '深圳');
INSERT INTO emp2(emp_name, age, deptId) VALUES ('張三', 18, 1);
INSERT INTO emp2(emp_name, age, deptId) VALUES ('李四', 18, 2);
INSERT INTO emp2(emp_name, age, deptId) VALUES ('王五', 18, 2);
SELECT * FROM demp1;
SELECT * FROM emp2;
表的聯合查詢
多表的聯合查詢 INNER JOIN ON 內連線, 將左右兩個邊表有資料就都查出來,沒有資料則不展示
SELECT e.*, d.deptName
, d.location
FROM demp1 d INNER JOIN emp2 e ON d.deptId
= e.deptId
多表查詢 左連線 注意,查詢已左邊表為主表,主表的資料全部展示,從表資料,有則直接展示,沒有則使用NULL 進行填充
SELECT e.*, d.deptName
, d.location
FROM demp1 d LEFT JOIN emp2 e ON d.deptId
deptId
多表查詢 左連線 注意,查詢已右邊表為主表,主表的資料全部展示,從表資料,有則直接展示,沒有則使用NULL 進行填充
SELECT e.*, d.deptName
, d.location
FROM demp1 d RIGHT JOIN emp2 e ON d.deptId
= e.deptId
內連線的簡化寫法
SELECT e.*, d.deptName
, d.location
FROM demp1 d, emp2 e WHERE d.deptId
= e.deptId
注意:多表連線,如果不新增外來鍵相等的條件則會出現, 出現數據的冗餘。兩張表的資料都會一一進行組合。
SELECT e.*, d.deptName
, d.location
FROM demp1 d, emp2 e
資料刪除 關鍵字是用delete
DELETE FROM emp WHERE empId = 3;
資料修改
SELECT * FROM emp;
UPDATE emp SET empName = '王五', sex = '男' WHERE empId = 2;