大資料學習之路——MySQL基礎(一)——MySQL的基礎知識與常見操作

風魚發表於2021-05-29
一、儲存引擎
1.含義
儲存引擎是資料庫底層軟體組織,資料庫管理系統(DBMS)使用資料引擎進行建立、查詢、更新和刪除資料。不同的儲存引擎提供不同的儲存機制、索引技巧、鎖定水平等功能,使用不同的儲存引擎,還可以 獲得特定的功能。現在許多不同的資料庫管理系統都支援多種不同的資料引擎。MySQL的核心就是儲存引擎。
2.常用儲存引擎
(1)InnoDB(MySQL5.1版本之後的版本預設的是InnoDB):優勢在於提供了良好的事務處理,崩潰修復能力和併發控制,缺點是讀寫效率較差,佔用資料空間較大。
1.事務處理、回滾、崩潰修復能力和多版本併發控制
2.自增長(可以思考索引的資料結構)
3.外來鍵(多張表之間的關聯,如主表和從表)
(2)MyISAM(MySQL5.1版本之前預設):優勢在於佔用空間小,處理速度快,缺點是不支援事物完整性和併發性
(3)Memory:資料全部放在記憶體中,採用雜湊索引;但如果記憶體出現異常就會影響資料,重啟或關機所有資料都會消失,因此其生命週期很短,一般是一次性的。
 
二、資料型別
主要為數值型、字串、和日期時間型別
(1)數值型:
整數型:
int:正常大小的整數,可以帶正負號,範圍為-2147483648-2147483647;約-21億到+21億
tinyint(非常小的整數,可以帶正負號,範圍為-128-127;不帶符號的話為0-255),
bigint(非常大的整數,可以帶正負號)
小數型:
float(m,d):m引數為顯示長度,d引數為小數位數,預設為10,2
double(m,d):m引數為顯示長度,d引數為小數位數,預設為16,4。雙精度浮點小數(比float範圍更廣);
 
 
(2)字串型別:
普通型別:
char(m):m表示字串的固定長度:例如:sex char(1) , 表示的是性別這列的字串只能為1個,如男/女
varchar(m):m表示字串的可變長度,例如:cname varchar(5), 表示的則是cname列的字串的長度最長不能超過5
###注意:
char:如果固定長度為5,但是隻輸入了一個字元,會浪費空間,整體匹配時查詢效率高。適合於有固定長度的字串
vchar:可以節省空間,但是逐個字元匹配,查詢效率較低。所以適合在一定範圍內有變化長度的字串。
 
可變型別:欄位的最大長度約為6萬5千
text:儲存較大的文字資料。
blob:用來儲存較大的二進位制資料,例如影像等資料,不用指定長度或大小
###兩者的區別:在排序或比較上儲存的資料時,blob大小寫敏感,而text不用區分大小寫。
特俗型別:set,enmu
 
(3)日期和時間型別:
date:日期 yyyy-mm--dd 如:2021-01-01;
datetime:具體時間 yyyyy-mm-dd hh:mm:ss 如:2021-01-01 12:00:00
timestamp:時間戳 yyyymmddhhmmss 如: 20210101120000
year(m): m表示顯示長度,預設為4,
 
 
三、常見的資料操作方式:
(1)CRUD:增刪改查
C:create
R:retrieve --獲取/查詢
U:update
D:delete
(2)按照功能分類:
新建資料庫——新建表——插入資料/更新資料/刪除資料
下面的幾類SQL語句就是幫組我們完成上面個的流程
DDL:(data definition languate:資料定語言)
建立庫
建立表
修改表結構
DML:(data Manipulation languate:資料操縱言)
DQL:(data Query languate:資料查詢言)
DCL:(data Controll languate:資料控制言)
 
四、SQL語句操作
1.SQL通用語法:
(1)SQL可以單行或者多行書寫,以分號結尾(Sqlyog中可以不用寫分號);
(2)可以使用空格和縮排來增加語句的可讀性
(3)MySQL中不區分大小寫,一般是關鍵字大寫,資料庫名、表名、列名小寫。有程式碼美化功能
2.註釋方式
(1)單行註釋:
--註釋內容
或者: #註釋內容 (#為MySQL資料庫中特有的單行註釋方式)
(2)多行註釋:
/*
註釋內容
*/
 
3.對資料庫的常見操作
(1)建立資料庫
create database 資料庫名稱;
create database 資料庫名稱 character set utf8; (大寫的字元雖然執行稍微快一點,但小寫清晰。)
 
(2)切換資料庫:
use 資料庫名稱;
 
(3)檢視當前所使用的資料庫
select database();
 
檢視mysql中所有的資料庫
show databases;
 
檢視資料庫定義資訊(建立時的資訊)
show create database 資料庫名稱;
 
(4)刪除資料庫和表
drop database 資料庫名稱;
 
(5)修改資料庫
alter databse 資料庫名稱 character set utf8;
 
 
4.對錶的常見操作
一個資料庫中可以有多個表,表中又有欄位,在建表的時候需要定義好欄位(指定欄位屬性——欄位型別+欄位長度)
 
(1)建立表:
create table 表名(
欄位名稱1 欄位型別(長度),
欄位名稱1 欄位型別(長度) 注意最後一列不要加逗號
);
 
快速建立一個類似表(只複製表結構:欄位,結構一樣)
cteate table 新表名 like 舊錶名;
 
(2)刪除表
drop table 表名稱;
drop table if exists 表名稱;
 
(3)檢視錶結構
desc 表名稱;
 
(4)修改表:
修改表名:
rename table 舊錶名 to 新表名
新增欄位:
alter table 表名 add 欄位名稱 欄位型別(長度)
修改欄位型別或長度
alter table 表名 modify 欄位名稱 欄位型別(長度)
修改欄位名稱及型別
alter table 表名 change 舊欄位名稱 新欄位名稱 新欄位型別(長度)
刪除欄位
alter table 表名 drop 欄位名稱;
 
5.DML進行資料的增刪改操作
(1)插入資料
insert into 表名(欄位名1,欄位名2...) values(欄位值1,欄位值2...);
<1>插入部分欄位需要加欄位名,且值得部分按照欄位名得順序(對應);
<2>插入全部欄位時,可以不用寫欄位名
 
(2)修改資料:
update 表名 set 欄位1(列)=‘修改後的資料’ where 欄位二(定位到具體行)=‘’
update 表名 set 欄位1(列)=‘修改後的資料’ (將這一列全部進行修改)
 
(3)刪除資料
delete from 表名 (刪除整個表格,效率較低)
delete from 表名 where 欄位名 =(<,>) 條件
truncate table 表名 當一個表中條數較多,又要做刪除動作時delete會比較慢,可以選擇這個方法。
 
6.DQL查詢語句
select *(表示所有欄位) from 表名;
select 欄位名 from 表名;
select 欄位名1 as 指定別名1,欄位名2 as 指定別名2 from 表名;(as可以省略)
 
去重操作
select distinct 欄位名 from 表名
 
select 欄位名*2 from 表名 (對欄位直接進行操作)
 
條件查詢
select 欄位名 from 表名 where 條件表示式
先取出表中的每條資料,滿足條件的返回,不滿足的就過濾掉。
7.運算子:
(1)邏輯運算子:
and: 同時成立
or: 成立一個即可
not: 不成立
 
(2)萬用字元:
%:代表所有字元
-:代表一個字元
select * from mytable where ename like '%張%';
select * from mytable where ename like '-張%'; 表示第二個字為張的
 
(3)比較運算子:
大於、小於、等於、大於等於等。其中不等於為:!= 或則可以寫<>
beteween A and B :在A和B之間
in(集合):只要判定在裡面就會顯示
is null: 查詢某一列為null
like '%張%':模糊查詢
例如:
where age>=18;
where age between 18 and 30;
where name in('張三','李四')
where name like '%王%' name中有王這個字
where name like '王%' name中有王字開頭
where name like '%王' name中有王字結尾
where name is nul;
where name is not nul; 不是空值
例如:
select * from mytable m where m.age>=18;
 

相關文章