5天学习MYSQL数据库第一天剩余全部笔记(超级详细的mysql入门笔记适合新手反复看加深记忆)
這是關于五天學習MYSQL數據庫的筆記,如果想要觀看視頻可以訪問(視頻鏈接(b站)
或者訪問視頻鏈接
之前的筆記已經記到了1.3的mysql基本介紹,接下來主要是:
2.1MySQL服務端框架
一. Mysql服務端架構以下幾層構成
數據庫中常用的幾個關鍵字:
row:行
column:列(field)
這里只是簡單說了mysql分層的一個存儲架構,如果需要再深入了解底層架構,可以訪問mysql服務器架構(鏈接)
2.2SQL基本操作----庫操作(創建數據庫)
數據庫是數據存儲的最外層(最大單元)。
創建數據庫:
基本語法:create database 數據庫名 [庫選項];
庫選項:數據庫的相關屬性
字符集:charset 字符集,代表當前數據庫下的所有表存儲的數據默認指定的字符集(如果不指定,則采用DBMS默認)
create database 數據庫名 charset 字符集名稱;
校對集:collate 校對集(校對集默認是隨字符集的)
2.3SQL基本操作----庫操作(顯示數據庫)
用戶每通過SQL指令創建一個數據庫,那么系統就會產生一個對應的存儲數據的文件夾(data)。每個數據庫文件夾下面有一個opt文件,保存的是對應的數據庫選項。
一. 顯示全部
基本語法:show databases;
二. 顯示部分
基本語法:show databases like ‘匹配模式’;
匹配模式:
_:匹配當前位置的單個字符。
%:匹配指定位置多個字符,前后。
三. 顯示數據庫創建語句
基本語法:show create database 數據庫名字;
如圖:
2.4SQL基本操作----庫操作(選擇+修改+刪除)
一. 選擇數據庫
為什么要選擇數據庫?
因為數據存儲再數據表中,數據表存在數據庫下,要操作數據,必須首先進入到數據庫下。
基本語法:use 數據庫名字;
二. 修改數據庫
修改數據庫的字符集(庫選項)
是否可以修改數據庫的名字?mysql5.5之前可以,rename命令,但是5.5之后就不可以了
基本語法:alter database數據庫名字 charset[=]字符集;
一旦修改成功,opt文件改變。
三 .刪除數據庫
基本語法:drop database 數據庫名字;
刪除要做好安全操作,確保里面數據沒有問題。
刪除數據庫之后,對應的存儲數據的文件夾也會被刪除。
3.1SQL基本操作----表操作(創建數據表)
一.創建數據表
基本語法:create table 表名(字段名 字段類型 [字段屬性],字段名
字段類型 [字段屬性]……)[表選項];
有兩種方式可以將表掛到指定的數據庫下面:
第一種:在數據表名字前面加上數據庫名字用‘.’連接:數據庫名.數據表名
第二種:在創建數據表之前先進入到某個數據庫:use 數據庫名;
表選項和數據庫選項類似:
Engine:存儲引擎,mysql提供的具體存儲數據的方式,默認有一個innodb(5.5之前默認是myisam)
Charset:字符集(只對當前自己表有效,級別比數據庫高)
Collate:校對集
從已經存在的表復制一份(只復制結構,如果表中有數據不復制)。
基本語法:create table 新表名 like 表名;
只要使用數據庫.(小數點)表名,就可以在任何數據庫下訪問其他數據庫里的表名。
3.2SQL基本操作----表操作(多維度顯示表)
每當一個數據表創建,就會在對應的數據庫下面創建一些文件(與存儲引擎有關)。 Frm代表結構文件。
注意:這個結構文件來自于innodb存儲引擎。Innodb存儲引擎的所有文件都存儲在外部的ibdata文件中。
一 .顯示所有表
基本語法:show tables;
二 .匹配顯示表
基本語法:show tables like ‘匹配模式’;
三 .顯示表結構
本質含義:顯示表中所包含的字段信息(名字,類型,屬性等等)
基本語法:
describe 表名;
desc 表名;
show columns from 表名;
四. 顯示表的創建語句
查看數據表創建時的語句,顯示結果不一定是用戶之前輸入的。
基本語法:show create table 表名;
Mysql中有多種語句結束符:
;和\g效果一樣,都是字段在橫排,下面是對應的數據。
\G字段在豎排,右側是對應的數據。
4.1SQL基本操作----表操作(多維度修改表)
一 .設置表屬性
表屬性就是表選項,engine,charset,collate
基本語法:alter table 表名 表選項[=]值;
例:alter table class charset gbk;
注意:如果數據庫已經確定,里面有很多數據,不要輕易的修改表選項(字符集影響不大)。
二 .修改表結構
數據庫中數據表名字通常有前綴,取數據庫的前兩個字母加下劃線
修改表名:rename table 舊表名 to 新表名;
修改表選項:alter table 表名 表選項[=]新值;
新增字段:alter table 表名 add [column] 新字段名 列類型 [列屬性] [位置first/after字段名];
例:alter table teacher add column age int; 默認加在表的最后面
修改字段名:alter table 表名 change 舊字段名 新字段名 字段類型 [列屬性] [新位置];
修改字段類型(屬性):alter table 表名 modify 字段名 新類型 [新屬性]
[新位置];
刪除字段:alter table 表名 drop 字段名;
三.刪除表結構
基礎語法:drop table 表名1[,表名2……];可以同時刪除多個數據表
5.1SQL基本操作----數據操作(插入數據)
一 插入操作
本質含義:將數據以SQL的形式存儲到指定的數據表(字段)里面
基本語法:
Insert into 表名 [(字段列表)] values(對應字段列表);
例:
注意:后面values中的對應的值列表只需要與前面的字段列表相對應即可,不一定與表結構完全一致。
字段列表不一定非要有表中的所有字段。
Insert into 表名 values (對應表結構);(向表中所有字段插入數據,值列表必須與字段列表一致)
5.2SQL基本操作----數據操作(查刪改)
一. 查詢操作
查詢表中全部數據:select * from 表名; // *表示匹配所有的字段
查詢表中部分字段:
select 字段列表 from 表名;//字段列表使用逗號隔開
簡單條件查詢數據:
select 字段列表/ * from 表名 where 字段名 = 值;
二 .刪除操作
基本語法:
delete from 表名 [where 條件];
如果沒有where條件,系統會自動刪除該表的所有數據(慎用)。
三. 更新操作
更新:將數據進行修改,通常是修改部分字段數據。
基本語法:update 表名 set 字段名 = 新值 [where 條件];
如果沒有where條件,那么表中那個字段會被修改成統一值。
6.1字符集----簡介
一. 字符編碼的概念
字符:各種文字和符號的總稱。
在計算機中看到的任何內容都是字符構成的。
字符編碼: 是計算機針對各種符號,在計算機中的一種二進制存儲代號。
二. 字符集概念
字符集是多個字符的集合,字符集種類較多,每個字符集包含的字符個數不同。
常見字符集名稱: ASCII字符集、GB2312字符集、BIG5字符集、GB18030 字符集、Unicode 字符集等。計算機要準確的處理各種字符集文字,需要進行字符編碼,以便計算機能夠識別和存儲各種文字。中文文字數目大,而且還分為簡體中文和繁體中文兩種不同書寫規則的文字,而計算機最初是按英語單字節字符設長的,因此,對中文字符進行編碼,是中文信息交流的技術基礎。
6.2字符集----mysql字符集設置
一. 設置客戶端所有字符集
如果直接通過cmd下的mysql.exe進行中文數據插入,可能出錯。
出錯原因:
用戶是通過mysql.exe來操作mysqld.exe
真正的SQL執行是mysql.exe來執行
mysql.exe將數據傳入mysqld.exe的時候,沒有告知其對應的符號規則(字符集),而mysqld.exe也沒有能力自己判斷,就會使用自己默認的字符集。
解決方案:
Mysql.exe客戶端在進行數據操作之前將自己所使用的字符集告訴mysqld.exe。
Cmd下的mysql.exe默認都只有一個字符集:GBK
如何告知mysqld.exe字符集是gbk呢?
快捷方式: set names 字符集;
深層原理: 客戶端,服務端,連接層
(show variable like ‘character set_%’)
Mysql.exe與mysqld.exe之間的處理關系一共分為三層:
客戶端傳入數據給服務端:client--------character_set_client
服務端返回數據給客戶端:server---------character_set_result
客戶端與服務端之間的連接:collection----------character_set_collection
set names 字符集;
語句的本質: 就是一次性打破三層關系的字符集,變得一致。
在系統中有三個變量來記錄著這三個關系對應的字符集: show variable
like ‘character_set%;
查看一個新的客戶端的對應的字符集關系:
修改變量的值:
set 變量 = 值;
如果只修改服務器端變量的值為gbk,則插入中文能夠成功,但是查詢顯示出插入的中文數據是亂碼。
因為:客戶端給服務端的數據正確,服務端返回的結果默認是utf8,但是當前窗口只識別gbk
解決方法:set character_set_results = gbk;
對應的character_set_database也會自動修改為gbk;
Connection只是為了更方便客戶端與服務端進行字符集轉換而設。
set names gbk;
等價于
set character_set_client = gbk;//為了讓服務器識別客戶端傳來的數據
set character_set_connection = gbk; //更好的幫助客戶端與服務端之間進行字符集轉換
set character_set_results= gbk; //為了告訴客戶端服務端所有的返回的數據字符集
總結
以上是生活随笔為你收集整理的5天学习MYSQL数据库第一天剩余全部笔记(超级详细的mysql入门笔记适合新手反复看加深记忆)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美国新思推出全栈AI加速EDA工具套件:
- 下一篇: 阿里云数据库MYSQL和自建数据库的对比