mysql设计功能设置表_MySQL数据表的设计
數據表(Table)
數據表是數據庫的基本組成元素,以記錄(行)和字段(列)組成的二位結構用于儲存數據。數據庫由表結構和表內容組成,先建立表結構,然后才能輸入數據。數據表結構設計主要包括字段名稱,字段類型和字段屬性的設置。在關系數據庫中,為了確保數據的一致性和完整性,在創建表時除了必須指定字段名稱、字段類型和字段屬性外,還需要使用約束(constraint)、索引(index)、主鍵(primary key)和外鍵(foreign key)等功能屬性。
數據值和列類型
對MuSQL中數據值的分類,有數值型、字符型、日期型和控制等,這和一般的編程語言的分類差不多。另外,MySQL數據庫的表是一個二維表,由一個或多個數據列構成。每個數據列都有它的特定類型,該類型決定了MySQL如何看待該列數據,我們可以把整形數值存放在字符型的列中,MySQL則會把它當成字符串處理。MySQL中的列類型有三種:數值型、字符串類和日期/時間類。從大類來看列類型和數值類型一樣,都是只有三種,但每一種列類型都還可細分。下面對各種列類型進行詳細介紹。
數值類的數據列類型
| 數據列類型 | 存儲空間 | 說明 | 取值范圍 |
|: ----------------- |:-------------|: --------------------|----------------------|
| TINTINT | 1字節 | 非常小的整數 | 帶符號值: -128 ~ 127
無符號值:0 ~ 256|
|SMALLINT | 2字節 | 較小的整數 |帶符號值:-32 768 ~ 32768
無符號值:0 ~ 65535 |
| MEDIUMINT| 3字節 | 中等大小的整數 | 帶符號值:-8 388 608 ~ 8 388 607
無符號值:0 ~ 16 777 215|
| INT| 4字節 | 標準整數 | 帶符號值:-2 147 483 648 ~ 2 147 483 647
無符號值:0 ~ 4 294 967 295|
| BIGINT| 8字節 | 大整數 | 帶符號值:-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807
無符號值:0 ~ 18 446 744 073 709 551 615|
| FLOAT| 4 或 8字節 | 單精度浮點數 | 最小非零值:±1.175494351E-38
最大非零值:±3.402823466E+38|
| DOUBLE| 8字節 | 雙精度浮點數 | 最小非零值:±2.2250738585072014E-308
最大非零值:±1.7976931348623157E+308|
| DECIMAL| 自定義 | 以字符串形式表示的浮點數 | 取決于儲存單元字節數|
為了節省存儲空間和提高數據庫處理效率,我們應根據應用數據的取值范圍來選擇一個最合適的數據列類型。如果把一個超出數據列取值范圍的數存入該列,則MySQL就會截斷該值,如:我們把99999存入 SMALLINT(3)數據列里,因為SAMLLINT(3)的取值范圍是-32 768 ~ 32768,所以就會截斷成32767存儲。顯示寬度3 不會影響數值的存儲,只影響顯示。
字符串類數據列類型
字符串可以用老表示任何一種值,所以它是最基本的類型之一。
| 數據列類型 | 存儲空間 | 說明 | 最大長度 |
|: ----------------------- |:-----------------|: --------------------|----------------------|
| CHAR[(M)] | M字節 | 定長字符串 | M字節 |
| VARCHAR[(M)] | L + 1字節 | 可變字符串 | M字節 |
| TINYBLOD,TINYTEXT | L + 1字節 | 非常小的BLOB(二進制大對象) 和文本串 | 2^6 - 1字節 |
| BLOB,TEXT | L + 2字節 | 小BLOB和文本串 | 2^16 - 1字節 |
| MEDIUMBLOB,DEDIUMTEXT | L + 3字節 | 中等BLOB和文本串 | 2^24 - 1字節 |
| LONGBLOB,LONGTEXT | L + 4字節 | 大BLOB和文本串 | 2^32 - 1字節 |
| ENUM('value1','value2',....) | 1或2 字節 | 枚舉:可賦予某個枚舉成員 | 65535個成員 |
| SET('value1','value2',....) | 1,2,3,4,8, 字節 |集合:可賦予某個集合成員 | 64個成員 |
字符串類數據列類型
| 數據列類型 | 存儲空間 | 說明 | 最大長度 |
|: ----------------------- |:-----------------|: --------------------|----------------------|
| DATE | 3字節 | "YYYY-MM-DD"格式表示的日期值 | 1000-01-01 ~ 9999-12-31 |
| TIME | 3字節 | "hh:mm:ss"格式表示的時間值 | 1000-01-01 00:00:00 到 9999-12-31 23:59:59 |
| TIMESTAMP | 4字節 | "YYYYMMDDhhmmss"格式表示的時間戳 | 19700101000000 ~ 2037年的某個時刻 |
| YEAR | 1字節 | "YYYY"格式的年份值 | 1901 ~ 2155 |
NULL值
NULL 值可能使你感到奇怪,直到你習慣它。概念上,NULL意味著沒有值或未知值,且它被看成與眾不同的值。可以將NULL值插入到數據表中并從表中檢索它們,也可以測試某個值是否為NULL,但不能對NULL值金像算術運算,如果對NULL值進行算數運算,其結果仍舊是NULL。在MySQL中,0或NULL都意味著假而其他意味著真。布爾運算的默認真值是1.
數據字段屬性
1.UNSIGNED
該屬性只能修飾數值類型,不允許數列出現負數。
2.ZEROFILL
該屬性也只能用于設置數值類型,在數值類型前自動用0補足位數。
3.AUTO_INCREMENT
該屬性用于設置字段的自動增量屬性,當數值類型的字段設置為自增量屬性時,每增加一條新的記錄,該字段的值就自動加1,而且此字段的值不允許重復
4.NULL和NOT NULL
默認為NULL,即插入值時沒有在此字段插入值,默認為NULL值,如果指定了NOT NULL , 則必須在插入值在此字段填入值。
5.DEFAULT
可以通過此屬性來指定一個默認值,如果沒有在此列添加值,那么默認添加此值。例如,在用戶表user中可以將性別字段默認設置成“男”。
數據表對象管理
創建表
創建數據表的主要是定義表結構,包括數據表的名稱,字段名,字段類型,約束和索引等。其基本語法如下
CREATE TABLE [IF NOT EXISTS] 表名稱(
字段名1 列類型 [屬性] [索引]
字段名2 列類型 [屬性] [索引]
)[表類型] [表字符集]
修改表
修改表是指修改表的結構,在實際的應用中,當發現某個表的結構不滿足要求時,可以用ALTER TABLE 語句來修改表的結構,包括添加新的字段、刪除原有的字段、修改列的類型、屬性、及索引,甚至可以修改表的目名稱等。修改表的語法如下:
ALTER TABLE 表名 ACTION; ------------ #修改表的語法格式
ALTER TABLE 表名 ADD 字段名 [FIRST | AFTER 列名] #為指定的表添加新列
mysql> ALTER TABLE users ADD name VARCHAR(30) NOT NULL FIRST;
mysql> ALTER TABLE users ADD height DOUBLE NOT NULL AFTER userpass;
為指定的數據表為了更改原有字段的類型,可使用CHANGE或MODIFY 子句。如果原列的名字和新列的名字相同,則change和Modify的作用相同。語法格式如下
>```
ALTER TABLE 表名CHANGE(MODIFY) 列表 #為指定的表修改列類型
mysql> ALTER TABLE users CHANGE telno phone INT UNSIGNED DEFAULT '0';
修改表名
ALTER TABLE 舊表名 RENAME AS 新表名 #為指定的數據表重新命名
刪除表
DROP TABLE 舊表名 RENAME AS 新表名 #刪除不再使用的數據表
總結
以上是生活随笔為你收集整理的mysql设计功能设置表_MySQL数据表的设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果xs max是双卡双待吗
- 下一篇: 苹果xr值得入手吗