資料型別:保證資料的準確性和標準性。
類 型別 說明
整數 tinyint 0~255
整數 smallint -215~215-1
整數 mediumint 中型整數
整數 int 常規-231~231-1
整數 bigint -263~263-1
浮點數 float 單精度浮點數(4位元組)
浮點數 double 雙精度浮點數(8位元組)
浮點數 decimal 精確數值
bit bit 位字段值
字元型別
類 型別 說明
文字 char 固定255個字串,最多255個字元
文字 varchar 可變長度字串,最多65535個字元
文字 tinytext 可變長度字串,最多255個字元
文字 text 可變長度,最多65535字元
文字 mediumtext 可變長度,最多16777215字元
文字 longtext 可變長度,最多4294967295字元
整數 enum 由一組合法固定值組成的集
整數 text(text) 由一組固定的值組成的集
char(11) :可用11個字元,佔11個位元組記憶體
varchar(11):可用11個位元組,根據使用位元組分配記憶體
enum(『bj』,『tj』,『sh』):列舉,只可使用bj,tj或sh。
時間型別
型別 格式 示例
date yyyy-mm-dd 2000-20-22
time hh:mm:ss[.uuuuu] 12:25:02.123456
datetlme/
timestamp yytt-mm-dd hh:mm:ss[.uuuuu] 2000-20-22 12:25:02.123456
year yyyy 2003
二進位制型別
類 型別 說明
文字 char(char) 固定長度字串,最多255字元
文字 varchar(varchar) 可變長度字串,最多65535字元
文字 tinytext(tinytext) 可變長度,最多255字元
文字 text(text) 可變長度,最多6535字元
文字 nediumtext(nediumtext) 可變長度,最多16777215字元
文字 longtext(longtext) 可變長度,最多4294967295字元
整數 set(set) 由一組固定的值組成的集
列屬性約束(一般建表時新增):
primary key:主鍵約束(設定為主鍵的列,此列的值必須非空且唯一,主鍵在乙個表中只能有乙個,但是可以有多個列一起構成。)
not null:非空約束(列值不能為空,也是表設計的規範,盡可能將所有的列設定為非空。可以設定預設值為0)
unique key:唯一鍵(列值不能重複)
unsigned :無符號
針對數字列,非負數。
其他屬性:
key :索引(可以在某列上建立索引,來優化查詢,一般是根據需要後新增)
default:預設值(列中,沒有錄入值時,會自動使用default的值填充)
auto_increment:自增長【針對數字列,順序的自動填充資料(預設是從1開始,將來可以設定起始點和偏移量)】
comment: 注釋
表的屬性
儲存引擎: 簡單來說,儲存引擎就是資料的儲存結構,由實際業務決定。常用的儲存引擎只有三種:預設的innodb、myisam和memory。
字符集和排序和校對規則規則:
設定字符集就設定了預設排序規則
常用字符集:utf8、utf8mb4
一、建庫規範:
1.庫名不能有大寫字母
2.建庫要加字符集
3.庫名不能有數字開頭
4. 庫名要和業務相關
二、建表規範
1. 表名小寫
2. 不能是數字開頭
3. 注意字符集和儲存引擎
4. 表名和業務有關
5. 選擇合適的資料型別
6. 每個列都要有注釋
7. 每個列設定為非空,無法保證非空,用0來填充。
三、ddl資料庫定義語言:建立、修改、刪除資料庫和資料表,常用create、alter、drop
1、建立庫:create database/schema 庫名 [charset utf8]
2、create table *** like ***,建立新錶,約束和原表相同,只拷貝表結構,不拷貝表的資料
3、create table *** as select ***,建立新錶,沒有原表的完整約束,但拷貝原表資料
例:create database xyz charset utf8mb4 collate utf8mb4_bin;
建立表:create table 表名(列1 屬性 [資料型別、約束、其他屬性],列2 屬性,列3 屬性);
4、表中新增字段:alter table 表名 add 欄位名 資料型別、約束、其他屬性;
表中具體位置新增字段:alter table 表名 add 欄位名 [資料型別、約束、其他屬性] [after 欄位名]/【英文數字】;
5、刪除指定字段:alter table 表名 drop 欄位名;
6、修改字段資料型別屬性:alter table 表名 modify 字段 屬性;
7、刪除:drop table/database 表名/庫名;
8、清空表:truncate table 表名;
四、dml資料庫操作語言:對資料表內容進行增刪改查,常用insert、update、delete
1、新增:insert into 表名(欄位1,欄位2,欄位3…) values(『欄位1值』,『欄位2值』,『欄位3值』,…);
簡寫:insert into 表名 values(『欄位1值』,『欄位2值』,『欄位3值』,…);
插入指定字段:insert into 表名(欄位2) values(『欄位2值』);
2、修改:update 表名 set 字段=『字段值』 where 條件表示式
3、刪除:delete from 表名 【where 條件表示式】
4、偽刪除:用update來替代delete,最終保證業務中查不到(select)即可
5、檢視資料庫支援字符集:show charset;
檢視支援的排序規則:show collation;
檢視資料庫設定:show create table/database 表名/庫名
五、dql資料庫查詢語言:查詢資料表內容,常用select,也有@@
where配合比較操作符(> < >= <= <>)
1、select 欄位1,欄位2 from 表名 where 條件表示式
2、select @@*** 檢視系統引數(port,basedir,datadir,socket,server_id);
3、select 函式(); now(當前時間)、database(當前庫名)、user()、
字元拼接:select concat(『a』,』b』) ;
concat_ws(『,』);以逗號分隔查詢的結果
將相同字段合併:concat_group(字段)
4、where配合模糊查詢
select * from 表名 where 字段 like 『關鍵字』; 其中關鍵字前後可以加%代表其它任意字元
5、where配合in語句
select * from 表名 where 關鍵字 in (『字段』,』字段』);
6、where配合between and
select * from 表名 where 字段 between 數值 and 數值;
六、dcl資料庫控制語言:對許可權進行管理,常用grant、rewoke、show
1、授權:grant 許可權列表 on 資料庫名.表名 to 使用者名稱@**位址 [ identified by 『密碼』 ]
2、檢視使用者許可權:show grants for 使用者名稱@**位址
3、刪除使用者許可權:revoke 許可權列表 on 資料庫名.表名 from 使用者名稱@**位址
資料庫基礎2 正規化
第一正規化 1nf 無重複的列 所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,就可能需要定義乙個新的實體,新的實體由重複的屬性構成,新實體與原實體之間為一對多關係。在第一正規化 1n...
MySQL學習(2) 資料庫基礎
1.什麼是資料庫?通俗講就是儲存資料的容器 專業講就是高效的儲存和處理資料的介質 介質是要有硬碟和記憶體兩種 2.資料庫的分類 資料庫基於介質的不同主要分為兩種 關係型資料庫和非關係型資料庫 關係型資料庫 oracle,db2,sqlserver,mysql,access 非關係型資料庫 mongo...
Python資料庫基礎 筆記2
本部落格專欄 python資料庫基礎 的所有筆記均為.py格式檔案,複製後均可無誤執行 注意修改檔案路徑,每個人的工作區不一樣 但鑑於資料庫的特殊性,很多 需要新建相同的本地資料庫,這很耽誤時間且對學習意義不大,建議對資料庫類 以借鑑為輔,自我實踐為主。對資料庫 請在ubuntu18.04系統命令行...