初識MySQL筆記
阿新 • • 發佈:2020-08-06
一、建庫建表
1).新建資料庫,表之前先判斷是否存在(if exists)
2).資料庫建好之後需要使用(use 資料庫名)
3).主鍵:primary key
4).唯一:unique
5).自增:auto_increment
6).外來鍵新增:constraint FK_empId foreign key(empId) references deptInfo(empId)
7).設定引擎:engine=innodb default charset=UTF8 auto_increment=1001
二、資料庫的增刪查改
1).增:insert into 表名 values();
2).刪:delete from 表名 where 條件;
4).改:update 表名 set ... where 條件;
-- 判斷資料庫是否存在 DROP DATABASE IF EXISTS EMPDB; -- 新建資料庫 CREATE DATABASE EMPDB; -- 使用資料庫 USE EMPDB; -- 判斷表DeptInfo是否存在 DROP TABLE IF EXISTS DeptInfo; -- 新建表 CREATE TABLE DeptInfo( DeptID VARCHAR(10) PRIMARY KEY, DeptName VARCHAR(20) NOT NULL UNIQUE )ENGINE=INNODB CHARSET=utf8; -- 判斷表EmpInfo是否存在 DROP TABLE IF EXISTS EmpInfo; -- 新建表 CREATE TABLE EmpInfo( EmpID INT PRIMARY KEY AUTO_INCREMENT, EmpName VARCHAR(20) NOT NULL, EmpSex VARCHAR(2) NOT NULL DEFAULT '男', EmpBirth DATETIME NOT NULL, EmpTel VARCHAR(20) NOT NULLUNIQUE, DeptID VARCHAR(10) NOT NULL, CONSTRAINT FK_DeptID FOREIGN KEY(DeptID) REFERENCES DeptInfo(DeptID) )ENGINE=INNODB CHARSET=utf8 AUTO_INCREMENT=1001; -- 新增初始資料 INSERT INTO DeptInfo VALUES('A02','財務部'); INSERT INTO DeptInfo VALUES('A05','工程部'); INSERT INTO DeptInfo VALUES('A01','人事部'); INSERT INTO DeptInfo VALUES('A03','銷售部'); INSERT INTO DeptInfo VALUES('A04','研發部'); INSERT INTO EmpInfo VALUES(DEFAULT , '陳二' , '男' , '1991-05-02' , '189199' , 'A04'); INSERT INTO EmpInfo VALUES(DEFAULT , '陳七' , '女' , '1991-01-13' , '189111' , 'A02'); INSERT INTO EmpInfo VALUES(DEFAULT , '黃二' , '男' , '1991-03-01' , '189321' , 'A03'); INSERT INTO EmpInfo VALUES(DEFAULT , '李四' , '男' , '1991-02-08' , '189456' , 'A05'); INSERT INTO EmpInfo VALUES(DEFAULT , '劉一' , '女' , '1991-07-07' , '189654' , 'A05'); INSERT INTO EmpInfo VALUES(DEFAULT , '錢七' , '女' , '1991-05-23' , '189331' , 'A02'); INSERT INTO EmpInfo VALUES(DEFAULT , '孫八' , '男' , '1991-09-09' , '189122' , 'A04'); INSERT INTO EmpInfo VALUES(DEFAULT , '王五' , '男' , '1991-11-06' , '189789' , 'A05'); INSERT INTO EmpInfo VALUES(DEFAULT , '吳十' , '男' , '1991-09-28' , '189166' , 'A01'); INSERT INTO EmpInfo VALUES(DEFAULT , '楊九' , '男' , '1991-01-14' , '189177' , 'A01'); INSERT INTO EmpInfo VALUES(DEFAULT , '張三' , '男' , '1991-01-01' , '189123' , 'A01'); INSERT INTO EmpInfo VALUES(DEFAULT , '趙六' , '女' , '1991-10-02' , '189987' , 'A03'); INSERT INTO EmpInfo VALUES(DEFAULT , '周八' , '男' , '1991-04-21' , '189661' , 'A03'); INSERT INTO EmpInfo VALUES(DEFAULT , '朱三' , '男' , '1991-08-08' , '189551' , 'A05'); -- 查詢 SELECT * FROM DeptInfo; SELECT * FROM EmpInfo; -- 新增一個新部門,生產部,部門編號A06 INSERT INTO DeptInfo VALUES('A06','生產部'); -- 新增一個新員工資訊,該員工分配到銷售部 INSERT INTO EmpInfo VALUES(DEFAULT , '田七' , '男' , '1991-07-24' , '189591' , 'A03'); -- 修改剛新新增的員工的性別和出生日期 UPDATE EmpInfo SET EmpSex='女',EmpBirth='1991-08-01' WHERE EmpName='田七'; -- 刪除這個新員工的資訊 DELETE FROM EmpInfo WHERE EmpName='田七'; -- 查詢顯示所有員工的編號,姓名,性別 SELECT ALL EmpID,EmpName,EmpSex FROM EmpInfo;
三、簡單常用查詢語句
1).設定各種欄位的別名(as)
2).All關鍵字(不寫編輯器自動新增)
3).limit關鍵字(MySQL不支援top 關鍵字,SQL Server支援top關鍵字)
4).distinct關鍵字:過濾重複記錄
5).where關鍵字:條件
6).between...and...
7) .in / not in
8) .邏輯運算(and not or)
9).like關鍵字(模糊查詢)
10).order by(desc:降序 asc:升序)
11) .對查詢結果進行計算(sum,avg,max,min)
12).count統計資料
13).內部連結查詢(inner join on)
14).外部連結查詢(left join on,right join on)
-- 如果empDB資料庫存在則刪除掉 DROP DATABASE IF EXISTS empDB; -- 建立資料庫 CREATE DATABASE empDB; -- 使用empDB庫 USE empDB; -- 如果departinfo表存在則刪除掉 DROP TABLE IF EXISTS departinfo; -- 在empDB資料庫中建立表 CREATE TABLE departinfo( deptId VARCHAR(11) PRIMARY KEY, -- 部門的編號 字串 主鍵 deptName VARCHAR(32) NOT NULL -- 部門的名稱 字串 不為空 )ENGINE=INNODB DEFAULT CHARSET=UTF8; -- 如果empinfo表存在則刪除掉 DROP TABLE IF EXISTS empinfo; -- 在empdb資料庫中建立empinfo表 CREATE TABLE empinfo( empid INT PRIMARY KEY AUTO_INCREMENT, -- 員工的編號 字串 主鍵 empName VARCHAR(20) NOT NULL, -- 員工的名字 字串不為空 empSex VARCHAR(2) NOT NULL DEFAULT '男', -- 員工的性別 字串 不為空 預設男 empBirthday DATE NOT NULL,-- 員工的生日 日期型別 不為空 empTel VARCHAR(20) NOT NULL UNIQUE, -- 員工的電話 字串不為空 不重複 deptId VARCHAR(11) NOT NULL, score DOUBLE, CONSTRAINT FK_deptId FOREIGN KEY(deptId) REFERENCES departinfo(deptId) )ENGINE=INNODB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1001; -- 新增初始化的測試資料 INSERT INTO departinfo VALUES('A01','開發部'); INSERT INTO departinfo VALUES('A02','測試部'); INSERT INTO departinfo VALUES('A03','人事部'); INSERT INTO departinfo VALUES('A04','開發部'); INSERT INTO departinfo VALUES('A05','測試部'); INSERT INTO departinfo VALUES('A06','人事部'); INSERT INTO empinfo VALUES(DEFAULT,'李豐',DEFAULT,'2001-1-1','1234567894','A01',45); INSERT INTO empinfo VALUES(DEFAULT,'李佳偉','男','2001-1-1','1234567895','A02',85); INSERT INTO empinfo VALUES(DEFAULT,'李江嵐','女','2002-1-1','1234567896','A03',87); INSERT INTO empinfo VALUES(DEFAULT,'李豐',DEFAULT,'2001-1-1','1234517894','A01',78.5); INSERT INTO empinfo VALUES(DEFAULT,'李佳偉','男','2001-1-1','1234527895','A02',75.6); INSERT INTO empinfo VALUES(DEFAULT,'李江嵐','女','2002-1-1','1234467896','A03',95); INSERT INTO empinfo VALUES(DEFAULT,'李豐',DEFAULT,'2001-1-1','1234545894','A01',70); INSERT INTO empinfo VALUES(DEFAULT,'李佳偉','男','2001-1-1','1278567895','A02',79); INSERT INTO empinfo VALUES(DEFAULT,'李江嵐','女','2002-1-1','1234561196','A03',97); -- 查詢資料 SELECT * FROM departinfo; SELECT * FROM empinfo; -- limit關鍵字 SELECT empid AS 員工編號 ,empName AS 員工姓名 FROM empinfo LIMIT 0,2; -- as關鍵字 SELECT empid AS 員工編號 ,empName AS 員工姓名 FROM empinfo; -- 欄位的計算 (字串拼接) SELECT empid+'-'+empName AS '員工編號-員工姓名' FROM empinfo; -- all關鍵字 SELECT ALL empid AS 員工編號 ,empName AS 員工姓名 FROM empinfo; -- distict關鍵字 SELECT DISTINCT deptName AS 部門名稱 FROM departinfo; -- where關鍵字 SELECT empName AS 員工姓名 FROM empinfo WHERE empid > 1005; -- between... and... SELECT empid AS 員工編號 ,empName AS 員工姓名 FROM empinfo WHERE empid BETWEEN 1003 AND 1006; -- in / not in SELECT empid AS 員工編號 ,empName AS 員工姓名 FROM empinfo WHERE empid IN(1001,1003,1008); -- 邏輯運算(and or not) SELECT empid AS 員工編號 ,empName AS 員工姓名 FROM empinfo WHERE empSex= AND -- like關鍵字(模糊查詢) SELECT * FROM empinfo WHERE empName LIKE('%江%'); -- order by排序 (desc 降序 asc 升序)---也可以對字串型別的數字進行排序 SELECT * FROM empinfo ORDER BY empid DESC; SELECT * FROM empinfo ORDER BY empTel ASC; -- 對查詢結果進行計算(sum avg min max) SELECT SUM(score) AS 總成績 FROM empinfo; SELECT AVG(score) AS 平均分 FROM empinfo; SELECT MAX(score) AS 最高分 FROM empinfo; SELECT MIN(score) AS 最低分 FROM empinfo; -- count統計行數 SELECT COUNT(*) AS 學生數 FROM empinfo; SELECT COUNT(empid) FROM empinfo; -- 內部連結查詢 SELECT * FROM departinfo INNER JOIN empinfo ON departinfo.deptId=empinfo.deptId; SELECT * FROM departinfo , empinfo WHERE departinfo.deptId=empinfo.deptId; -- 外部連結查詢 SELECT * FROM departinfo LEFT JOIN empinfo ON departinfo.deptId=empinfo.deptId; SELECT * FROM departinfo RIGHT JOIN empinfo ON departinfo.deptId=empinfo.deptId;