對于MySQL數據表設置的詳細說明
發(fā)表時間:2023-09-04 來源:明輝站整理相關軟件相關文章人氣:
[摘要]創(chuàng)建數據表打開數據庫USE 數據庫名稱mysql> USE D1;Database changed使用 USE D1;表示打開數據庫D1,我們可以通過SELECT DATABASE();來查看當前打開的數據庫:mysql> SELECT DATABASE();+------------...
創(chuàng)建數據表
打開數據庫
USE 數據庫名稱
mysql> USE D1;
Database changed
使用 USE D1;表示打開數據庫D1,我們可以通過SELECT DATABASE();來查看當前打開的數據庫:
mysql> SELECT DATABASE();
+------------+
DATABASE()
+------------+
d1
+------------+1 row in set (0.00 sec)
創(chuàng)建數據表
CREATE TABLE [IF NOT EXISTS] table_name (
column_name datatype,
......
)
這個結構很簡單,對于[IF NOT EXISTS],在第一篇 “MySQL基本操作” 已經說明,這里不贅述。
我們來創(chuàng)建一個數據表 table1:
mysql> CREATE TABLE table1(
-> username VARCHAR(20),
-> age TINYINT UNSIGNED,
-> salary FLOAT(8,2) UNSIGNED
-> );
Query OK, 0 rows affected (0.74 sec)
注意這里的UNSIGNED,表示無符號值,即是正數,可回顧 “MySQL基本數據類型” 查看,TINYINT UNSIGNED 表示 0 ~ 255 之間的數值。
這里提示創(chuàng)建成功,我們可以通過以下語句來驗證一下:
SHOW TABLES [FROM db_name][LIKE 'pattern' WHERE expr]
mysql> SHOW TABLES FROM D1;
+--------------+
Tables_in_d1
+--------------+
table1
+--------------+1 row in set (0.00 sec)
這里我們可以看到創(chuàng)建了table1這張表。
查看數據表結構
SHOW COLUMNS FROM tbl_name
mysql> SHOW COLUMNS FROM table1;
+----------+---------------------+------+-----+---------+-------+
Field Type Null Key Default Extra
+----------+---------------------+------+-----+---------+-------+
username varchar(20) YES NULL
age tinyint(3) unsigned YES NULL
salary float(8,2) unsigned YES NULL
+----------+---------------------+------+-----+---------+-------+3 rows in set (0.10 sec)
插入記錄
創(chuàng)建完表之后就要寫入數據了,通過以下語句插入記錄:
INSERT [INTO] tbl_name [(col_name,...)] VALUE(val,...)
這里 [(col_name,...)] 為可選項,如果不添加,那么在VALUE里面的值必須一一與數據表的字段對應,否則無法插入,我們看一下:
mysql> INSERT table1 VALUE("LI",20,6500.50);
Query OK, 1 row affected (0.14 sec)
這里VALUE括號里面與table1的字段一一對應,分別為username=“LI”,age=20,salary=6500.50
下面我們再插入一條數據,但是沒有對應:
mysql> INSERT table1 Value("Wang",25);
ERROR 1136 (21S01): Column count doesn't match value count at row 1
無法插入,因為沒有給出salary的值。
通過添加 [(col_name,...)] 即可靈活插入數據:
mysql> INSERT table1(username,age) VALUE("Wang",25);
Query OK, 1 row affected (0.11 sec)
table1 與 VALUE 一一對應。
查找表數據
前面已經插入了兩條數據,可以通過以下語句查找表數據:
SELECT expr,... FROM tbl_name
對于數據庫的查找語句SELECT,內容比較多,后面文章會具體講解,我們用一個簡單的語句來查找表的內容:
mysql> SELECT * FROM table1
-> ;
+----------+------+---------+
username age salary
+----------+------+---------+
LI 20 6500.50
Wang 25 NULL
+----------+------+---------+2 rows in set (0.00 sec)
注意MySQL語句是以“;”結尾,如果忘了寫是無法執(zhí)行語句的,在箭頭后面添加分號即可;這里我們可以看到表里面有兩條剛剛寫入的數據。
表創(chuàng)建的基本約束
字段的NULL與NOT NULL
在創(chuàng)建表的時候,我們可以設定該字段是否可為空,如果不可為空,那么在插入數據時,則不能為空。
我們來創(chuàng)建一個數據表table2:
mysql> CREATE TABLE table2(
-> username VARCHAR(20) NOT NULL,
-> age TINYINT UNSIGNED NULL,
-> salary FLOAT(8,2)
-> );
這里username為非空,age為NULL,salary不寫,我們來查看表結構:
mysql> SHOW COLUMNS FROM table2;
+----------+---------------------+------+-----+---------+-------+
Field Type Null Key Default Extra
+----------+---------------------+------+-----+---------+-------+
username varchar(20) NO NULL
age tinyint(3) unsigned YES NULL
salary float(8,2) YES NULL
+----------+---------------------+------+-----+---------+-------+3 rows in set (0.01 sec)
從這里我們可以看到,username的NULL為NO,其他兩個字段為YES,對于可以為空的字段,寫不寫NULL都表示可以為空。
自動編號
AUTO_INCREMENT
auto_increment,auto自動,increment是增加的意思,組合起來表示自動增加,也就是可以自動按照從小到大的順序編號。
下面來操作一下:
mysql> CREATE TABLE table3(
-> id SMALLINT UNSIGNED AUTO_INCREMENT,
-> username VARCHAR(20)
-> );
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
報錯,因為 id 沒有設置為主鍵。
設置主鍵
PRIMARY KEY
主鍵約束
每張表只能存在一個主鍵
主鍵保證記錄的唯一性
主鍵自動為NOT NULL
那么我們添加主鍵,重新操作一次:
mysql> CREATE TABLE table3(
-> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> username VARCHAR(20)
-> );
Query OK, 0 rows affected (0.42 sec)
注意順序,PRIMARY KEY 要放在最后。
這樣我們就創(chuàng)建成功,下面依次插入數據,并查看結果:
mysql> INSERT table3(username) VALUES("Zhang");
Query OK, 1 row affected (0.09 sec)
mysql> INSERT table3(username) VALUES("Weng");
Query OK, 1 row affected (0.07 sec)
mysql> INSERT table3(username) VALUES("Chen");
Query OK, 1 row affected (0.09 sec)
mysql> SELECT * FROM table3;
+----+----------+
id username
+----+----------+
1 Zhang
2 Weng
3 Chen
+----+----------+3 rows in set (0.00 sec)
我們可以看到id自動編號,從小到大一次依次編號。
唯一約束
UNIQUE KEY
唯一約束
唯一約束保證記錄不可重復(唯一性)
唯一約束可以為空值(NULL)
可以有多個唯一約束
mysql> CREATE TABLE table4(
-> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> username VARCHAR(20) UNIQUE KEY,
-> age TINYINT UNSIGNED
-> );
Query OK, 0 rows affected (0.43 sec)
mysql> INSERT table4(username) VALUE("Li");
Query OK, 1 row affected (0.11 sec)
mysql> INSERT table4(username) VALUE("Li");
ERROR 1062 (23000): Duplicate entry 'Li' for key 'username'
mysql> INSERT table4(username) VALUE("Chen");
Query OK, 1 row affected (0.10 sec)
對于username我們設置為唯一約束,所以Li不可被重復創(chuàng)建,改為“Chen”即可。注意這里只是實驗,在實際操作中,名字相同還是常有的,應該根據實際情況建立數據表。
默認值DEFAULT
通過 DEFAULT 來設置默認值,如果在插入數據時沒給給出相應的值,那么就用默認的,下面的例子就是設置number的默認值為3,在插入數據的時候,因為沒有給出number,所以默認為3。
mysql> CREATE TABLE table5(
-> number ENUM("1","2","3") DEFAULT "3",
-> username VARCHAR(20)
-> );
Query OK, 0 rows affected (0.41 sec)
mysql> INSERT table5(username) VALUES("Luo");
Query OK, 1 row affected (0.10 sec)
mysql> INSERT table5(username) VALUES("Fang");
Query OK, 1 row affected (0.15 sec)
mysql> SELECT * FROM table5;
+--------+----------+
number username
+--------+----------+
3 Luo
3 Fang
+--------+----------+2 rows in set (0.00 sec)
以上就是關于MySQL數據表操作的詳解的詳細內容,更多請關注php中文網其它相關文章!
學習教程快速掌握從入門到精通的SQL知識。