SQL語句系列 1、SQL語句之行操作 2、SQL語句之表操作 3、SQL語句之資料庫操作 4、SQL語句之用戶管理 關係型資料庫的存儲形式 在關係型資料庫中,數據都是以類似於Excel表格的形式存儲(如下圖),我們將“列名”稱作“欄位”,一條數據指一行存儲的信息,對這一行的數據主要的操作有“增、刪 ...
SQL語句系列
關係型資料庫的存儲形式
在關係型資料庫中,數據都是以類似於Excel表格的形式存儲(如下圖),我們將“列名”稱作“欄位”,一條數據指一行存儲的信息,對這一行的數據主要的操作有“增、刪、改、查”。
以上就是資料庫中的一張表,一共5行,兩個欄位(nid、name),接下來要介紹如何再添加新的一行數據,如何刪除、更改以及查詢已有的數據。
行操作——增
增加數據主要用到的語句是insert into…… values…… ,一共有三種插入的方式:
如果想跟著我一起操作,可先在自己的資料庫中執行以下操作(複製命令執行即可,語句含義會在稍後講解):
SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for `test` -- ---------------------------- DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `nid` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`nid`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of `test` -- ---------------------------- BEGIN; INSERT INTO `test` VALUES ('1', '小李'), ('2', '小花'), ('3', '小陳'), ('4', '小妞'), ('5', '小紅'); COMMIT; -- ---------------------------- -- Table structure for `test2` -- ---------------------------- DROP TABLE IF EXISTS `test2`; CREATE TABLE `test2` ( `nid` int(11) NOT NULL AUTO_INCREMENT, `age` int(11) NOT NULL, PRIMARY KEY (`nid`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of `test2` -- ---------------------------- BEGIN; INSERT INTO `test2` VALUES ('1', '22'), ('2', '34'), ('3', '45'), ('4', '23'); COMMIT; SET FOREIGN_KEY_CHECKS = 1;
(1)插入一行數據 (“--”後面跟註釋,程式不會運行之後的內容)
insert into 表(欄位名,欄位名……) values (值,值……); --SQL語句規定每條命令末尾必須加分號(;) --如下圖使用 : insert into test(name) values ("新插入1"); --該語句在test表中插入了一條“name”欄位為“新插入1”的數據 --至於為什麼明明沒有插入”nid“這個欄位,但其卻自動填充了6,這個後面會講。 select * from test; --查看有沒有插進去
(2)插入多行數據(values後面每條數據之間用逗號“,”隔開即可)
insert into 表(欄位名,欄位名……) values (值,值……),(值,值……),(值,值……),(值,值……),(值,值……)……; 如下圖使用 insert into test(name) values ("新插入2"), ("新插入3"), ("新插入4"), ("新插入5"), ("新插入6"), ("新插入7"), ("新插入8"); select * from test; --查看有沒有插入成功
(3)從另外一個表中插入數據
insert into 表1(表1欄位名,表1欄位名……) select 表2欄位名,表2欄位名…… from 表2
select……from……語句是查詢語句,這裡的意思是將從表2查詢出的欄位插入到表1中,例如,我可以用下麵的語句將test中的所有數據再重新插入進test這個表中:
insert into test(name) select name from test; select * from test; --查看是否成功
這個語句可能在你的電腦上實驗的時候會遇到問題,造成問題的原因絕大多數可能是欄位的數據類型不符合要求。例如,要將表2中的name列插入到表1中的age列中,由於name是varchar類型,而age是int類型,varchar類型無法轉換成int類型,所以程式報錯。
insert test2(age) select name from test; --將test中的name插入到test2中的age
但是如果將age列插入到name列中程式不會報錯,因為int類型可以轉換成varchar類型。
insert test(name) select age from test2; --將test2中的age插入到test中的name select * from test limit 26,5; --只查看最後幾條是否成功