您好,登錄后才能下訂單哦!
MySQL 增刪改查語(yǔ)句
1.創(chuàng)建練習(xí)表
第一范式(又稱(chēng) 1NF):保證每列的原子性
數(shù)據(jù)表中的每一列(字段),必須是不可拆分的最小單元,也就是確保每一列的原子性。滿足第一范式是關(guān)系模式規(guī)范化的最低要求,否則,將有很多基本操作在這樣的關(guān)系模式中實(shí)現(xiàn)不了。
第二范式(又稱(chēng) 2NF):保證一張表只描述一件事情
滿足1NF后要求表中的所有列,每一行的數(shù)據(jù)只能與其中一列相關(guān),即一行數(shù)據(jù)只做一件事。只要數(shù)據(jù)列中出現(xiàn)數(shù)據(jù)重復(fù),就要把表拆分開(kāi)來(lái)。
第三范式(又稱(chēng) 3NF):保證每列都和主鍵直接相關(guān)
滿足2NF后,要求:表中的每一列都要與主鍵直接相關(guān),而不是間接相關(guān)(表中的每一列只能依賴(lài)于主鍵)。
數(shù)據(jù)不能存在傳遞關(guān)系,即沒(méi)個(gè)屬性都跟主鍵有直接關(guān)系而不是間接關(guān)系。像:a–>b–>c 屬性之間含有這樣的關(guān)系,是不符合第三范式的。
數(shù)據(jù)庫(kù)中的五大約束包括:
1.主鍵約束(Primay Key Coustraint) 唯一性,非空性;
2.唯一約束 (Unique Counstraint)唯一性,可以空,但只能有一個(gè);
3.默認(rèn)約束 (Default Counstraint) 該數(shù)據(jù)的默認(rèn)值;
4.外鍵約束 (Foreign Key Counstraint) 需要建立兩表間的關(guān)系;
5.非空約束(Not Null Counstraint):設(shè)置非空約束,該字段不能為空。
五大約束的語(yǔ)法示例:
添加主鍵約束
Alter table 表名 add Constraint 主鍵名 primary key(字段)添加唯一約束
Alter table 表名 add Constraint 約束名 unique(字段)添加默認(rèn)約束
Alter table 表名 add Constraint 約束名 default(默認(rèn)內(nèi)容) for 字段名添加檢查約束
Alter table 表名 add Constraint 約束名 check (字段表達(dá))添加外鍵約束
Alter table 表名 add Constraint 約束名 foreign key(字段) references 表名(字段名)
1.1用戶(hù)表(user)
CREATE TABLE `user`( `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '用戶(hù)id(主鍵)', `username` VARCHAR(50) COMMENT '用戶(hù)姓名', `age` CHAR(3) COMMENT '用戶(hù)年齡' );
插入數(shù)據(jù)
INSERT INTO USER VALUES(2,'小二',12); INSERT INTO USER VALUES(3,'張三',33); INSERT INTO USER VALUES(4,'李四',24); INSERT INTO USER VALUES(5,'王五',17); INSERT INTO USER VALUES(6,'趙六',36); INSERT INTO USER VALUES(7,'七七',18);
完成后
表名 user
表數(shù)據(jù):
1.2學(xué)生表
CREATE TABLE `students`( `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '學(xué)生id(主鍵)', `name` VARCHAR(10) COMMENT '學(xué)生姓名', `grade` VARCHAR(10) COMMENT '學(xué)生年級(jí)', `chinese` INT COMMENT '語(yǔ)文成績(jī)', `math` INT COMMENT '數(shù)學(xué)成績(jī)', `english` INT COMMENT '英語(yǔ)成績(jī)' );
插入數(shù)據(jù)
INSERT INTO students VALUES(1,'迪麗熱巴','二年級(jí)',100,100,100); INSERT INTO students VALUES(2,'古力娜扎','一年級(jí)',99,88,98); INSERT INTO students VALUES(3,'馬爾扎哈','三年級(jí)',46,20,99); INSERT INTO students VALUES(4,'阿里巴巴','一年級(jí)',78,81,100); INSERT INTO students VALUES(5,'哈哈哈哈','六年級(jí)',20,10,5); INSERT INTO students VALUES(6,'作者本人','二年級(jí)',100,100,100); INSERT INTO students VALUES(7,'嘻嘻哈哈','五年級(jí)',70,99,60); INSERT INTO students VALUES(8,'哭哭啼啼','四年級(jí)',33,15,54);
列名或者表名和 MySQL 關(guān)鍵字沖突可以使用 ` 符號(hào),鍵盤(pán)esc 下面,1 左邊,Tab 上面;
注意 ==> 如果成績(jī)類(lèi)型是 varcher ,那使用排序?qū)?huì)顯示不正確。
完成后
表名 students
表數(shù)據(jù):
2.查詢(xún)
2.1查詢(xún)?nèi)浚ㄟ@里使用user用戶(hù)表)
Select * from 表名;
SELECT * FROM USER;
2.2查詢(xún)已經(jīng)成年的用戶(hù)(使用where條件查詢(xún))
SELECT * FROM USER WHERE age >= 18;
2.3查詢(xún)未成年用戶(hù)的名字
SELECT 字段名 FROM 表名 WHERE 條件;
SELECT username FROM USER WHERE age < 18;
2.4使用別名查詢(xún)
使用as關(guān)鍵字(as可以省略)
SELECT u.* FROM USER AS u;
2.5使用邏輯運(yùn)算符查詢(xún)
邏輯運(yùn)算符( 并且:and 或 && 或:or 非:not 或 ! )
查詢(xún)名字為小二又年齡是12歲的(顯示名字和年齡)
SELECT u.`username`,u.`age` FROM USER u WHERE u.`username`='小二' && u.`age`=12;
查詢(xún)名字為張三又是未成年的(查詢(xún)結(jié)果空,沒(méi)有這個(gè)人)
SELECT * FROM USER WHERE username='張三' && age < 18;
2.6使用運(yùn)算符查詢(xún)(這里開(kāi)始使用students學(xué)生表)
查詢(xún) 哈哈哈哈 的三科總分
運(yùn)算符優(yōu)先級(jí):
1.乘法和除法的優(yōu)先級(jí)高于加法和減法
2.同級(jí)運(yùn)算的順序是從左到右
3.表達(dá)式中使用"括號(hào)"可強(qiáng)行改變優(yōu)先級(jí)的運(yùn)算順序
select 列1[ ±*/ ]列2 from 表名 where 條件;
SELECT s.chinese + s.math + s.english FROM students s WHERE s.name = '哈哈哈哈';
2.7范圍查詢(xún)(between 條件1 and 條件2)
(良 60-70,中70-80,優(yōu)80-90,優(yōu)秀90-100)
查詢(xún)語(yǔ)文成績(jī)是 良到中 的同學(xué)名字一
where 字段(列名) between 條件1 and 條件2;
SELECT NAME FROM students WHERE chinese BETWEEN 60 AND 80;
查詢(xún)數(shù)學(xué)成績(jī)不合格的同學(xué)名字
二
where 字段(列名)not between 條件1 and 條件2;
SELECT NAME FROM students WHERE math NOT BETWEEN 60 AND 100;
查詢(xún)英語(yǔ)成績(jī)優(yōu)秀的同學(xué)id和名字;
三
where !( 字段名 between 條件1 and 條件2);
SELECT s.`id`,s.`name` FROM students s WHERE !(s.`english` BETWEEN 0 AND 90);
2.8集合查詢(xún)查詢(xún)一年級(jí)和二年級(jí)的學(xué)生信息
where 列名 in (值1,值2,值3);
SELECT * FROM students WHERE grade IN ('一年級(jí)','二年級(jí)');
*查詢(xún)一年級(jí),二年級(jí),三年級(jí)以外的學(xué)生信息
where 列名 not in (值1,值2,值3);
SELECT * FROM students WHERE grade NOT IN ('一年級(jí)','二年級(jí)','三年級(jí)');
2.9 NULL值查詢(xún)
注意:列中值為null不能使用=去查詢(xún)
查詢(xún)名字為 null 的學(xué)生數(shù)據(jù)(沒(méi)有存儲(chǔ)有,所以啥也沒(méi)有)
where 列名 is null;
SELECT * FROM students WHERE `name` IS NULL;
2.10模糊查詢(xún)( like )% 表示0個(gè)到n個(gè)字符
where 列名 like '%巴'; -- 表示以 巴 結(jié)尾的; where 列名 like '巴%'; -- 表示以 巴 開(kāi)頭的; where 列名 like '%巴巴%' -- 表示數(shù)據(jù)里面包含 巴巴 的;
查詢(xún)名字以 巴 結(jié)尾的學(xué)生;
SELECT * FROM students WHERE `name` LIKE '%巴';
查詢(xún)名字以 作者 開(kāi)頭的學(xué)生;
SELECT * FROM students WHERE `name` LIKE '作者%';
查詢(xún)名字里面包含 嘻哈 的學(xué)生;
SELECT * FROM students WHERE `name` LIKE '%嘻哈%';
_ 表示一個(gè)字符,可以多次使用
查詢(xún)名字里面倒數(shù)第二個(gè)字有 哈 的學(xué)生
where 列名 like ‘哈_';
SELECT * FROM students WHERE `name` LIKE '%哈_';
2.11結(jié)果排序
對(duì)結(jié)果經(jīng)行排序(對(duì)查詢(xún)出的結(jié)果按照一列或多列進(jìn)行升序或者倒序排序,升序式ASC,倒序式 DESC,默認(rèn)升序)。
注意不能使用中文或者中問(wèn)別名排序。
where 條件 order by 列名 [ ASC / DESC ];
查詢(xún)一年級(jí),二年級(jí),三年級(jí)學(xué)生數(shù)據(jù),以 語(yǔ)文成績(jī)排序,降序。
SELECT * FROM students WHERE grade IN ('一年級(jí)','二年級(jí)','三年級(jí)') ORDER BY chinese DESC;
2.12分頁(yè)查詢(xún)
分頁(yè)查詢(xún)( beginIndex 表示從第幾條數(shù)據(jù)開(kāi)始(也可以說(shuō)是跳過(guò)前面多少頁(yè)),第一頁(yè)從0開(kāi)始。pageSize 表示每頁(yè)顯示多少條數(shù)據(jù));
select * from 表名 where 條件 limit beginIndex , pageSize;
分頁(yè)算法公式 (當(dāng)前頁(yè) - 1)* pageSize;
比如說(shuō)每頁(yè) 10頁(yè) 分頁(yè)。
第一頁(yè) limit 0,10;// 顯示 0-10;跳過(guò)前面0條數(shù)據(jù)
第二頁(yè) limit 10,10;// 顯示 11-20;跳過(guò)前面10條數(shù)據(jù)
第三頁(yè) limit 20,10;// 顯示 21-30;跳過(guò)前面20條數(shù)據(jù)
注意當(dāng)我們使用 select * from students;(最后底層執(zhí)行語(yǔ)句分頁(yè)了 limit 0,1000 )
查詢(xún)?nèi)繉W(xué)生,每頁(yè)三條數(shù)據(jù)
第一頁(yè)
SELECT * FROM students LIMIT 0,3;
第二頁(yè)
SELECT * FROM students LIMIT 3,3;
第三頁(yè)
SELECT * FROM students LIMIT 6,3;
2.13聚合函數(shù)
作用于一組數(shù)據(jù),對(duì)那組返回一個(gè)值
注意,分組函數(shù) group by。如果要對(duì) 分組后 的數(shù)據(jù)進(jìn)行篩選,那么必須使用 having 關(guān)鍵字,條件寫(xiě)在 having 后面;
插入我們需要練習(xí)的表city 表
CREATE TABLE `city` ( `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '主鍵', `city_name` VARCHAR(100) COMMENT '城市名', `city_year` VARCHAR(4) COMMENT '年份,yyyy', `city_gdp` DOUBLE COMMENT '當(dāng)前年份,城市一整年的GDP,單位億元', `city_population` DOUBLE COMMENT '當(dāng)前年豐,城市的總?cè)丝?,單位萬(wàn)人' );
添加數(shù)據(jù)
INSERT INTO city VALUES(1,'上海',2018,32679,2418); INSERT INTO city VALUES(2,'北京',2018,30320,2171); INSERT INTO city VALUES(3,'深圳',2018,24691,1253); INSERT INTO city VALUES(4,'廣州',2018,23000,1450); INSERT INTO city VALUES(5,'重慶',2018,20363,3372); INSERT INTO city VALUES(6,'上海',2019,38155,2424); INSERT INTO city VALUES(7,'北京',2019,35371,2171); INSERT INTO city VALUES(8,'深圳',2019,26927,1302); INSERT INTO city VALUES(9,'廣州',2019,23628,1491); INSERT INTO city VALUES(10,'重慶',2019,23605,3372);
COUNT
查詢(xún)計(jì)算2019年一共有多少個(gè)城市錄入數(shù)據(jù)(答案 5個(gè))
SELECT COUNT(*) FROM city WHERE city_year = '2019';
MAX
查詢(xún) 2018年里 GDP 最高是多少;
SELECT MAX(city_gdp) FROM city WHERE city_year = '2018';
MIN
查詢(xún) 2018年里 GDP 最低是多少;
SELECT MIN(city_gdp) FROM city WHERE city_year = '2018';
SUM
查詢(xún)2019年里所有城市 GDP 總和;
SELECT SUM(city_gdp) FROM city WHERE city_year = '2019';
AVG
查詢(xún)2019年所有城市 GDP 平均值;
SELECT AVG(city_gdp) FROM city WHERE city_year = '2019';
3.增加
insert into 表名(字段1,字段2,字段3,…)values(值1,值2,值3,…);
添加學(xué)生雞雞雞雞
INSERT INTO students(id,NAME,grade,chinese,math,english) VALUES( 9,'雞雞雞雞','七年級(jí)',77,77,77);
其它插入方式
INSERT INTO 表名(字段1,字段2,字段3) VALUES (值1,值2,值3),(值1,值2,值3); -- 插入多條數(shù)據(jù) INSERT INTO 表名 VALUES(值1,值2); -- 針對(duì)表全字段進(jìn)行插入操作 INSERT INTO 表名(字段) SELECT 字段 FROM 表2; -- 查詢(xún)結(jié)果插入 INSERT INTO 表名 SELECT 字段 FROM 表2; -- 查詢(xún)結(jié)果,全表插入
4.更新
update 表名 set 字段=值 where 條件; -- 帶條件的去修改指定數(shù)據(jù),否則修改全表;
修改學(xué)生 ‘哈哈哈哈' 的英語(yǔ)成績(jī)?yōu)?10;
UPDATE students SET english = 10 WHERE `name` = '哈哈哈哈';
5.刪除
delete from 表名 where 條件; -- 刪除數(shù)據(jù)帶條件刪除,否則刪除全表的數(shù)據(jù)
刪除學(xué)生 ‘雞雞雞雞' ;
DELETE FROM students WHERE `name` = '雞雞雞雞';
6.語(yǔ)句執(zhí)行順序
from -> on -> join -> where -> group by -> having -> select -> distinct -> order by -> limitMySQL其它文章,請(qǐng)看下面鏈接
MySQL DDL 語(yǔ)句
MySQL CRUD 語(yǔ)句
MySQL 聚合函數(shù)
MySQL 多表查詢(xún)
END…
到此這篇關(guān)于MySQL 詳細(xì)單表增刪改查crud語(yǔ)句的文章就介紹到這了,更多相關(guān)MySQL 增刪改查語(yǔ)句內(nèi)容請(qǐng)搜索億速云以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持億速云!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。