數據庫組織數據的方式
前面已經講過了創建數據庫相關的(沒看的,可以點此鏈接 跳過去),既然數據庫已經創建好了,那麼我們就要開始往裏面裝數據了,要怎麼裝呢?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個字節的定長字節符串 |
需要注意的是 :CHAR
和VARCHAR
類型定長和可變的意思是,一旦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的表,這個表包括兩個字段—id
和 name
,類型分別是TYINT
和 VARCHAR
,NOT NULL
表示數據的值不能是NULL
,字段id
後面的PRIMARY KEY
表示字段id
是主鍵。
主鍵的意思是一個表裏面獨一無二的一個值,靠主鍵能唯一索引一個表內的一個記錄。因爲一個表內的數據你不能保證數據值的唯一性,那麼當你要查詢某條記錄時,就比較麻煩。設定主鍵就便於查詢想查詢的記錄。
查詢數據庫的表
在你創建一個表後,想要查看是否已經創建成功,或者想查看當前操作的數據庫所包含的表可以使用一下語句:
SHOW TABLES;
下面語句可以查詢創建詳情
SHOW CREATE TABLE 表名;
更改表的列類型
在創建表後,可以通過一下語句查看錶字段的詳情
SHOW COLUMNS FROM 表名;
或者
DESC 表名;
上述兩條語句都可以實現對錶字段情況的查詢,且結果是一樣的,DESC
和 DESCRIBE
是一樣的, 可以互換,爲了方便才那樣寫。
此時如果此時發現需要更改字段的類型和名字,如下語句可以做到:
-- 更改列類型
ALTER TABLE 表名 MODIFY 列名 類型;
上面的--
是MySQL的註釋。
更改上述創建的表example
的列id
的類型爲INT
:
ALTER TABLE example id INT;
-- 更改列名和類型
ALTER TABLE CHANGE COLUMN 列名 新列名 類型;
更改上述創建的表example
的列id
的名字和類型爲userid
和SAMLLINT
:
-- 更改列名和類型
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,看來還要多多加油了。
我自己也能力有限,如果有錯的地方,敬請指正。