MYSQL 數據庫基本操作

插入數據

在建立一個空的數據庫和數據表時,首先需要考慮的是如何向數據表中添加數據,該操作可以使用INSERT語句來完成。使用INSERT語句可以向一個已有數據表插一個新行,也就插入一行新記錄。
在MySQL中,INSERT語句有3種語法格式,分別是INSERT... VALUES語句、INSERT... SET語句和INSERT... SELECT語句。

使用INSERT... VALUES語句插入數據

使用INSERT... VALUES語句插入數據,是INSERT語句的最常用的語法格式。

語法格式如下: 

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] 數據表名 [(字段名,...)]
VALUES ({值 | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE 字段名=表達式, ... ]

例子:

create database test; #創建庫
use test; #進入庫
create table info (id int not null,name char(16),score decimal(5,2),age int(8)); #創建表

插入測試數據

insert into info (id,name,score,age)values(1,'san',88,33);
insert into info (id,name,score,age)values(2,'lisi',48,31);
insert into info (id,name,score,age)values(3,'wwu',68,27);
insert into info (id,name,score,age)values(4,'pw',98,25);
insert into info (id,name,score,age)values(5,'wlk',19,37);
insert into info (id,name,score,age)values(3,'lihua',58,23);
SELECT * FROM info;

MYSQL 數據庫基本操作

使用INSERT... SET語句插入數據

在MySQL中,除了使用INSERT... VALUES語句可以插入數據外,還可以使用INSERT... SET語句插入數據。這種語法格式用於通過直接給表中的某些字段指定對應的值來實現插入指定數據,對於未指定值的字段將採用默認值進行添加。

INSERT... SET語句的語法格式如下:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] 數據表名
SET 字段名={值 | DEFAULT}, ...
[ ON DUPLICATE KEY UPDATE 字段名=表達式, ... ]

例子:

insert into info SET id =8, name='xiaohong',score=88,age=56;
SELECT * FROM info;

MYSQL 數據庫基本操作

插入查詢結果

在MySQL中,支持將查詢結果插入到指定的數據表中,這可以通過>INSERT...SELECT語句來實現。
 

語法如下:

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] 數據表名 [(字段名,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE 字段名=表達式, ... ]

例子:

insert into info(id,name,score,age)SELECT * from info where id=4;
SELECT * FROM info;

MYSQL 數據庫基本操作

修改數據

要執行修改的操作可以使用UPDATE語句,

語法如下:

UPDATE [LOW_PRIORITY] [IGNORE] 數據表名
SET 字段1=值1 [, 字段2=值2 ...]
[WHERE 條件表達式]
[ORDER BY ...]
[LIMIT 行數]

例子:

UPDATE info set score=77 where age <=30;
SELECT * FROM info;

MYSQL 數據庫基本操作
MYSQL 數據庫基本操作

刪除數據

在數據庫中,有些數據已經失去意義或者錯誤時就需要將它們刪除,在MySQL中,可以使用DELETE語句或者TRUNCATE TABLE語句刪除表中的一行或多行數據.

通過DELETE語句刪除數據

通過DELETE語句刪除數據的基本語法格式如下:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM 數據表名
[WHERE 條件表達式]
[ORDER BY ...]
[LIMIT 行數]

例子:

DELETE FROM info;
DELETE from info WHERE id=4;
SELECT * FROM info;

MYSQL 數據庫基本操作

通過TRUNCATE TABLE語句刪除數據

在刪除數據時,如果要從表中刪除所有的行,那麼不必使用通過TRUNCATE
TABLE語句刪除數據的基本語法格式如下:
TRUNCATE [TABLE] 數據表名

例子:

TRUNCATE table info;

Drop,Truncate,Delete區別

1.drop (刪除表):刪除內容和定義,釋放空間。簡單來說就是把整個表去掉.以後要新增數據是不可能的,除非新增一個表。
drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger)索引(index);依賴於該表的存儲過程/函數將被保留,但其狀態會變爲:invalid。
2.truncate (清空表中的數據):刪除內容、釋放空間但不刪除定義(保留表的數據結構)。與drop不同的是,只是清空表數據而已。
注意:truncate 不能刪除行數據,要刪就要把表清空。
3.delete (刪除表中的數據):delete 語句用於刪除表中的行。delete語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的刪除操作作爲事務記錄在日誌中保存。以便進行進行回滾操作。truncate與不帶where的delete :只刪除數據,而不刪除表的結構(定義)
4.runcate table 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置爲該列的種子。如果想保留標識計數值,請改用delete如果要刪除表定義及其數據,請使用 drop table 語句。
5.對於由foreign key約束引用的表,不能使用truncate table ,而應使用不帶where子句的delete語句。由於truncate table 記錄在日誌中,所以它不能激活觸發器。
6.執行速度,一般來說: drop> truncate > delete。
7.delete語句是數據庫操作語言(dml),這個操作會放到 rollback segement 中,事務提交之後才生效;如果有相應的 trigger,執行的時候將被觸發。
8.truncate、drop 是數據庫定義語言(ddl),操作立即生效,原數據不放到 rollback segment 中,不能回滾,操作不觸發 trigger

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