MySQL数据库的常用操作
生活随笔
收集整理的這篇文章主要介紹了
MySQL数据库的常用操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
-- 數據庫的常用操作
-- 管理數據:查看、添加、修改、刪除數據
-- 查詢數據:查詢所有字段、查詢指定字段、查詢時指定別名、查詢時合并列、查詢時添加常量列、查詢時取出重復數據-- 條件查詢、分頁查詢、查詢后排序、聚合(統計)查詢、分組查詢、分組后篩選(條件)、子查詢
-- 數據約束
-- 約束分類:默認值、非空、唯一、主鍵、自增長約束、外鍵、級聯操作
-- 數據庫設計:第一范式、第二范式、第三范式
student表數據:
MySQL語句: -- 查看數據庫 SHOW DATABASES;-- 使用數據庫 USE day15;-- 查看表 SHOW TABLES;SELECT * FROM student;-- 查詢數學成績大于60小于90的學生 SELECT * FROM student WHERE math BETWEEN 60 AND 90;-- 查詢姓名不等于李一的學生 SELECT * FROM student WHERE NAME<>'李一';-- 為表添加一列性別默認為難 ALTER TABLE student ADD COLUMN gender CHAR(1) DEFAULT '男';-- 將id為7的性別改為女 UPDATE student SET gender='女' WHERE id=7;-- 添加數據 INSERT INTO student VALUES(8,'婓南葦',99,100,100,'女');-- 刪除數據 DELETE FROM student WHERE id = 8 ;-- 修改數據 UPDATE student SET NAME='李詩雁',gender='女' WHERE id =4; UPDATE student SET gender=NULL WHERE id=2; UPDATE student SET gender='' WHERE id=6;SELECT * FROM student;-- 查詢指定字段 SELECT NAME,gender FROM student;-- 查詢是指定別名 SELECT NAME '姓名',gender '性別' FROM student;-- 查詢沒有真實性別數據的學生 SELECT * FROM student WHERE gender IS NOT NULL OR gende='';-- 分頁查詢 -- 查詢第1,2條數據 SELECT * FROM student LIMIT 0,2; -- 查詢第5,6,7條數據 SELECT * FROM student LIMIT 4,3;-- 目前共8條數據,每頁顯示3條數據,共3頁 -- 第一頁: SELECT * FROM student LIMIT 0,3; -- 第二頁: SELECT * FROM student LIMIT 3,3; -- 第三頁: SELECT * FROM student LIMIT 6,3;-- 查詢每頁數據的sql SELECT * FROM student LIMIT (當前頁-1)*每頁行數,每頁行數;-- 查詢后排序(order by) -- 一個排序,按id排序 SELECT * FROM student ORDER BY id DESC;-- 多個排序:按chinese降序,再按照math降序 SELECT * FROM student ORDER BY chinese DESC,math DESC;-- 聚合(統計)查詢 -- 查詢學生chinese的最高分 SELECT MAX(chinese) FROM student;-- 查詢學生english的最低分 SELECT MIN(english) FROM student;-- 查詢所有學生的math總分 SELECT SUM(math) FROM student;-- 查找chinese的平均分 SELECT AVG(chinese) FROM student;-- 查詢現在有多少名 SELECT COUNT(*) FROM student; -- count(字段)如果存在null,則不統計該數量 SELECT COUNT(gender) FROM student;-- 分組查詢(groud by) -- 查詢男女各有幾人 SELECT gender, COUNT(math) FROM student WHERE gender IS NOT NULL AND gender<>'' GROUP BY gender;-- 分組后篩選(條件) -- 查詢人數大于2人的性別 -- 1,先把性別進行分組;2、再對每組人數進行統計;3、統計人數大于2 SELECT gender,COUNT(gender) FROM student WHERE gender IS NOT NULL AND gender<>'' GROUP BY gender HAVING COUNT(gender)>2;-- 子查詢:把一個sql查詢的結果作為另一個查詢的條件 -- 查詢chinese最高分的學生 SELECT * FROM student WHERE chinese=(SELECT MAX(chinese) FROM student);-- 約束分類-- 默認值 CREATE TABLE staff(id INT,NAME VARCHAR(20),gender CHAR(1) DEFAULT'男' );INSERT INTO staff(id,NAME) VALUES(1,'左莫'); INSERT INTO staff(id,NAME) VALUES(2,'韋劍勝'); INSERT INTO staff(id,NAME) VALUES(3,'我離');-- 刪除表 DROP TABLE staff;-- 非空 -- name不能出現null; CREATE TABLE staff(id INT,NAME VARCHAR(20) NOT NULL,gender CHAR(1) );INSERT INTO staff(id,NAME,gender) VALUES(1,'左莫','男'); INSERT INTO staff(id,NAME,gender) VALUES(2,'韋劍勝','男'); INSERT INTO staff(id,gender) VALUES(3,'男'); -- 將會自動賦值空字符串-- 唯一 -- id值唯一 CREATE TABLE staff(id INT UNIQUE,NAME VARCHAR(20),gender CHAR(1) );-- 插入數據 INSERT INTO staff(id,NAME,gender) VALUES(1,'左莫','男'); INSERT INTO staff(id,NAME,gender) VALUES(1,'韋劍勝','男') -- 錯誤;Duplicate entry '1' for key 'id' INSERT INTO staff(id,gender) VALUES(3,'男'); -- 將會自動賦值空字符串SELECT * FROM staff;-- 主鍵CREATE TABLE staff(id INT PRIMARY KEY,NAME VARCHAR(20),gender CHAR(1) );INSERT INTO staff(id,NAME,gender) VALUES(1,'左莫','男'); INSERT INTO staff(id,NAME,gender) VALUES(1,'韋劍勝','男') -- 錯誤;Duplicate entry '1' for key 'PRIMARY' INSERT INTO staff(id,gender) VALUES(3,'男'); -- 將會自動賦值空字符串DROP TABLE staff;-- 自增長 CREATE TABLE staff(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),gender CHAR(1) DEFAULT '男' );INSERT INTO staff(NAME) VALUES('左莫'); INSERT INTO staff(NAME) VALUES('韋劍勝'); INSERT INTO staff(NAME) VALUES('我離');SELECT * FROM staff;-- delete from: 這種刪除不會影響自增長約束 -- truncate table:這種刪除會影響自增長約束(必須是全表刪除)(用的少) TRUNCATE TABLE staff;-- 外鍵-- 先建立主表:部門表 CREATE TABLE dept(id INT PRIMARY KEY AUTO_INCREMENT,departName VARCHAR(20) );-- 再建立副表或從表:員工表 CREATE TABLE employee(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20) NOT NULL,deptId INT,CONSTRAINT employee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)-- 外鍵名稱 外鍵字段 參考表(主鍵) );-- 級聯操作 -- 即對主表進行操作的結果同時副表也會有相同的效果CREATE TABLE employee(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20) NOT NULL,deptId INT,CONSTRAINT employee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE -- 給外鍵天機級聯修改和級聯刪除 );-- 數據庫設計-- 第一范式 -- 每個表的每個字段都必須是(從業務角度)不可分割的獨立單元! student : id NAME -- 違反第一范式 1 張三|小三2 李四|鐵四student id NAME oldname -- 符合第一范式 1 張三 小三2 李四 鐵四-- 第二范式 student: id NAME id NAME(老師的名字) -- 違反第二范式1 張三2 李四1 老樂2 老王student: id NAME -- 符合第二范式1 張三2 李四 teacher: id NAME1 老樂2 老王-- 第三范式 -- 在第二范式的基礎上,一張表的主鍵除外的去愛她字段都應該跟主鍵字段是直接決定關系 employee: id NAME gender deptName(出現冗余) -- 違反第三范式 admin: id NAMEemployee: id NAME deptId(fk) -- 符合第三范式 dept: id deptName admin: id NAME-- 數據庫范式跟數據庫查詢效率成反比! -- 數據庫范式越高,查詢效果越低!
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
student表數據:
MySQL語句: -- 查看數據庫 SHOW DATABASES;-- 使用數據庫 USE day15;-- 查看表 SHOW TABLES;SELECT * FROM student;-- 查詢數學成績大于60小于90的學生 SELECT * FROM student WHERE math BETWEEN 60 AND 90;-- 查詢姓名不等于李一的學生 SELECT * FROM student WHERE NAME<>'李一';-- 為表添加一列性別默認為難 ALTER TABLE student ADD COLUMN gender CHAR(1) DEFAULT '男';-- 將id為7的性別改為女 UPDATE student SET gender='女' WHERE id=7;-- 添加數據 INSERT INTO student VALUES(8,'婓南葦',99,100,100,'女');-- 刪除數據 DELETE FROM student WHERE id = 8 ;-- 修改數據 UPDATE student SET NAME='李詩雁',gender='女' WHERE id =4; UPDATE student SET gender=NULL WHERE id=2; UPDATE student SET gender='' WHERE id=6;SELECT * FROM student;-- 查詢指定字段 SELECT NAME,gender FROM student;-- 查詢是指定別名 SELECT NAME '姓名',gender '性別' FROM student;-- 查詢沒有真實性別數據的學生 SELECT * FROM student WHERE gender IS NOT NULL OR gende='';-- 分頁查詢 -- 查詢第1,2條數據 SELECT * FROM student LIMIT 0,2; -- 查詢第5,6,7條數據 SELECT * FROM student LIMIT 4,3;-- 目前共8條數據,每頁顯示3條數據,共3頁 -- 第一頁: SELECT * FROM student LIMIT 0,3; -- 第二頁: SELECT * FROM student LIMIT 3,3; -- 第三頁: SELECT * FROM student LIMIT 6,3;-- 查詢每頁數據的sql SELECT * FROM student LIMIT (當前頁-1)*每頁行數,每頁行數;-- 查詢后排序(order by) -- 一個排序,按id排序 SELECT * FROM student ORDER BY id DESC;-- 多個排序:按chinese降序,再按照math降序 SELECT * FROM student ORDER BY chinese DESC,math DESC;-- 聚合(統計)查詢 -- 查詢學生chinese的最高分 SELECT MAX(chinese) FROM student;-- 查詢學生english的最低分 SELECT MIN(english) FROM student;-- 查詢所有學生的math總分 SELECT SUM(math) FROM student;-- 查找chinese的平均分 SELECT AVG(chinese) FROM student;-- 查詢現在有多少名 SELECT COUNT(*) FROM student; -- count(字段)如果存在null,則不統計該數量 SELECT COUNT(gender) FROM student;-- 分組查詢(groud by) -- 查詢男女各有幾人 SELECT gender, COUNT(math) FROM student WHERE gender IS NOT NULL AND gender<>'' GROUP BY gender;-- 分組后篩選(條件) -- 查詢人數大于2人的性別 -- 1,先把性別進行分組;2、再對每組人數進行統計;3、統計人數大于2 SELECT gender,COUNT(gender) FROM student WHERE gender IS NOT NULL AND gender<>'' GROUP BY gender HAVING COUNT(gender)>2;-- 子查詢:把一個sql查詢的結果作為另一個查詢的條件 -- 查詢chinese最高分的學生 SELECT * FROM student WHERE chinese=(SELECT MAX(chinese) FROM student);-- 約束分類-- 默認值 CREATE TABLE staff(id INT,NAME VARCHAR(20),gender CHAR(1) DEFAULT'男' );INSERT INTO staff(id,NAME) VALUES(1,'左莫'); INSERT INTO staff(id,NAME) VALUES(2,'韋劍勝'); INSERT INTO staff(id,NAME) VALUES(3,'我離');-- 刪除表 DROP TABLE staff;-- 非空 -- name不能出現null; CREATE TABLE staff(id INT,NAME VARCHAR(20) NOT NULL,gender CHAR(1) );INSERT INTO staff(id,NAME,gender) VALUES(1,'左莫','男'); INSERT INTO staff(id,NAME,gender) VALUES(2,'韋劍勝','男'); INSERT INTO staff(id,gender) VALUES(3,'男'); -- 將會自動賦值空字符串-- 唯一 -- id值唯一 CREATE TABLE staff(id INT UNIQUE,NAME VARCHAR(20),gender CHAR(1) );-- 插入數據 INSERT INTO staff(id,NAME,gender) VALUES(1,'左莫','男'); INSERT INTO staff(id,NAME,gender) VALUES(1,'韋劍勝','男') -- 錯誤;Duplicate entry '1' for key 'id' INSERT INTO staff(id,gender) VALUES(3,'男'); -- 將會自動賦值空字符串SELECT * FROM staff;-- 主鍵CREATE TABLE staff(id INT PRIMARY KEY,NAME VARCHAR(20),gender CHAR(1) );INSERT INTO staff(id,NAME,gender) VALUES(1,'左莫','男'); INSERT INTO staff(id,NAME,gender) VALUES(1,'韋劍勝','男') -- 錯誤;Duplicate entry '1' for key 'PRIMARY' INSERT INTO staff(id,gender) VALUES(3,'男'); -- 將會自動賦值空字符串DROP TABLE staff;-- 自增長 CREATE TABLE staff(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),gender CHAR(1) DEFAULT '男' );INSERT INTO staff(NAME) VALUES('左莫'); INSERT INTO staff(NAME) VALUES('韋劍勝'); INSERT INTO staff(NAME) VALUES('我離');SELECT * FROM staff;-- delete from: 這種刪除不會影響自增長約束 -- truncate table:這種刪除會影響自增長約束(必須是全表刪除)(用的少) TRUNCATE TABLE staff;-- 外鍵-- 先建立主表:部門表 CREATE TABLE dept(id INT PRIMARY KEY AUTO_INCREMENT,departName VARCHAR(20) );-- 再建立副表或從表:員工表 CREATE TABLE employee(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20) NOT NULL,deptId INT,CONSTRAINT employee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)-- 外鍵名稱 外鍵字段 參考表(主鍵) );-- 級聯操作 -- 即對主表進行操作的結果同時副表也會有相同的效果CREATE TABLE employee(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20) NOT NULL,deptId INT,CONSTRAINT employee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE -- 給外鍵天機級聯修改和級聯刪除 );-- 數據庫設計-- 第一范式 -- 每個表的每個字段都必須是(從業務角度)不可分割的獨立單元! student : id NAME -- 違反第一范式 1 張三|小三2 李四|鐵四student id NAME oldname -- 符合第一范式 1 張三 小三2 李四 鐵四-- 第二范式 student: id NAME id NAME(老師的名字) -- 違反第二范式1 張三2 李四1 老樂2 老王student: id NAME -- 符合第二范式1 張三2 李四 teacher: id NAME1 老樂2 老王-- 第三范式 -- 在第二范式的基礎上,一張表的主鍵除外的去愛她字段都應該跟主鍵字段是直接決定關系 employee: id NAME gender deptName(出現冗余) -- 違反第三范式 admin: id NAMEemployee: id NAME deptId(fk) -- 符合第三范式 dept: id deptName admin: id NAME-- 數據庫范式跟數據庫查詢效率成反比! -- 數據庫范式越高,查詢效果越低!
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的MySQL数据库的常用操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用MySQL创建一个简单的employ
- 下一篇: Java中使用HashMap,TreeS