《SQL必知必會》 筆記(1 5)

2021-07-09 11:16:35 字數 1330 閱讀 4314

# 1.1.3 資料型別;

varchar和char的區別

表中的每個列都有相應的資料型別,需要注意的是在不同的資料庫中相同型別的命名也是不同的,這個需要檢視對應資料庫的文件說明;

就字元型別來說,mysql有char和varchar,而oracle除了這兩種還有一種varchar2型別,同時它們對應的格式要求也是不同的,在mysql中char和varchar列的最大長度為8000,而oracle中的最大長度則為4000(byte);

由於現在主要使用的是mysql,看到這裡的時候順道在網上查了一下varchar和char的區別;

官方文件裡的這個**大致能說明問題:

文件連線:

varchar:

主要特徵是資料儲存長度是可變的,如上表所示,當我定義乙個長度為4的varchar列時,如果存放的值為ab,則存放長度為3個字元(其中有乙個用於記錄資料長度);

就是說它申請儲存空間的時候相對於char很佔優勢,可以避免不必要的資源消耗;但相對的,在處理速度上和char對比起來則要遜色一些;所以當對儲存資源的要求比較嚴格的時候,可以使用varchar;

char

其長度是固定的,當存放的資料長度不足指定長度時,會在右側採用空格佔位;相對於varchar來說,在儲存很短的如編號之類的資訊時,可以使用char,因為varchar還需要乙個位元組來記錄資料長度;

同時它的處理速度要比varchar快,因為varchar每次在處理時要對長度進行一次計算,而相比之下char則沒有這樣的問題,所以當對資料的處理速度有要求的時候可以採用char;

# 1.1.5 主鍵

複數的主鍵

理論上主鍵為表中記錄值非空且唯一的某一列,但也可以指定多列作為主鍵,這種情況下主鍵對應的規則應用到所有指定了主鍵的列中,且主鍵列的資料組合需要保持唯一性;

mysql中指定複數主鍵的方法;

primary key (`userid`, `username`)

需要注意的是,在建表時這樣指定複數的主鍵是不行的,雖然語法沒有錯誤,但實際操作會發現並不能滿足上面主鍵列的組合唯一這個約束;

正確的方法是使用unique,

unique(`userid`, `username`)

# 4.2.0 where子句操作

where的操作符;

操作符的使用需要根據具體的dbms的配置來確定,最好的辦法是檢視官方文件,例如書中提到的!> 和!< 這樣的使用方式在mysql中就無法使用;

《sql必知必會》筆記

資料庫 儲存有組織的資料的容器 通常是乙個檔案或一組檔案 注意誤用混淆 資料庫軟體被稱為dbms,資料庫是通過dbms建立和操縱的容器 模式 關於資料庫和表的布局及特性的資訊。主鍵 一列或一組列,其值能夠唯一標識表中的每一行。多條sql語句必須以 分隔。sql語句不區分大小寫,select和sele...

SQL必知必會

資料庫 儲存有組織的資料的容器。資料庫管理系統 dbms 資料庫軟體,資料庫是通過dbms建立和操縱的容器。表 某種特定資料型別的結構化清單。資料庫中的每個表都有自己的名字,且唯一。不同的資料庫可以使用相同的表名。表的特性 模式 資料在表中如何儲存,儲存什麼樣的資料,資料如何分解。模式可以用來描述資...

sql必知必會筆記2

1 在很多dbms中,as關鍵字是可選的,不過最好使用它,這被視為一條最佳實踐。2 正如所見,sql的萬用字元很有用。但這種功能是有代價的,即萬用字元搜尋一般比前面討論的其他搜尋要耗費更長的處理時間。這裡給出一些使用萬用字元時要記住的技巧。不要過度使用萬用字元。如果其他操作符能達到相同的目的,應該使...