MySQL基礎 對錶操作
阿新 • • 發佈:2018-12-31
參考書籍:MySQL與MariaDB學習指南
修改一張資料庫裡面的表之前我們需要對錶進行備份,備份的工作一方面可以對錶進行備份,另一方面是對整個資料庫備份。
1.先建立一個數據庫和一張表
CREATE database dogs; /*建立一個dogs的資料庫*/
/*或者使用dogs作為預設的資料庫 USE dogs; */
CREATE TABLE dogs.dog( /*建立一個dogs表*/
id INT AUTO_INCREMENT,
scientfic_name char(26),
age INT(2)
);
2.對錶操作之前先進行備份
//user_name是你的使用者名稱 -p 表示需要輸入密碼 '>' 是重定向符,將表的內容放入備份的sql檔案裡面 mysqldump --user='user_name' -p \ dogs dogs > /opt/dog.sql ; //備份資料庫的操作 mysqldump --user'user_name' -p \ dogs > dogs.sql
3.恢復備份的操作
mysql --user'user_name' -p \
dogs < dogs.sql
由於每一次修改表以及刪除表的操作都比較難恢復到初始態。一旦出現錯誤就會比較麻煩。所以我們需要先學習並且養成備份的習慣
修改表的語法
1.新增一列order_id
ALTER TABLE dogs
ADD COLUMN order_id INT;
2.在id項後面一項新增order_id 項
ALTER TABLE dogs
ADD COLUMN order_id INT AFTER id;
3.設定一個具有列舉型別參考表的新列
如果一個列的資料是固定的,那麼在定義它的時候我們可以使用列舉型別,也可以再建立一個表去給出詳細的資訊。但是列舉型別本身就是一種參考表
/*建立一個狗的原產地這樣一個列*/
ALTER TABLE new_dog
MODIFY COLUMN address
ENUM(
'ASIAN',
'AMERICA',
'Europe',
'Austrlia');
AFTER order_id;
3.關於表的其他操作
DESCRIBE dogs.dog; /*查看錶的內容*/ DROP dogs.dog; /*刪掉表dog*/ SHOW COLUMNS FROM table_name LIKE 'col_name';/*檢視一個列*/ CREATE TABLE test.new_dog LIKE dogs.dog /*複製一份dog表到new_dog裡面,但是沒有資料,只有相應的配置*/
設定列的預設值
可以使用CHANGE語句或者是ALTER語句,而且不用擔心的是修改了列的預設值不會對之前的儲存資料有影響
/*修改new_dogs表的address項的型別為int 並且初始值設定為8*/
ALTER TABLE new_dogs
CHANGE COLUMN address INT DEFAULT 8;
/*修改表的age項的初始值預設為8 使用ALTER*/
ALTER TABLE new_dogs
ALTER COLUMN age SET DEFAULT 8;
修改AUTO_INCREMENT的預設值
/*從下一行開始初始值從10開始*/
ALTER TABLE birds
AUTO_INCREMENT = 10;
重命名錶的操作
重新命名的時候要注意,不能與其他表重名,而且最好不要包含連線符 ‘- ’ 因為Mysql會把他當成減號
RENAME TABLE table_old TO table_new ;
並且RENAME命令也可以用來移動表,這一點和linux shell中的mv差不多,可以將一個表不改名字的移動到另一個數據庫。
使用order by指令對錶進行重排序
SELECT * FROM code
ORDER BY name
LIMIT 3;
關於索引的理解
索引是為了更加方便的對錶內的資訊進行檢索和查詢,但是索引並不是列。一個列是PRIMARY KEY是說它與索引關聯了,而不是說它就是索引。索引可以是單獨定義出來,也可以是建表之後新增的。
SHOW INDEX FROM tables \G /*查看錶的引數資訊,可以看到當前的索引關聯*/
/*explain語句是用來解釋,索引被如何應用的而不是顯示查詢結果 */
EXPLAIN SELECT * FROM tables WHERE name = 'JJ' \G
/*建立索引*/
ALTER TABLE humans
ADD INDEX human_name(name_last,name_first);
/*該索引是一對鍵值對,所以無論輸入哪個名字都會使用human_name選項*/
對一個索引值關聯的列進行修改名稱之前需要將主鍵的值去掉
DROP PRIMARY KEY之後再對列名進行修改,不然會出現主鍵不能與某一列關聯的錯誤。