資料庫基礎(Mysql)

2020-10-12 11:00:31

一、資料庫介紹

1 什麼是資料庫

資料庫(Database)就是按照資料結構來組織,儲存和管理資料的倉庫。專業的資料庫是專門對資料進行建立,存取,管理,搜尋等操作的軟體,比起我們自己用檔案讀寫的方式對資料進行管理更加的方便,快速,安全。

2 作用

對資料進行持久化的儲存。方便資料的儲存和查詢,速度快,安全,方便。可以處理並行存取。更加安全的許可權管理存取機制。

3 常見的資料庫

資料庫分為兩大類,一類是 關係型資料庫,另一類叫 非關係型資料庫。關係型資料庫: MySQL,Oracle,PostgreSQL,SQLserver 等等。 非關係型資料庫:Redis記憶體資料庫,MongoDB檔案資料庫等等

二、Mysql的基本命令

1.mysql -u root -p;

此為資料庫登陸命令。-u後面輸入 使用者名稱,-p後面輸入password,預設最高許可權的使用者名稱為root,密碼為空。

2.show databases;

登入進入資料庫後可用此命令 檢視當前mysql中所有的庫。

3.use 庫名;

進入所選擇的庫 進行操作。

4.show tables;

進入所選擇的庫後 用此命令 可檢視該庫中所有的表。

5.select 欄位 from 表名

此命令為檢視表中的資料。

6.create database 庫名 default charset=utf8mb4;

建立庫命令,其中utf8mb4為完整的utf8字元集,若無mb4則為閹割版。

7.create table 表名( 欄位名 型別 欄位約束, 欄位名 型別 欄位約束, 欄位名 型別 欄位約束, )engine=innodb default charset=utf8mb4;

建立表命令。

三 ,資料操作 增刪改查

插入
insert into 表名(欄位1,欄位2,欄位3) values(值1,值2,值3);
insert into 表名(欄位1,欄位2,欄位3) values(a值1,a值2,a值3),(b值1,b值2,b值3);
查詢
select * from 表名; select 欄位1,欄位2,欄位3 from 表名; select * from 表名 where 欄位=某個值;
修改
update 表名 set 欄位=某個值 where 條件;
update 表名 set 欄位1=值1,欄位2=值2 where 條件; update 表名 set 欄位=欄位+值 where 條件;
刪除
delete from 表名 where 欄位=某個值;

四 sql語句中的快捷鍵

\G 格式化輸出(文字式,豎立顯示)
\s 檢視伺服器端資訊
\c 結束命令輸入操作
\q 退出當前sql命令列模式
\h 檢視幫助

五 Mysql的資料型別

資料型別是定義列中可以儲存什麼型別的資料以及該資料實際是怎樣儲存的基本規則。資料型別限制儲存在資料列列中的資料。例如,數值資料型別列只能接受數值型別的資料。在設計表時,應該特別注意所用的資料型別,使用錯誤的資料型別可能會嚴重影響應用程式的功能與效能。常用資料型別:整形,浮點型,字串,日期等

1.字串資料型別

最常用的資料型別是串資料型別。它們儲存串,如名字、地址、電 話號碼、郵政編碼等。
不管使用何種形式的串資料型別,串值都必須括在引號內
有兩種基本的串型別,分別為定長串和變長串
定長串:char 1. 接受長度固定的字串,其長度是在建立表時指定的。 定長列不允許儲存多於指定長度字元的資料。 2. 指定長度後,就會分配固定的儲存空間用於存放資料

變長串 varchar
儲存可變長度的字串 varchar(7) 如果實際插入4個字元, 那麼它只佔4個字元位置,當然插入的資料長度不能超過7 個字元。
**注意 :
Text 變長文字型別儲存
char(7) 不管實際插入多少字元,它都會佔用7個字元位置
既然變長資料型別這樣靈活,為什麼還要使用定長資料型別?

回答:因為效能,MySQL處理定長列遠比處理變長列快得多**
在這裡插入圖片描述

2.數值型別

數值資料型別儲存數值。MySQL支援多種數值資料型別,每種儲存的數值具有不同的取值範圍。支援的取值範圍越 大,所需儲存空間越多
與字串不一樣,數值不應該括在引號內
在這裡插入圖片描述

3.日期型別

MySQL使用專門的資料型別來儲存日期和時間值
在這裡插入圖片描述

六,表的欄位約束

unsigned 無符號(給數值型別使用,表示為正數,不寫可以表示正負數都可以) 欄位型別後面加括號限制寬度 char(5). varchar(7) 在字元型別後面加限制 表示 字串的長度 int(4) 沒有意義,預設無符號的int為int(11),有符號的int(10) int(4) unsigned zerofill只有當給int型別設定有前導零時,設定int的寬度才有意義。 not null 不能為空,在運算元據庫時如果輸入該欄位的資料為NULL ,就會報錯 default 設定預設值 primary key 主鍵不能為空,且唯一.一般和自動遞增一起配合使用。 auto_increment 定義列為自增屬性,一般用於主鍵,數值會自動加1 unique 唯一索引(資料不能重複:使用者名稱)可以增加查詢速度,但是會降低插入和更新速度

七,DQL-MySQL資料查詢SQL

select 欄位列表|* from 表名
[where 搜尋條件] [group by 分組欄位 [having 分組條件]] [order by 排序欄位 排序規則] [limit 分頁引數

1.條件查詢

可以在where子句中指定任何條件 可以使用 and 或者 or 指定一個或多個條件 where條件也可以運用在update和delete語句的後面 where子句類似程式語言中if條件,根據mysql表中的欄位值來進行資料的過濾

2.like模糊查詢

我們可以在where條件中使用=,<,> 等符合進行條件的過濾,但是當想查詢某個欄位是否包含時如何過濾?
可以使用like語句進行某個欄位的模糊搜尋, 例如: 查詢 name欄位中包含五的資料
在這裡插入圖片描述

注意:where子句中的like在使用%或者_進行模糊搜尋時,效率不高,使用時注意:
儘可能的不去使用%或者_ 如果需要使用,也儘可能不要把萬用字元放在開頭處

總結

在這裡插入圖片描述
理解關鍵字 後更好記憶。