日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

MySQL數據操作-DML語句的使用

瀏覽:32日期:2023-10-09 12:55:37

說明

DML(Data Manipulation Language)數據操作語言,是指對數據庫進行增刪改的操作指令,主要有INSERT、UPDATE、DELETE三種,代表插入、更新與刪除,這是學習MySQL必要掌握的基本知識。

方語法中 [] 中內容可以省略。

INSERT操作

逐行插入

語法格式如下:

insert into t_name[(column_name1,columnname_2,...)] values (val1,val2); 或者 insert into t_name set column_name1 = val1,column_name2 = val2;

1、字段名稱和值需要保證數量一直,類型一直,位置一 一對應,否則可能導致異常。

2、not null的字段需要保證有插入的值,否則會報非空的異常信息。允許null的字段如果不想輸入數據,字段和值都不出現,或者value用null代替。

3、數值類型,值不需要用單引號括起來,其他的如字符型或日期類型,值需要用單引號括起來;

4、如果表名后面的column_name 省略不寫,則代表覆蓋該表的所有字段。值的順序和表中字段順序須保持一致。

5、上述第二種語法的寫法更繁瑣,現在比較少使用。

測試一下:

mysql> desc `user1`;+---------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+---------+--------------+------+-----+---------+----------------+| id | bigint(20) | NO | PRI | NULL | auto_increment || name | varchar(20) | NO | | NULL ||| age | int(11) | NO | | 0 ||| address | varchar(255) | YES | | NULL ||+---------+--------------+------+-----+---------+----------------+4 rows in setmysql> insert into `user1`(name,age,address) values(’brand’,20,’fuzhou’);Query OK, 1 row affectedmysql> insert into `user1`(age,address) values(20,’fuzhou’);1364 - Field ’name’ doesn’t have a default valuemysql> insert into `user1` values(’sol’,21,’xiamen’);1136 - Column count doesn’t match value count at row 1mysql> insert into `user1` values(null,’sol’,21,’xiamen’);Query OK, 1 row affectedmysql> select * from `user1`;+----+-------+-----+---------+| id | name | age | address |+----+-------+-----+---------+| 3 | brand | 20 | fuzhou || 4 | sol | 21 | xiamen |+----+-------+-----+---------+2 rows in set

批量插入

語法格式如下:

insert into t_name [(column_name1,column_name2)] values (val1_1,val1_2),(val2_1,val2_2)...); 或者 insert into t_name [(column_name1,column_name2)] select o_name1,o_name2 from o_t_name [where condition];

1、上述第一個語法,values 后面的值個數需要同等配對 column的數量,可以設置多個,逗號隔開,提高數據插入效率。

2、第二個語法,select查詢的字段和插入數據的字段數量、順序、類型需要一致。 insert的字段可以省略,代表插入t_name表所有字段。條件可選。

測試一下:

mysql> insert into `user1`(name,age,address) values(’brand’,20,’fuzhou’),(’sol’,21,’xiamen’);Query OK, 2 rows affectedRecords: 2 Duplicates: 0 Warnings: 0mysql> select * from `user1`;+----+-------+-----+---------+| id | name | age | address |+----+-------+-----+---------+| 5 | brand | 20 | fuzhou || 6 | sol | 21 | xiamen |+----+-------+-----+---------+2 rows in set

mysql> desc `user2`;+---------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+---------+--------------+------+-----+---------+----------------+| id | bigint(20) | NO | PRI | NULL | auto_increment || name | varchar(20) | NO | | NULL ||| age | int(11) | NO | | 0 ||| address | varchar(255) | YES | | NULL ||| sex | int(11) | NO | | 1 ||+---------+--------------+------+-----+---------+----------------+5 rows in setmysql> insert into `user2` (name,age,address,sex) select name,age,address,null from `user1`;Query OK, 2 rows affectedRecords: 2 Duplicates: 0 Warnings: 0mysql> select * from `user2`;+----+-------+-----+---------+------+| id | name | age | address | sex |+----+-------+-----+---------+------+| 7 | brand | 20 | fuzhou | 1 || 8 | sol | 21 | xiamen | 1 |+----+-------+-----+---------+------+2 rows in set

UPDATE操作

數據更新

語法格式如下:

update t_name [[as] alias] set [ alias.]column_name1 = val1,[alias.]column_name2 = val2 [where condition];

1、alias 是別名的意思,別名越簡單識別性越強越好,容易辨認,方便操作,沒有別名情況下,表名就是別名

2、as alias 中as也是可選的,where 條件也是可選的,所以用戶可以選擇需要的,符合特定條件的部分數據進行更新。

測試一下:

mysql> select * from `user2`;+----+-------+-----+---------+------+| id | name | age | address | sex |+----+-------+-----+---------+------+| 7 | brand | 20 | fuzhou | NULL || 8 | sol | 21 | xiamen | NULL |+----+-------+-----+---------+------+2 rows in setmysql> update `user2` as u2 set u2.name = ’hero’,u2.age=23,u2.sex=1 where id=7;Query OK, 1 row affectedRows matched: 1 Changed: 1 Warnings: 0mysql> select * from `user2`;+----+------+-----+---------+------+| id | name | age | address | sex |+----+------+-----+---------+------+| 7 | hero | 23 | fuzhou | 1 || 8 | sol | 21 | xiamen | NULL |+----+------+-----+---------+------+2 rows in set

還有一種方式是同時更新多個表,使用不同的別名以及一些條件去限制,不過不建議這么做,操作易錯,并且不好維護。

DELETE操作

delete方式刪除

語法格式如下:

delete [alias] from t_name [[as] alias] [where condition];

1、跟上面一樣,alias代表別名,沒有別名情況下,表名就是別名

2、如果表設置了別名,則delete后面必須跟上別名,否則數據庫會報異常。

測試一下:

mysql> select * from `user2`;+----+------+-----+---------+------+| id | name | age | address | sex |+----+------+-----+---------+------+| 7 | hero | 23 | fuzhou | 1 || 8 | sol | 21 | xiamen | NULL |+----+------+-----+---------+------+2 rows in setmysql> delete from `user2` as alias where sex=1;1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’as alias where sex=1’ at line 1mysql> delete alias from `user2` as alias where sex=1;Query OK, 1 row affectedmysql> select * from `user2`;+----+------+-----+---------+------+| id | name | age | address | sex |+----+------+-----+---------+------+| 8 | sol | 21 | xiamen | NULL |+----+------+-----+---------+------+1 row in set

3、如果刪除表中所有的數據,則后面不帶上where條件即可,不過要謹慎使用喲。

mysql> select * from `user2`;+----+-------+-----+----------+-----+| id | name | age | address | sex |+----+-------+-----+----------+-----+| 8 | sol | 21 | xiamen | 0 || 10 | brand | 21 | fuzhou | 1 || 11 | helen | 20 | quanzhou | 0 |+----+-------+-----+----------+-----+3 rows in setmysql> delete from `user2`;Query OK, 3 rows affectedmysql> select * from `user2`;Empty set

truncate方式刪除

語法格式如下:

truncate t_name;

mysql> select * from `user2`;+----+-------+-----+----------+-----+| id | name | age | address | sex |+----+-------+-----+----------+-----+| 12 | brand | 21 | fuzhou | 1 || 13 | helen | 20 | quanzhou | 0 || 14 | sol | 21 | xiamen | 0 |+----+-------+-----+----------+-----+3 rows in setmysql> truncate `user2`;Query OK, 0 rows affectedmysql> select * from `user2`;Empty set

看起來跟delete很像,但是重新插入數據會發現,他的自增主鍵會重新從1開始,但是delete的是直接在原來的所以自增值之后往上加。看下面id字段。

mysql> insert into `user2` (name,age,address,sex) values(’brand’,21,’fuzhou’,1),(’helen’,20,’quanzhou’,0),(’sol’,21,’xiamen’,0);Query OK, 3 rows affectedRecords: 3 Duplicates: 0 Warnings: 0mysql> select * from `user2`;+----+-------+-----+----------+-----+| id | name | age | address | sex |+----+-------+-----+----------+-----+| 1 | brand | 21 | fuzhou | 1 || 2 | helen | 20 | quanzhou | 0 || 3 | sol | 21 | xiamen | 0 |+----+-------+-----+----------+-----+3 rows in set

那 truncate 和 delete有什么區別呢?我們來梳理下。

truncate和delete的比較

1、truncate 指的是清空表的數據、釋放表的空間,但不刪除表的架構定義(表結構)。因為不包含Where條件,所以不是刪除具體行,而是將整個表清空了。

2、而delete 語句是刪除表中的數據行,可以在后面帶上條件控制刪除的維度、范圍,它每次從表中刪除一行,會同時將該行的刪除操作作為事務保存在日志中,用于進行可能的回滾操作。

3、truncate 和 delete 一樣的地方是:只是刪除數據,涉及到的表結構及其列、約束、索引等均不會變。

4、如果被外鍵 foreign key 約束,不能使用truncate ,只能使用不帶where子句的delete語句。

5、truncate 操作會記錄在日志中,delete操作會放到 rollback segement 中,執行時要等事務被commit才會生效;所以delete 會觸發刪除觸發器(如果有的話),truncate 不會。

6、如果像上面我們測試的那樣,包含自增字段,truncate方式清空之后,自增列的值會被初始化從1開始。

delete方式要分情況判斷(如果數據全部delete,數據庫未被重啟,則按照之前max+1;數據庫重啟了,則一樣會重新開始計算自增列的初始值)。

7、還有drop,drop語句會刪除表包括 結構、數據、依賴該表的約束(constrain),觸發器(trigger)索引(index)等。

以上就是MySQL數據操作-DML語句的使用的詳細內容,更多關于MySQL dml語句的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆91精品| 麻豆精品蜜桃视频网站| 日韩中文影院| 日韩在线短视频| 欧洲亚洲一区二区三区| 99视频精品全国免费| 欧美午夜不卡| 亚洲人成高清| 国产精品中文字幕亚洲欧美| 久久不见久久见免费视频7| 国产欧美精品久久| 欧美aaaaaa午夜精品| 日本一区二区免费高清| 日韩欧美一区二区三区在线视频| 三级小说欧洲区亚洲区| 激情久久久久久久| 亚洲精品网址| 亚洲精品第一| 国产精品伊人| 免费在线小视频| 国产一区二区高清| 日韩黄色av| 国内精品伊人| 欧美/亚洲一区| 亚洲精品乱码日韩| 久久不卡日韩美女| 成人看片网站| 美女国产一区| 国产精品久久久久77777丨| 精品国产鲁一鲁****| 欧美午夜精彩| 免费日韩视频| 美腿丝袜亚洲三区| 99精品视频在线| 日韩精品视频网站| yellow在线观看网址| 丝袜a∨在线一区二区三区不卡| 欧美日韩亚洲一区三区| 伊伊综合在线| 在线国产日韩| 国产成人精品999在线观看| 精品在线播放| 国产乱人伦丫前精品视频| 久久青草久久| 久久国产欧美日韩精品| 日本综合字幕| 亚洲1区在线观看| а√在线中文在线新版| 丝袜美腿一区二区三区| 国产在线日韩精品| 人人精品人人爱| 国产一区二区三区亚洲| 亚洲作爱视频| 精品精品99| 午夜视频一区二区在线观看| 国产一区2区| 亚洲欧美日韩国产综合精品二区| 日韩av二区在线播放| 久久久久久久久久久妇女| 婷婷精品在线| 久久精品导航| 欧美亚洲福利| 日韩午夜黄色| 欧美xxxx中国| 日韩三区四区| 亚洲手机视频| 国内精品麻豆美女在线播放视频| 鲁大师影院一区二区三区| 国产成人久久| 911精品国产| 99亚洲精品| 中文字幕在线看片| 国产欧美成人| 亚洲欧美日本视频在线观看| 日韩黄色大片| 国产精品伦一区二区| 伊人久久大香线蕉av超碰演员| 麻豆国产精品| 中文字幕av亚洲精品一部二部 | 亚洲成人日韩| 美女久久久久久| 美美哒免费高清在线观看视频一区二区 | 欧美精品影院| 中文在线一区| 久久精品卡一| 国产精品99久久久久久董美香| 日韩一区精品视频| 蜜臀av免费一区二区三区| 鲁鲁在线中文| 久久a爱视频| 日本欧美韩国一区三区| 日韩影院在线观看| 欧美精品自拍| 久久精品中文| 国产精品精品| 精品国产黄a∨片高清在线| 国产欧美日韩| 欧美日一区二区在线观看| 亚洲视频国产| 欧美在线综合| 亚洲精品2区| 欧美高清不卡| 亚洲电影在线| 久久精品卡一| 欧美亚洲激情| 欧美不卡视频| 在线日韩欧美| 亚洲成人日韩| 日韩视频不卡| 美女精品在线观看| 国产一区91| 日韩视频免费| 欧美日韩国产高清| 尤物在线精品| 亚洲欧洲一区| 99免费精品| 激情婷婷久久| 亚洲欧洲一区| 国产视频一区在线观看一区免费| 亚洲大全视频| 美女国产精品| 亚洲无线观看| 日韩精品成人在线观看| 欧美伊人影院| 麻豆精品99| 国产日韩电影| 国精品一区二区| 欧美日韩视频| 男女精品网站| 日韩福利视频导航| 青草久久视频| 久久gogo国模啪啪裸体| 精品国产亚洲一区二区在线观看| 日韩成人精品一区| 久久伦理在线| 日韩一区二区久久| 综合激情网站| 国产精品欧美三级在线观看| 老色鬼精品视频在线观看播放| 国产+成+人+亚洲欧洲在线| 精品三级久久| 西西人体一区二区| 日韩不卡一二三区| 麻豆91精品91久久久的内涵| 日韩.com| 激情欧美亚洲| 色8久久久久| 精品一区视频| 蜜桃视频欧美| 日本精品久久| 中文字幕在线免费观看视频| 日韩一级精品| 国产欧美丝祙| 成人精品天堂一区二区三区| 老司机精品久久| 国产精品毛片aⅴ一区二区三区| 在线看片福利| 视频一区在线播放| 久久不卡日韩美女| 香蕉成人av| 亚洲一区二区三区高清不卡| 日韩久久一区| 国产在线观看www| 国产亚洲综合精品| 国产精品片aa在线观看| 日本国产精品| 日韩精品一区二区三区中文在线| 精品亚洲a∨| 亚洲综合精品四区| 蜜桃精品视频| 午夜国产欧美理论在线播放 | 久久亚洲道色| 欧美日韩中文字幕一区二区三区| 美国三级日本三级久久99| 国产精品久久777777毛茸茸| 日本精品影院| 日韩精品一区二区三区中文在线| 国产精品成久久久久| 亚洲综合另类| 精品久久中文| 中文字幕亚洲在线观看| 国产精品久久久久久久久久10秀| 亚洲欧美视频一区二区三区| 美女久久精品| 亚洲丝袜美腿一区| av在线资源| 日本精品一区二区三区在线观看视频 | 亚洲精品高潮| 精品视频在线一区二区在线| 99国产精品99久久久久久粉嫩| 国产日韩欧美三级| 亚洲婷婷免费| 国产精品亚洲片在线播放| 蜜臀久久99精品久久一区二区| 国产调教一区二区三区| 天堂网在线观看国产精品| 国产日韩欧美| 中文久久精品| 91麻豆国产自产在线观看亚洲| 亚洲精品乱码日韩|