建立 mysql 資料庫#
- 登入並建立資料庫
# mysql -u root -p
mysql> create database test;
- 登入並使用資料庫
# mysqladmin -u root -p craete test
資料類型#
- 數值:整數,浮點數,布林值,字串
- 日期 / 時間:日期,時間,日期時間
- 字串:字串,二進制,字符集
數值類型#
類型 | 大小 | 範圍 (有符號) | 範圍 (無符號) | 用途 |
---|---|---|---|---|
tinyint | 1 | -128~127 | 0~255 | 整數 |
smallint | 2 | -32768~32767 | 0~65535 | 整數 |
mediumint | 3 | -8388608~8388607 | 0~16777215 | 整數 |
int | 4 | -2147483648~2147483647 | 0~4294967295 | 整數 |
bigint | 8 | -9223372036854775808~9223372036854775807 | 0~18446744073709551615 | 整數 |
float | 4 | -3.402823466E+38~3.402823466E+38 | -1.79E+308~1.79E+308 | 浮點數 |
double | 8 | -1.7976931348623157E+308~1.7976931348623157E+308 | -2.22E-308~2.22E-308 | 浮點數 |
decimal | DECIMAL (M,D) 中 M+2 和 D+2 中較大的數 | 依賴 M 和 D 的值 | 依賴 M 和 D 的值 | 小數值 |
日期和時間類型#
類型 | 大小 | 範圍 | 格式 | 用途 |
---|---|---|---|---|
date | 4 | 1000-01-01~9999-12-31 | yyyy-mm-dd | 日期 |
time | 8 | -838:59:59~838:59:59 | hh:mm | 時間 |
datetime | 8 | 1000-01-01 00:00:00~9999-12-31 23:59:59 | yyyy-mm-dd hh:mm | 日期時間 |
timestamp | 8 | 1970-01-01 00:00:00~2038-01-19 03:14:07 | yyyy-mm-dd hh:mm | 時間戳記 |
字串類型#
類型 | 大小 | 用途 |
---|---|---|
char | 0~255 | 定長字串 |
varchar | 0~65535 | 變長字串 |
tinytext | 0~255 | 短文本字串 |
text | 0~65535 | 長文本字串 |
mediumtext | 0~16777215 | 中等長度文本字串 |
langtext | 0~65535 | 極長文本字串 |
tinyblob | 0-255 | 不超過 255 個字符的二進制字串 |
blob | 0~65535 | 二進制長文本字串 |
mediumblob | 0~16777215 | 中等長度的二進制字串 |
longblob | 0~4294967295 | 長長度的二進制字串 |
提示:
-
binary 和 varbinary 的區別
類似 char 和 varchar 不同的是他們包含二進制字串而不包含非二進制字串,二進制字串是由 0 和 1 組成的字串,二進制字串可以用於存儲圖片,視頻,音頻等二進制文件。他們沒有字符集,排序和比較基於字節的數值。
-
Blob 和 Text 的區別
Blob 是二進制字串,Text 是字串。
建立表格#
例子:
```sql
# 建立表格
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
-
Not null: 必須傳入輸入值
-
Auto increment: 自增長
-
Default: 默認值
如果是要實現自動寫入時間,應該用
`TIMESTAMP`
類型。DEFAULT 設置為
`CURRENT_TIMESTAMP` ` `。最好指定為` ` `NULL`
。 -
Primary key: 主鍵,可以使用多列定義主鍵
-
Engine: 儲存引擎,默認是 InnoDB
-
Charset: 字符集,默認是 utf8mb4
例子:
root@seele # mysql -u root -p
Enter password:******
mysql> Use test;
Database changed
mysql> CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected (0.00 sec)
刪除表格和資料庫#
-
刪除表格
DROP TABLE `test`;
-
刪除資料庫
DROP DATABASE `test`;
mysqladmin -u root -p drop test
-
刪除資料消除自增長
ALTER TABLE `test` AUTO_INCREMENT = 1; //將自增長設為1,部分情況下可以解決自增長問題