操作表中數(shù)據(jù)
數(shù)據(jù)表是數(shù)據(jù)的載體,在使用的過(guò)程中我們需要頻繁的對(duì)數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行增減、刪除和修改操作。MYSQL中提供了對(duì)數(shù)據(jù)進(jìn)行添加、刪除和修改的完整功能,提高了數(shù)據(jù)庫(kù)的管理效率
SQL中的表達(dá)式和邏輯運(yùn)算符和邏輯運(yùn)算符
SQL命令中的表達(dá)式和開(kāi)發(fā)語(yǔ)言中的表達(dá)式定義是一樣的,都是指用 運(yùn)算符將同類(lèi)型的數(shù)據(jù)(如:變量、常量、函數(shù)等) 按一定的規(guī)則連接起來(lái)的具有特定意義的語(yǔ)句,表達(dá)式可以分為條件表達(dá)式和邏輯表達(dá)式
表達(dá)式
在數(shù)據(jù)庫(kù)中的表達(dá)式一般是指由常量、變量、函數(shù)和運(yùn)算符組成。需要特別注意的是單個(gè)常量、變量和函數(shù)亦可稱(chēng)為表達(dá)式。SQL語(yǔ)言中包括三種表達(dá)式,第一種<表名>后跟<字段名表達(dá)式>,第二種是select語(yǔ)句后的<目標(biāo)表達(dá)式>,第三種是where語(yǔ)句后的<條件表達(dá)式>
比較運(yùn)算符
比較運(yùn)算符就是用來(lái)比較兩個(gè)數(shù)的大小,其結(jié)果是1、0或者Null,SQL中的條件運(yùn)算符其意義如下
| 運(yùn)算符 | 含義 |
|---|---|
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| = | 等于 |
| != 或<> | 不等于 |
| IS null | 是否為空 |
| IS NOT NULL | 是否不為空 |
| IN | 判斷一個(gè)值是IN列表中的任意一個(gè)值 |
| NOT IN | 判斷一個(gè)值不是IN列表中的任意一個(gè)值 |
| LIKE | 通配符匹配 |
| BETWEEN AND | 判斷一個(gè)值是否在兩個(gè)值之間 |
邏輯運(yùn)算符
SQL命令支持的邏輯運(yùn)算符有 AND( 或者 &&) 、 Or( 或者|| ) 和 Not(或者 !)。
當(dāng)一個(gè)語(yǔ)句中使用了多個(gè)邏輯運(yùn)算符時(shí),運(yùn)算時(shí)先求Not的值,然后求And的值,最后再求Or的值
向表中插入數(shù)據(jù)
數(shù)據(jù)可時(shí)用來(lái)存放數(shù)據(jù)的,如何才能能高效的實(shí)現(xiàn)數(shù)據(jù)添加工作時(shí)本課程的一個(gè)重點(diǎn)。在數(shù)據(jù)庫(kù)中最常用的添加數(shù)據(jù)命令就是 insert 語(yǔ)句
一次添加一條數(shù)據(jù)
語(yǔ)法
insert [INTO] table_name[(column1,column2,column3,...)]
values (value1,value2,value3,...);
語(yǔ)法說(shuō)明:
TABKE_name 表名;
column:列名
value: 需要添加到數(shù)據(jù)表的值,和column對(duì)應(yīng)
into 語(yǔ)法關(guān)鍵字可以省略
注意:
- 添加記錄但不指定所有字段值,不指定字段時(shí),該字段必須為空;
- 自動(dòng)增長(zhǎng)列盡量不要指定值
- 有默認(rèn)值約束的列不指定值時(shí)將使用默認(rèn)值
- 主鍵列、唯一約束列的值不能重復(fù);
- 值于字段名必須一一匹配,但是可以不按照表中字段順序指定
一次添加多行數(shù)據(jù)
在數(shù)據(jù)庫(kù)的使用過(guò)程中,偶爾會(huì)需要一次添加多條數(shù)據(jù),這時(shí)我們可以使用 insert 語(yǔ)句可以一次添加多條數(shù)據(jù)
語(yǔ)法格式:
insert [into] table_name[(column1,column2,column3....]
values
(value1,value2,value3,....),
(value1,value2,value3,....),
(value1,value2,value3,....),
(value1,value2,value3,....),
(value1,value2,value3,....);
修改表中數(shù)據(jù)
數(shù)據(jù)庫(kù)中的數(shù)據(jù)不是永遠(yuǎn)不變的,他會(huì)隨著時(shí)間,業(yè)務(wù)的變化而變化。當(dāng)需要修改現(xiàn)有數(shù)據(jù)時(shí),就需要使用 update 語(yǔ)句
語(yǔ)法:
update table_name
set
ci=olumn_name=value,column_name=value,,....,column_name=value
[where<表達(dá)式>]
語(yǔ)法說(shuō)明
set: 是對(duì)指定的字段進(jìn)行修改
column_name:要被修改值的字段名
value 新增
where 條件語(yǔ)句可選的 代表修改數(shù)據(jù)時(shí)的條件,如果不選擇該語(yǔ)句,代表的則是修改表中的全部數(shù)據(jù)
修改表中的全部數(shù)據(jù)
修改表中的全部數(shù)據(jù)時(shí)一種不太常用的操作。
根據(jù)條件修改表中的數(shù)據(jù)
根據(jù)條件修改表中的數(shù)據(jù)時(shí)一種常用的操作。根據(jù)條件修改表中的數(shù)據(jù),是使用upadte...set....where ... 語(yǔ)句來(lái)完成的
刪除表中的數(shù)據(jù)記錄
使用delete
MySQL中刪除操作時(shí)數(shù)據(jù)庫(kù)中比較常用的操作之一。
語(yǔ)法:
delete from table_name [where search-condition]
語(yǔ)法說(shuō)明
table_name :要?jiǎng)h除數(shù)據(jù)的表明
search-condition : 篩選條件
刪除所有信息:
案例:刪除studentinfo表中所有的記錄
delectEfrom studentinfo
注意:
不要輕易使用delect命令,在使用前要慎重考慮。因?yàn)榇蠖鄶?shù)數(shù)據(jù)中的提交方式是自動(dòng)的,在沒(méi)有標(biāo)識(shí)為事務(wù)的情況下是不能回滾的。DELECT命令是要記錄到日志的操作,所以如果五一中使用 DELECT 命令,只能從備份的數(shù)據(jù)庫(kù)中進(jìn)行恢復(fù)
根據(jù)WHERE條件刪除數(shù)據(jù)
如果要?jiǎng)h除數(shù)據(jù)庫(kù)中指定的多條信息,只能通過(guò)where語(yǔ)句來(lái)實(shí)現(xiàn),
使用TRUNCATE
DELECT 雖然能夠刪除表中全部的數(shù)據(jù),但是DELECT 的操作是要記錄在日志文件中的,如果數(shù)據(jù)表的數(shù)據(jù)量比較大,刪除的速度就會(huì)收到影響,而且 DEKECT 刪除數(shù)據(jù)后,表所占的空間并沒(méi)有收回
TRUNCSTE 可以刪除表中的所有數(shù)據(jù),只留下一個(gè)表的結(jié)構(gòu)定義。 使,用TRUNCSTE 是不記錄日志操作的,因此其速度要比 DELECT語(yǔ)句塊好多。 而且TRUNCSTE 語(yǔ)句將釋放數(shù)據(jù)表的數(shù)據(jù)和索引所占據(jù)的所有空間,以及釋放所有索引分配的空間
語(yǔ)法如下:
TRUNCATE TABLE TABLE_NAME
注意:
TRUNCATE TABLE命令不能用于有外鍵約束的表,如果存在外鍵約束則必須使用DELETE命令來(lái)刪除數(shù)據(jù)
總結(jié):
SQL中的運(yùn)算符:
算數(shù)運(yùn)算符 關(guān)系運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符。
使用SQL語(yǔ)句增、刪、改、數(shù)據(jù)
Insert插入數(shù)據(jù)
Update 修改數(shù)據(jù)
Delete刪除數(shù)據(jù)
TRUNCATE 刪除數(shù)據(jù)