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 的資訊, 此時對結構:
這是成立的, 並且varchar 最大最大也就只能分配這麼多給資料了。create
table tbl_name(
varchar(65532)
) character
set latin1;
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 為什麼需要資料庫 記憶體掉電後資料丟失,計算機的資源有限,因此需要把程式中用的資料儲存下來以便於關機後還能繼續使用 資料持久化 而儲存資料最簡單的方法就是把資料以檔案形式寫入到磁碟中。隨著程式的功能越來越複雜,需要操作的數量也就是越來越來大,管理資料就成了很大的問題,因為讀寫檔案...