日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MySQ数据表设计

發布時間:2023/12/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQ数据表设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據表概念

數據表是數據庫中的基本對象元素,以記錄(行)和字段(列)組成的二維結構用于存儲數據。數據表由表結構和表內容兩部分組成,先建立表結構,然后才能輸入數據。數據表結構設計主要包括字段名稱、字段類型和字段屬性的設置。

通常情況下,同一個數據庫中可以有多個數據表,但表名必須是唯一的,表中每一條記錄描述了一個相關信息的集合,每一個字段必須為唯一的,每個字段都需要指定數據類型。

數據列四大數據類型

數值類數據列類型

|數據類型|存儲空間|說明|取值范圍|
| ------------- |-------------| -----|
|TINYINT|1字節|非常小的整數|帶符號值:-128127、無符號值:0255|
|SMALLINT|2字節|較小的整數|帶符號值:-3276832767、無符號值:065535|
|MEDIUMINT|3字節|中等大小的整數|帶符號值:-83886088388607、無符號值:016777215|
|INT |4字節 |標準整數| 帶符號值:-21474836482147483647、無符號值:04294967295|
|BIGINT| 8字節 |大整數 |帶符號值:-263263-1、無符號值:0264-1|
|FLOAT| 4或8字節| 單精度浮點數| 最小非零值:+- 1.175494351E-38、最大非零值:+- 3.402823466E+38|
|DOUBLE |8字節| 雙精度浮點數 |最小非零值:+- 2.225073E-308、最大非零值:+- 1.797693E+308|
|DECIMAL| 自定義| 以字符串形式表示的浮點數| 取決于存儲單元字節數|

整型注意事項:
  • INT(3)、SMALLINT(3)等整型后面的數字不會影響數值的存儲范圍,只會影響顯示

  • 整型后面的數字只有配合零填充的時候才有實際意義。
    整型后面的數字可以省略

浮點型注意事項:

浮點型后面的數字會將存入的數字四舍五入,例如:把一個1.234存入FLOAT(6,1)數據列中,結果是1.2,6代表顯示長度,1代表小數位長度,會四舍五入。

字符串類數據列類型

|數據類型|存儲空間|說明|取值范圍|
| ------------- |-------------| -----|
|CHAR[(M)] |M字節| 定長字符串 |M字節
|VARCHAR[(M)] |L+1字節 |可變字符串| M字節
|TINYBLOB,TINYTEXT |L+1字節 |非常小的BLOB(二進制大對象)和文本串 |28-1字節|
|BLOB,TEXT |L+2字節 |小BLOB和文本串 |216-1字節|
|MEDIUMBLOB,MEDIUMTEXT |L+3字節| 中等的BLOB和文本串| 224-1字節|
|LONGBLOB,LONGTEXT |L+4字節 |大BLOB和文本串| 232-1字節|
|ENUM(‘value1’,’value2’…) |1或2字節| 枚舉:可賦予某個枚舉成員 |65535個成員|
|SET(‘value1’,‘value2’…) |1,2,3,4或8字節| 集合:可賦予多個集合成員 |64個成員|

字符串類型注意事項:
  • CHAR和VARCHAR類型的長度范圍都在0~255之間
    在使用CHAR和VARCHAR類型時,當我們傳入的實際的值的長度大于指定的長度,字符串會被截取至指定長度
    在使用CHAR類型時,如果我們傳入的值的長度小于指定長度,實際長度會使用空格補至指定長度

  • 在使用VARCHAR類型時,如果我們傳入的值的長度小于指定長度,實際長度即為傳入字符串的長度,不會使用空格填補

  • CHAR要比VARCHAR效率更高,當占用空間較大

  • BLOB和TEXT類型是可以存放任意大數據的數據類型
    BLOB區分大小寫,TEXT不區分大小寫

  • ENUM和SET類型是特殊的的串類型,其列值必須從固定的串集中選擇

  • ENUM只能選擇其中一個值,SET可以選擇多個值

日期和時間類數據列類型

|數據類型|存儲空間|說明|取值范圍|
| ------------- |-------------| -----|
|DATE |3 字節| “YYYY-MM-DD”格式表示的日期值 |1000-01-01~9999-12-31|
|TIME |3 字節| “hh:mm:ss”格式表示的時間值 |-838:59:59-838:59:59|
|DATETIME| 8 字節 |“YYYY-MM-DD hh:mm:ss”格式 |1000-01-01 00:00:00~9999-12-31|
|TIMESTAMP| 4 字節| “YYYYMMDDhhmmss”格式表示的時間戳 |19700101000000-2037年的某個時刻|
|YEAR |1 字節 |“YYYY”格式的年份值 |1901~2155|

日期類型注意事項:
  • 存儲日期時,我們可以使用整型來進行存儲時間戳,這樣做便于我們進行日期的計算


NULL值

NULL值注意事項:
  • NULL意味著“沒有值”或“未知值”

  • 可以測試某個值是否為NULL

  • 不能對NULL值進行算術計算

  • 對NULL值進行算術運算,其結果還是NULL

  • 0或NULL都意味著假,其余值都意味著真


數據字段屬性

UNSIGNED

只能用于設置數值類型,不允許出現負數
最大存儲長度會增加一倍

ZEROFILL

只能用于設置數值類型,在數值之前會自動用0補齊不足的位數

AUTO_INCREMENT

用于設置字段的自動增長屬性,每增加一條記錄,該字段的值會自動加1

NULL和NOT NULL

默認為NULL,即插入值時沒有在此字段插入值,默認為NULL值,如果指定了NOT NULL,則必須在插入值時在此字段填入值

DEFAULT

可以通過此屬性來指定一個默認值,如果沒有在此列添加值,那么默認添加此值

創建索引

在MySQL中,主要有四類索引:

  • 主鍵索引(PRIMARY KEY)

主鍵索引是關系數據庫中最常見的索引類型,主要作用是確定數據表里一條特定的數據記錄的位置。我們可以在字段后添加PRIMARY KEY來對字段設置為主鍵索引。
注意:
1.最好為每張表指定一個主鍵,但不是必須指定。
2.一個表只能指定一個主鍵,而且主鍵的值不能為空
3.主鍵可以有多個候選索引(例如NOT NULL,AUTO_INCREMENT)

  • 唯一索引(UNIQUE)

唯一索引與主鍵索引一樣,都可以防止創建重復的值。但是,不同之處在于,每個數據表中只能有一個主鍵索引,但可以有多個唯一索引。我們使用關鍵字UNIQUE對字段定義為唯一索引。

  • 常規索引(INDEX)

常規索引技術是關系數據查詢中最重要的技術,如果要提升數據庫的性能,索引優化是首先應該考慮的,因為它能使我們的數據庫得到最大性能方面的提升。常規索引也存在缺點:
1.多占用磁盤空間
2.會減慢插入,刪除和修改操作
3.需要按照索引列上排序格式執行
創建索引我們可以使用INDEX和KEY關鍵字隨表一同創建。

  • 全文索引(FULLTEXT)

全文索引在MySQL中是一個FULLTEXT類型索引,但FULLTEXT索引只能用于MyISAM表,并且只可以在CHAR、VARCHAR或TEXT類型的列上創建,也允許創建在一個或多個數據列上。
但是FULLTEXT是不支持中文全文索引的,所以我們將來會使用效率更高的全文索引引擎Sphinx。

數據表的存儲類型及存儲位置

MySQL支持MyISAM、InnoDB、HEAP、BOB、ARCHIVE、CSV等多種數據表類型,在創建一個新MySQL數據表時,可以為它設置一個類型。

MyISAM和InnoDB兩種表類型最為重要:

1.MyISAM數據表類型的特點是成熟、穩定和易于管理。
2.MyISAM表類型會產生碎片空間,要經常使用OPTIMIZE TABLE命令去清理表空間
3.MyISAM不支持事務處理,InnoDB支持
4.MyISAM不支持外鍵,InnoDB支持
5.MyISAM表類型的數據表效率更高
6.MyISAM表類型的數據表會產生三個文件,InnoDB表類型表默認只會產生一個文件。

字符集

創建表的時候,如果沒有明確地指定任何字符集,則新創建數據表的字符集將由MySQL配置文件里charcter-set-server選項的設置決定。

在創建數據表時如果需要指定默認的字符集與之相同,但MySQL客戶程序在與服務器通信時使用的字符集,我們需要使用default-character-set選項或通過SQL命令SET NAMES utf8來指定一個字符集為utf8.

創建表

創建數據表之前,我們應該注意:

1.創建數據庫(如已存在則不需要創建)
2.選擇數據庫
3.在該數據庫當中創建數據表

創建數據表需要注意:

1.指定數據表的名稱(數據表不能重名)
2.指定該表的字段名稱、字段數據類型、字段索引
3.指定表類型和表默認字符集(可省略)

建表實例

中文名字段名數據類型屬性索引
用戶編號idINTUNSIGNED NOT NULL AUTO_INCREMENT主鍵
用戶名稱usernameVARCHAR(50)NOT NULL普通
口令userpassVARCHAR(50)NOT NULL普通
聯系電話telnoVARCHAR(20)NOT NULL唯一
性別sexENUM(‘男’,’女’)NOT NULL DEFAULT ‘男’?
出生日期birthdayDATENOT NULL DEFAULT ‘0000-00-00’?
SQL:語句
CREATE TABLE IF NOT EXISTS `users`(`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,`username` VARCHAR(50) NOT NULL,`userpass` VARCHAR(50) NOT NULL,`telno` VARCHAR(20) NOT NULL UNIQUE,`sex` ENUM('nan','nv') NOT NULL DEFAULT 'nan',`birthday` DATE NOT NULL DEFAULT '0000-00-00',PRIMARY KEY(`id`),INDEX username_index(`username`),INDEX userpass_index(`userpass`) )ENGINE=MyISAM DEFAULT CHARSET=utf8 collate utf8_general_ci ;?

注意事項:

1.表的字段之間要使用逗號隔開。
2.建表的最后一句一定不能有逗號。
3.表名稱和字段名稱盡量不要使用MySQL系統的關鍵字
4.如果一定要使用關鍵字,我們可以使用反引號將表名稱和字段名稱包含起來來進行過濾屏蔽。
5.使用反引號會使建表效率增高。
6.數據表名稱和字段名稱不能重名
7.AUTO_INCREMENT屬性必須依附于主鍵索引或唯一索引

修改數據表

修改表的語法:

ALTER TABLE 表名 ACTION;

我們可以對表進行修改字段,添加字段,刪除字段,添加索引,刪除索引,更改表名稱,更改字段名稱,更改auto_increment屬性的初始值等。

修改字段:

我們使用change或者是modify關鍵字

ALTER TABLE `uses` CHANGE `username` `uname` VARCHAR(32) NOT NULL; ALTER TABLE `users` MODIFY `username` VARCHAR(32) NOT NULL;

由上例可以發現:
change可以改變字段名稱,而modify不可以

添加字段:

我們使用add關鍵字

ALTER TABLE `uses` ADD `tname` VARCHAR(32) NOT NULL;

這樣我們就會新增一個tname字段。

刪除字段:

我們使用drop關鍵字

ALTER TABLE `users` DROP `tname`;

這樣我們會刪除tname字段

添加索引:

我們使用add關鍵字

ALTER TABLE `uses` ADD INDEX/UNIQUE/PRIMARY KEY 索引名稱(字段名稱)

這樣會在該字段上建立索引(普通索引,唯一索引,主鍵索引)。

刪除索引:
ALTER TABLE `users` DROP INDEX/UNIQUE/PRIMARY KEY 索引名稱;

這樣我們會刪除這個索引,我們可以使用show indexes from 表名查看當前表索引。

更改表名稱:

我們使用rename關鍵字

ALTER TABLE 舊表名 RENAME AS 新表名

將舊表名更改為新表名

更改AUTO_INCREMENT初始值:

ALTER TABLE 表名稱 AUTO_INCREMENT=1

將AUTO_INCREMENT的初始值設置為1

刪除表:
DROP TABLE [IF EXISTS] 表名稱;
  • 如何啟動和停止MySQL數據庫服務(至少兩種)?
  • 在命令行模式下如何連接MySQL數據庫服務。
  • 在mysql命令提示符下:如何查看當前服務器下的數據庫(瀏覽數據庫);
  • 在mysql命令提示符下:如何選擇進入一個數據庫;
  • 在mysql命令提示符下:如何查看當前庫下的所有表。
  • 在mysql命令提示符下:如何如何查看一個表格的結構;
  • 在mysql命令提示符下:如何取消當前sql命令;
  • 在mysql命令提示符下:如何退出數據庫;
  • 在mysql命令提示符下:如何創建一個數據庫;
  • 在mysql命令提示符下:如何刪除一個數據庫;
  • 在mysql命令提示符下:如何刪除一個數據表;
  • 參考下面圖片,按照要求創建表格,(字段類型和約束只做參考)

    Paste_Image.png
  • 為上面的每個表都添加10條測試數據。
  • 修改其中的3條數據。
  • 刪除每個表的2條數據庫。

轉載于:https://www.cnblogs.com/lxlx1798/p/8313603.html

總結

以上是生活随笔為你收集整理的MySQ数据表设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。