MySQL 資料庫學習筆記 2

2021-07-10 23:00:59 字數 3381 閱讀 5743

show variables;

show variables like 『character_set%』; 顯示所有和字符集相關的變數

show create database db_name; 顯示資料庫建立的字符集

windows 中 的my.ini 和 linux 中的 my.conf 中 設定了 mysql server 端的編碼格式

校對規則是指, 在當前編碼格式下, 字元之間的比較順序。

1. ci : 不區分大小寫

2. cs: 區分大小寫

3. bin: 二進位制比較, 預設區分

可以使用 show collation; 來檢視字符集

並且字符集一般都是 按照 :字符集_地區名_比較規則構成的。

show collation like 『utf8%』; 顯示和utf 相關的字符集

在建立**的時候, 可以同時制定相應**的字符集和相應的校對規則:

在我們建立完乙個資料庫後, 硬碟上會建立相應的db.opt 檔案, 裡面有 資料庫的基本資訊, 其中就包含資料庫所使用的字符集和 校對規則。

另外, 校對規則一般對資料的儲存沒什麼影響, 但是對涉及到 排序操作 order by 的時候, 會有影響。

列型別主要可以分為 3 類:

1. 數值型別

2. 日期時間型別

3. 字串型別

tinyint , smallint, mediumint, int, bigint, 分別 佔據 1, 2, 3, 4, 8 個位元組

和 c/c++ 一樣, 整數型別是區分有符號和 無符號的, 用unsigned 區分。

type(m) , 這裡 m 一般用來表示顯示的最小寬度

使用 前導零填充 zerofill

2.1.2.1 浮點數

容易造成精度丟失的問題。

float 一般 6 ~ 7 有效位數, 4 位元組

double 一般 16 ~ 17 有效位數, 8位元組

type(m, n) 可以用來控制表示範圍, 其中, m 表示所有數字的位數, 不包含小數點和正負號。 而 n 表示所允許的小數部分的位數, 在確定了 m, n 之後, m-n 就確定了 整數部分的最大的位數。

2.1.2.2 定點數

decimal(m, n), m 表示所有有效數字的位數, n 為 小數部分的位數

預設情況下, m : 10, n : 0

他能保證精度不會丟失, 支援zerofill

需要注意的是, 他是乙個變長的型別。

datetime 年月日時分秒, 8位元組, 分割符可以隨意

timestamp 時間戳型別, 4 位元組, 按整數型別儲存, 但是按照datetime 型別表示

date 年月日 3位元組

time 時分秒 3位元組 既可以表示1天中的某個時刻, 也可以表示35 天以內的時間間隔

year 年 1位元組 1901 ~ 2155

ps: 檢索的時候, *** + 0 表示用他實際儲存的型別表示

char(m) 固定長度,m 表示允許的字串的長度(字元數), 物理上,最大位元組數 255

varchar(m) 變長, 當字元數大於 255 時候, 需要2 個額外位元組儲存字串長度, 小於 255 時候, 只要 1 個額外位元組。

欄位的最大長度限制, 和 型別本身限制 以及 row 長度限制 有關聯。

真實 varchar 的長度討論,

在乙個表中, row 一般不超過 65535, 而 varchar 超過255時候, varchar 自身佔據 2 個位元組, 另外如果表中有允許null 屬性的字段, 需要額外 1 個位元組進行記錄 null 的資訊, 此時對結構:

create

table tbl_name(

varchar(65532)

) character

set latin1;

這是成立的, 並且varchar 最大最大也就只能分配這麼多給資料了。

5. text, tinytext,mediumtext, longtext, 它相當於指定了最大長度的varchar。

6. enum 列舉型別, 內部是整形

7. set 集合型別, 8位元組, 最多64 個狀態, 每個狀態使用乙個bit 表示

8. binary, varbinary, blob 二進位制資料 位元組表示的。

not null

default

primary key 主鍵, 通常主鍵不應該與實體有聯絡, 他是代表記錄唯一的索引。

2 中定義方法:

auto_increment, 主動增長, 要求整形資料, 帶有索引。 在插入資料的時候, 可以插入null 或者 不插入該項資料。

另外, 我們可以設定表的預設自動增長的起始值, 預設為 1, 但是如果設定的值, 比我們當前的最大值 小的話, 是無效的。

外來鍵約束

資料庫中的相應約束:

唯一性主鍵外來鍵

檢查約束

空值預設值

unique

primary key

foreign key

check

not null

default

通常用在資料庫優化的過程中, 將乙個較大的表拆成兩個部分, 乙個部分是常用資訊實體, 另乙個部分是詳細但不常用的資訊實體(垂直分割)

在資料庫中, 通常採用 在兩個實體表內存放相同主鍵欄位來實現這種關聯

通常採用在較多物件那一側新增乙個欄位的方式, 用來儲存另乙個實體的標識資訊(主鍵)

ex. 乙個班級對應多個學生

通常採用乙個中間表, 記錄實體之間的對應關係。

本質上, 就是將 m : n 實體關聯拆解成 兩個 1: n 實體關聯。

ex. 班級 和 講師之間的關係

MySql資料庫學習筆記 2

語法 delete from 表名 where condition delete from grade 用於完全清空表資料,但表結構 索引 約束不變 語法 truncate table table name mysql select autocommit autocommit 1 mysql set...

資料庫學習筆記2

1.檢視 概念 檢視時從乙個或幾個基本表 或檢視 匯出的表。它與基本表不同時乙個虛表,資料庫中只存放檢視的定義,而不存放檢視對應的資料,這些資料仍然存放在原來的基本表中。所以一旦基本表發生變化,從檢視中查詢的資料也隨之改變。語句 create view is student as select sn...

MySQL資料庫學習筆記

一 資料庫介紹 1 為什麼需要資料庫 記憶體掉電後資料丟失,計算機的資源有限,因此需要把程式中用的資料儲存下來以便於關機後還能繼續使用 資料持久化 而儲存資料最簡單的方法就是把資料以檔案形式寫入到磁碟中。隨著程式的功能越來越複雜,需要操作的數量也就是越來越來大,管理資料就成了很大的問題,因為讀寫檔案...