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