資料庫基礎2

2021-10-23 13:29:24 字數 3993 閱讀 2202

資料型別:保證資料的準確性和標準性。

類 型別 說明

整數 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系統命令行...