溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL必備基礎(chǔ)知識(shí)有哪些

發(fā)布時(shí)間:2021-04-15 09:52:39 來(lái)源:億速云 閱讀:152 作者:小新 欄目:MySQL數(shù)據(jù)庫(kù)

這篇文章給大家分享的是有關(guān)MySQL必備基礎(chǔ)知識(shí)有哪些的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

一、SQL的概念

    結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language)簡(jiǎn)稱SQL,是一種特殊目的的編程語(yǔ)言,是一種數(shù)據(jù)庫(kù)查詢和程序設(shè)計(jì)語(yǔ)言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。

二、SQL分類(lèi)

(1)數(shù)據(jù)定義語(yǔ)言(Data Definition Language) DDL
用來(lái)定義數(shù)據(jù)庫(kù)對(duì)象:數(shù)據(jù)庫(kù),表,列……
(2)數(shù)據(jù)操作語(yǔ)言(Data Manipulation Language) DML
用來(lái)對(duì)數(shù)據(jù)庫(kù)中表的記錄進(jìn)行更新。
(3)數(shù)據(jù)查詢語(yǔ)言(Data Query Language) DQL
用來(lái)查詢數(shù)據(jù)庫(kù)中表的記錄。
(4)數(shù)據(jù)控制語(yǔ)言(Data Control Language) DCL

(一)DDL

1.創(chuàng)建數(shù)據(jù)庫(kù)
	create database 數(shù)據(jù)庫(kù)名; 
	create database 數(shù)據(jù)庫(kù)名 character set 字符集; //字符集一般為uft-8,第二個(gè)語(yǔ)句是創(chuàng)建數(shù)據(jù)的同時(shí)并設(shè)置了字符集。2.查看數(shù)據(jù)庫(kù)
	use 數(shù)據(jù)庫(kù)名;   //切換數(shù)據(jù)庫(kù)
	show databases;  //查看MySQL中都有哪些數(shù)據(jù)庫(kù)
	select database();   //查看當(dāng)前正在使用的數(shù)據(jù)庫(kù)
	show create database 數(shù)據(jù)庫(kù)名;  //查看一個(gè)數(shù)據(jù)庫(kù)的定義信息3.修改數(shù)據(jù)庫(kù)字符集
	alter database 數(shù)據(jù)庫(kù)名 character set 字符集;4.刪除數(shù)據(jù)庫(kù)
	drop database 數(shù)據(jù)庫(kù)名;5.創(chuàng)建表
	CREATE TABLE 表名(
		字段名稱1  字段類(lèi)型(長(zhǎng)度),
		字段名稱2  字段類(lèi)型(長(zhǎng)度)		//注意:最后一個(gè)字段名稱末尾不加,
    );
	/*常用的數(shù)據(jù)類(lèi)型
	  int  整型  double 浮點(diǎn)型  varchar 字符串 
	  data 	日期類(lèi)型,yyyy-MM-dd  年-月-日
	  注意: char也表示字符串,但是跟varchar是有區(qū)別的
	  char和varchar區(qū)別:
	   	 char類(lèi)型是固定長(zhǎng)度的,varchar是根據(jù)輸入字符分配合適的空間,一般情況下用varchar
	 */6.查看表
	show tables;   //查看當(dāng)前數(shù)據(jù)庫(kù)所有的表
	desc 表名;  //查看表的結(jié)構(gòu)7.修改表
	rename table 舊表名 to 新表名;  // 修改表名
	alter table 表名 character set 字符集;  //修改字符集
	alert table 表名 add 字段名稱 字段類(lèi)型;  //向表中添加字段
	alter table 表名 drop 字段名;  //刪除字段8.刪除表
	drop 表名 if exists 表名; //刪除該表

(二)DML

1.插入數(shù)據(jù)
	insert into 表名 (字段名1,字段名2...) values(字段值1,字段值2...);2.更改數(shù)據(jù)
	update 表名 set 列名 = 值 [where 字段名 = 值];3.刪除數(shù)據(jù)
	delete from 表名 [where 字段名 = 值];

(三)DQL

1.簡(jiǎn)單查詢
	select 列名 from 表名; //列名可以用*號(hào)代替表示查詢所有字段2.條件查詢
	select 列名 from 表名 where 條件表達(dá)式;
	//  %表示任意多個(gè)字符串,  _表示匹配一個(gè)字符,
3.排序
	SELECT 字段名 FROM 表名 [WHERE 字段 = 值] ORDER BY 字段名 [ASC / DESC];
	// ASC 表示升序排序(默認(rèn)),DESC表示降序排序4.聚合函數(shù)	/*常用聚合函數(shù)
	* count(字段) 統(tǒng)計(jì)指定列不為NULL的記錄行數(shù)
	* sum(字段)  計(jì)算指定列的數(shù)值和
	* max(字段)  計(jì)算指定列的最大值
	* min(字段)  計(jì)算指定列的最小值
	* avg(字段)  計(jì)算指定列的平均值
	*/
	SELECT 聚合函數(shù)(字段名) FROM 表名;5.分組
	SELECT 分組字段/聚合函數(shù) FROM 表名 GROUP BY 分組字段 [HAVING 條件];6.limit關(guān)鍵字
	SELECT 字段1,字段2... FROM 表名 LIMIT offset , length;
	// offset  起始行數(shù), 從0開(kāi)始記數(shù), 如果省略 則默認(rèn)為 0.
	// length 返回的行數(shù)

(四)DCL

1.創(chuàng)建用戶
	CREATE USER '用戶名'@'主機(jī)名' IDENTIFIED BY '密碼';2.給用戶授權(quán)
	GRANT 權(quán)限 1, 權(quán)限 2... ON 數(shù)據(jù)庫(kù)名.表名 TO '用戶名'@'主機(jī)名';3.查看權(quán)限
	SHOW GRANTS FOR '用戶名'@'主機(jī)名';4.刪除用戶
	DROP USER '用戶名'@'主機(jī)名';5.查詢用戶
	SELECT * FROM USER;

三、 SQL約束

1. 主鍵約束	// 不可重復(fù) 唯一 非空
	字段名 字段類(lèi)型 primary key;	//  主鍵的自動(dòng)增長(zhǎng) AUTO_INCREMENT 表示自動(dòng)增長(zhǎng)(字段類(lèi)型必須是整數(shù)類(lèi)型)
	// 默認(rèn)主鍵起始值是1,改變起始值
	//-- 創(chuàng)建主鍵自增的表,自定義自增其實(shí)值字段名 字段類(lèi)型 DEFAULT 默認(rèn)值
	
	// CREATE TABLE 表名(
	// eid INT PRIMARY KEY AUTO_INCREMENT,
	// ……
	// )AUTO_INCREMENT=100;

	// DELETE和TRUNCATE對(duì)自增長(zhǎng)的影響(前者對(duì)自增沒(méi)有影響,后者從1開(kāi)始自增)2. 非空約束
	字段名 字段類(lèi)型 not null,3. 唯一約束
	字段名 字段類(lèi)型 unique,4. 默認(rèn)值
	字段名 字段類(lèi)型 DEFAULT 默認(rèn)值

四、事務(wù)控制

1.什么是事務(wù)
	事務(wù)是一個(gè)整體,由一條或者多條SQL 語(yǔ)句組成,這些SQL語(yǔ)句要么都執(zhí)行成功,要么都執(zhí)行失敗, 只要一條SQL出現(xiàn)異常,整個(gè)操作就會(huì)回滾,整個(gè)業(yè)務(wù)執(zhí)行失敗。2. 手動(dòng)提交事務(wù)
	① 開(kāi)啟事務(wù) start transaction; 
	② 提交事務(wù) commit;
	③ 回滾事務(wù) rollback;3. 自動(dòng)提交事務(wù)(MySQL默認(rèn))	// 取消自動(dòng)提交
	SET @@autocommit=off;
	// 查看自動(dòng)狀態(tài), on是自動(dòng),off是手動(dòng)提交
	SHOW VARIABLES LIKE 'autocommit';4. **事務(wù)的四大特性**(重點(diǎn))
	原子性,一致性,隔離性,持久性。5. 事務(wù)隔離級(jí)別	//查看隔離級(jí)別
	select @@tx_isolation; //5.7版本
	// 設(shè)置隔離級(jí)別
	set global transaction isolation level 級(jí)別名稱;
	// read uncommitted 讀未提交
	// read committed 讀已提交
	// repeatable read 可重復(fù)讀
	// serializable 串行化

五、多表

(一)概述

 	1. 在實(shí)際開(kāi)發(fā)中,單表是滿足不了業(yè)務(wù)需求的,同一個(gè)字段中很可能出現(xiàn)大量的
冗余字段,這就需要我們引入了多表。    2. 如果表1的某個(gè)字段與表2的主鍵對(duì)應(yīng),那么表1的這個(gè)字段就稱為表1的外鍵,
擁有外鍵的表是從表,與外鍵對(duì)應(yīng)的主鍵所在的表成為主表。    4. 外鍵約束:外鍵約束可以讓兩張表之間產(chǎn)生一定的對(duì)應(yīng)關(guān)系,從而形成了約束。    5. 外鍵指的是與在從表中與主表的主鍵對(duì)應(yīng)的字段。    6. 添加外鍵約束的語(yǔ)法格式    	[CONSTRAINT] [外鍵約束名稱] FOREIGN KEY(外鍵字段名) REFERENCES 
    主表名(主鍵字段名);
    alter table 從表 add [CONSTRAINT] [外鍵約束名稱] FOREIGN KEY(外鍵字段名) 		REFERENCES 主表名(主鍵字段名);
    //  中括號(hào)里面的東西都是可以省略的 
    7. 刪除外鍵約束的語(yǔ)法格式
    alter table 從表 drop foreign key 外鍵約束名稱;
    8.外鍵約束的注意事項(xiàng):
    	① 從表的外鍵類(lèi)型必須與主表的主鍵類(lèi)型一致。
    	② 添加數(shù)據(jù)時(shí),應(yīng)該先添加主表的數(shù)據(jù),然后再添加從表的數(shù)據(jù)
    	③ 刪除數(shù)據(jù)的時(shí)候,要先刪除從表中的數(shù)據(jù),再刪除主表中的數(shù)據(jù)。    9.級(jí)聯(lián)刪除
    	 刪除數(shù)據(jù)的時(shí)候,要先刪除從表中的數(shù)據(jù),再刪除主表中的數(shù)據(jù),設(shè)置級(jí)聯(lián)刪除
    變可以直接刪除主表中的數(shù)據(jù),同時(shí)從表中的數(shù)據(jù)也會(huì)跟著消失。
    	on delete cascade; //添加外鍵約束的時(shí)候后面跟著這句

(二)多表間關(guān)系

一對(duì)多: 在多的表上建立外鍵
多對(duì)多: 建立第三個(gè)表,最起碼有兩個(gè)字段(兩個(gè)表的主鍵)
一對(duì)一: 任意一個(gè)表上建立外鍵

(三) 多表查詢

1.內(nèi)連接查詢
	SELECT 字段名 FROM 左表, 右表 WHERE 連接條件;
	SELECT 字段名 FROM 左表 [inner]  JOIN 右表 ON 連接條件;2.外連接查詢
	SELECT 字段名 FROM 坐標(biāo) LEFT [outer] JOIN 右表 ON 連接條件;
	SELECT 字段名 FROM 坐標(biāo) RIGHT [outer] JOIN 右表 ON 連接條件;// 內(nèi)連接: inner join , 只獲取兩張表中 交集部分的數(shù)據(jù).// 左外連接: left join , 以左表為基準(zhǔn) ,查詢左表的所有數(shù)據(jù), 以及與右表有交集的部分// 右外連接: right join , 以右表為基準(zhǔn),查詢右表的所有的數(shù)據(jù),以及與左表有交集的部分3.子查詢
	SELECT 查詢字段 FROM 表 WHERE 字段=(子查詢);
	SELECT 查詢字段 FROM (子查詢)表別名 WHERE 條件;
	SELECT 查詢字段 FROM 表 WHERE 字段 IN (子查詢);
	// 子查詢?nèi)绻槌龅氖且粋€(gè)字段(單列), 那就在where后面作為條件使用.
	// 子查詢?nèi)绻樵兂龅氖嵌鄠€(gè)字段(多列), 就當(dāng)做一張表使用(要起別名).

六、數(shù)據(jù)庫(kù)三范式

數(shù)據(jù)庫(kù)設(shè)計(jì)的一種規(guī)則
目的: 創(chuàng)建 冗余較小,結(jié)構(gòu)合理的數(shù)據(jù)庫(kù)。
第一范式(1NF) 滿足最低要求的范式——列具有原子性,列要做到不可拆分性
第二范式(2NF) 在滿足第一范式的基礎(chǔ)之上進(jìn)一步滿足更多的規(guī)范—— 一張表只能描述一件事情
第三范式(3NF) 以此類(lèi)推………………

七、MySQL索引

索引的作用:為了提高索引的效率
**常見(jiàn)索引的分類(lèi):**主鍵索引(primary key);
唯一索引(unique);普通索引(index);

(一)主鍵索引

1.創(chuàng)建的時(shí)候添加主鍵索引
	CREATE TABLE 表名(
	字段名 類(lèi)型 PRIMARY KEY ,
	//主鍵索引是唯一索引
	);2.在已有表的基礎(chǔ)上添加主鍵索引
	ALTER TABLE 表名 ADD PRIMARY KEY(列名);

(二)唯一索引

1. 創(chuàng)建的時(shí)候添加唯一索引
	CREATE TABLE 表名(
		UNIQUE [索引名稱] (列名) 
	);2. 在已有表的基礎(chǔ)上添加唯一索引
	CREATE UNIQUE INDEX 索引名 on 表名(列名);
	ALTER TABLE 表名 ADD UNIQUE (列名);

(三)普通索引

	create index 索引名 on 表名(列名[長(zhǎng)度]);
	ALTER TABLE 表名 ADD INDEX 索引名(列名);

(四)刪除索引

	ALTER TABLE table_name DROP INDEX index_name;

八、MySQL視圖

	// 視圖是一個(gè)表中根據(jù)不同需求提取出來(lái)的一個(gè)實(shí)際上不存在的表
	create view 視圖名 [column_list] as select語(yǔ)句;
    // 通過(guò)視圖進(jìn)行查詢時(shí)將視圖看成是一張表即可

感謝各位的閱讀!關(guān)于“MySQL必備基礎(chǔ)知識(shí)有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI