MySQL學習之路_數據的組織方式-表

數據庫組織數據的方式

前面已經講過了創建數據庫相關的(沒看的,可以點此鏈接 跳過去),既然數據庫已經創建好了,那麼我們就要開始往裏面裝數據了,要怎麼裝呢?MySQL(不止MySQL是這樣,Oracle等其它也是一樣)組織數據是像excel表格一樣。首先創建一張表,設置表的列的保存的內容是什麼,插入進表的一行數據稱爲一個記錄。
在具體到代碼創建表之前,我們先來看看MySQL的數據類型,畢竟,知道了數據類型,我們才能爲每個表列保存的值設置合適的類型。

MySQL三大數據類型

MySQL數據類型具體可以分爲三大類:數值、文本、日期。

數值
數值 佔用字節 說明
BIT 1/8 位類型,默認值1範圍(1-64)
TINYINT[UNSIGNED][ZEROFILL] 1 帶符號的範圍是-128到127。無符號0-255。相當於java的byte
BOOL, BOOLEAN 1 範圍跟BIT一樣,用0、1分別代表false、true。存儲時,true和false會被轉換爲1和0存儲
SAMLLINT[UNSIGNED][ZEROFILL] 2 (相當於java的short)
MEDIUMINT[UNSIGNED][ZEROFILL] 3 範圍爲2的24次方
INT[UNSIGNED][ZEROFILL] 4 範圍2的32次方(相當於java的int)
BIGINT[UNSIGNED][ZEROFILL] 8 範圍2的64次方(相當於java的long類型)
FLOAT[(M,D)][UNSIGNED][ZEROFILL] 4 範圍2的32次方,M指定顯示數字的個數,D指定小數位數
DOUBLE[(M,D)][UNSIGNED][ZEROFILL] 8 範圍2的64次方。M指定顯示數字的個數,D指定小數位數
文本、二進制
字符串類型 佔用字節範圍 說明
CHAR(size) 0-255 定長字符串
VARCHAR(size) 0-65535 變長字符串
TYINTBLOB,MEDIUMBLOB,LONGBLOB 0-255, 0-65535, 0-16777215, 0-4294 967295 佔用字節不同的二進制數據(音樂,圖片,視頻)
TINYTEXT, MEDIUMTEXT,LONGTEXT 0-255, 0-65535, 0-16777215, 0-4294 967295 佔用字節數不同的文本類型(字符串)
VARBINARY(M) 允許長度0-M個字節的定長字節符串,值的長度+1個字節
BINARY(M) M 允許長度0-M個字節的定長字節符串

需要注意的是 :CHARVARCHAR 類型定長和可變的意思是,一旦CHAR類型確定了長度,譬如CHAR(10),表示10個字節的字符,那麼它所佔的字節就總是10個字節,即使存放的數據沒有10個字節,它所佔空間也是10個字節,VARCHAR和它正好正好相反,譬如VARCHAR(10) 能保存10個字符,但是如果你的數據小於10,那麼實際長度取決於實際保存的數據長度。但是如果要保存的數據超過了所聲明的大小,SQL語句會報錯

日期
類型 佔用字節 範圍 格式 用途
DATE 4 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 ‘-838:59:59’/’838:59:59’ HH:MM:SS 時間值或持續時間
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和時間值
TIMESTAMP 4 1970-01-01 00:00:00/2037 年某時 YYYYMMDD HHMMSS 混合日期和時間值,時間戳

MySQL三大數據類型上面都已經列出來了,數據類型不止說明了要保存的值是什麼類型,還說明了保存值得範圍是多少。現在我們就可以開始就創建表來存儲數據。

創建表

在創建表之前,應該登入DBMS,然後USE 所創建的數據庫,才能創建表。創建表的語法如下:

CREATE TABLE 數據表名
    (列聲明);

其中列聲明之間用逗號隔開。看例子:

CREATE TABLE example
    (id TYINT(2) NOT NULL PRIMARY KEY,
    name VARCHAR(10) NOT NULL,
    );

上面語句在當前使用的數據庫創建了一個名爲example的表,這個表包括兩個字段—idname,類型分別是TYINTVARCHARNOT NULL 表示數據的值不能是NULL,字段id 後面的PRIMARY KEY 表示字段id 是主鍵。
主鍵的意思是一個表裏面獨一無二的一個值,靠主鍵能唯一索引一個表內的一個記錄。因爲一個表內的數據你不能保證數據值的唯一性,那麼當你要查詢某條記錄時,就比較麻煩。設定主鍵就便於查詢想查詢的記錄。

查詢數據庫的表

在你創建一個表後,想要查看是否已經創建成功,或者想查看當前操作的數據庫所包含的表可以使用一下語句:

SHOW TABLES;

下面語句可以查詢創建詳情

SHOW CREATE TABLE 表名;

更改表的列類型

在創建表後,可以通過一下語句查看錶字段的詳情

SHOW COLUMNS FROM 表名;

或者

DESC 表名;

上述兩條語句都可以實現對錶字段情況的查詢,且結果是一樣的,DESCDESCRIBE 是一樣的, 可以互換,爲了方便才那樣寫。
此時如果此時發現需要更改字段的類型和名字,如下語句可以做到:

-- 更改列類型
ALTER TABLE 表名 MODIFY 列名 類型;

上面的-- 是MySQL的註釋。
更改上述創建的表example 的列id 的類型爲INT

ALTER TABLE example id INT;
-- 更改列名和類型
ALTER TABLE CHANGE COLUMN 列名 新列名 類型;

更改上述創建的表example 的列id 的名字和類型爲useridSAMLLINT

-- 更改列名和類型
ALTER TABLE CHANGE COLUMN  id userid SMALLINT;

添加/刪除列

添加列的語句也是ALTER TABLE

-- 默認在添加在列的最後
ALTER TABLE 表名 ADD 列名 類型;
-- 添加到列的最前面
ALTER TABLE 表名 ADD 列名 類型 frist;
-- 添加到指定列之後
ALTER TABLE 表名 ADD 列名 類型 after 表中已存在的列名

上面語句都很簡單,就不在做示例了。
有添加就有刪除,現在來看看刪除列:

ALTER TABLE 表名 drop 指定的列名

刪除列很簡單,同樣,也不做示例了。

修改表相關

修改表相關這裏,我們就只講下如何修改表的字符集和表名。
修改表的字符集:

ALTER TABLE 表名 CHARACTER SET 字符集;

修改表名:

RENAME TABLE 表名 TO 新表名;

上面都非常簡單,就不多說了。


這次內容比較多,寫博客也挺費時間的,打字慢,花了將近三小時才弄完,不敢相信!w(゚Д゚)w,看來還要多多加油了。

我自己也能力有限,如果有錯的地方,敬請指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章