萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql數據操作插入 查詢 修改 刪除命令用法

mysql數據操作插入 查詢 修改 刪除命令用法

mysql數據操作通常是包括了數據幾個動作,查詢,插入,更新及刪除操作,這是我們WEB開發中常用的幾個基本動作了,下面一起來看看例子。

insert添加數據

前面我們學習了數據庫,數據庫表,接下來我們學習一下操作表中的數據。

讓我們開始利用 insert 語句來增加記錄,這是一個 SQL 語句,需要為它指定希望插入數據行的表或將值按行放入的表。如果你設置了主鍵並且自動增長,添加的時候需要把對應的主鍵值設置為null或者數字“0”。

基本語法:

insert [into] tbl_name [(col_name,...)] VALUES (pression,...)
insert [into] tbl_name SET col_name=expression

“into”一詞自 MySQL 3.22.5 以來是可選的。(這一點對其他形式的insert 語句也成立。)values表必須包含表中每列的值,並且按表中列的存放次序給出。(一般, 這就是創建表時列的定義次序。如果不能肯定的話,可使用describe tbl_name來查看這個次序。)。 看一下實例:

可指定所有列的值:

insert test01_01 values(null,'www.111cn.net','23','beij');

使用多個值表,可以一次提供多行數據:

insert test01_01 values('www.111cn.net','23','beij'),('grey','34','ah');

可以給出要賦值的那個列,然後再列出值。這對於希望建立只有幾個列需要初始設置 的記錄是很有用的:

insert test01_01(name) values('gery');
insert test01_01(name) values('mack'),('rose');
insert test01_01 set name='sara';//使用這種形式的 insert 語句不能插入多行


insert...select添加數據

當我們在上一節學習創建表時,知道可以使用select從其它表來直接創建表,甚至可以同時復制數據記錄。如果你已經擁有了一個表,你同樣可以從select語句的配合中獲益。

基本語法:

insert into tb_name select * from tb_name1;//表結構完全一致
insert into tb_name(col1) select col1 from tb_name1;//取某個值添加
insert into ... select語句滿足下列條件:

1:查詢不能包含一個order by子句

2:insert語句的目的表不能出現在select查詢部分的from子句,因為這在ANSI SQL中被禁止讓從你正在插入的表中select.問題是select將可能發 現在同一個運行期間內先前被插入的記錄。當使用子選擇子句時,情況能很容易混淆

看下面實例:

insert into test01_03 select * from test01_01;
insert into test01_03(name) select name from test01_01;


select查詢

除非最終檢索它們並利用它們來做點事情,否則將記錄放入數據庫沒什麼好處。這就 是select語句的用途,即幫助取出數據。select大概是SQL語言中最常用的語句,而且怎樣使用它也最為講究;用它來選擇記錄可能相當復雜,可能會涉及許多表中列之間 的比較。本節介紹select語句關於查詢的最基本功能。 select語句的語法如下:

select selection_list  //選擇哪些列
from table_list  //從何處選擇行
where primary_constraint  //行必須滿足什麼條件
group by grouping_columns // 怎樣對結果分組
having secondary_constraint  //行必須滿足的第二條件
order by sorting_columns //怎樣對結果排序
limit count  //結果限定

注意:所有使用的關鍵詞必須精確地以上面的順序給出。例如,一個having子句必 須跟在group by子句之後和order by子句之前

上述語法中除了select關鍵字之外,其他每樣東西都是可選的。有些數據庫需要用from關鍵字,但是MySQL允許對表達式求值而不引用任何表

普通查詢


select最簡單的形式是從一張表中檢索每樣東西

基本語法:

select columns from tb_name;

columns是列名稱,可以寫成*號,表示查詢所有列;也可以指定某個列。tb_name是你的目標數據庫表。

看兩個例子:

select * from test01_01;//查詢當前表裡所有的列的數據
select name,age from test01_01;//查詢當前表裡name列和age列的所有數據
select (2+3*4.5)/2.5;//表達式求值而不引用任何表


條件查詢

不必每次查詢都返回所有的行記錄,你能從你的表中只選擇特定的行。你可以使用where或者having,這裡我們只講where語句,因為where能實現having絕大部分功能

基本語法:

select columns from tb_name where expression..;
expression的表現形式很多,例如name='www.111cn.net',age>=20,name='www.111cn.net' or name ='www.111cn.net'等等,都可以寫在where表達式後面。

看一個例子:

select * from test01_01 where name ="www.111cn.net";//篩選出當前表中name的值是www.111cn.net的所有數據。

查詢排序

使用order by子句對查詢返回的結果按一列或多列排序。order by子句的語法 格式為:

order by column_name [asc|desc] [,…]

其中asc表示升序,為默認值,desc為降序。order by不能按text、text和image數據類型進行排序。另外,可以根據表達式進行排序

看下面實例:

select * from test01_01 order by age asc;//按照年齡升序輸出
注意desc/asc關鍵詞僅適用於緊跟在它之前的列名字


分組和行計數

group by從句根據所給的列名返回分組的查詢結果,可用於查詢具有相同值的列

基本語法:

group by col_name,….

單獨使用group by沒有任何意義,它的真正作用在於與各種組合函數配合,用於行計數

看下面實例:

select name,count(*) from test01_01 group by name;//按name分組,並且統計數量

如果你除了計數還返回一個列的值,那麼必須使用group by語句,否則無法計算記錄,產生錯誤。


多表查詢

查詢多個表,from子句列出表名,並用逗號分隔,因為查詢需要從他們兩個拉出信息

基本語法:

select t1.name,t2.name from tb_name1 as t1,tb_name2 as t2 where t1.name=t2.name;

上述代碼表示,從t1和t2中取出兩張表name相同的值。as表示為這個表取別名。

實例如下:

 select t1.name as t1name,t1.age as t1age,t2.name as t2name,t2.age as t2age
 from test01_01 as t1,test01_03 as t2 where t1.name=t2.name;


update更新數據

修改數據我們用update更新,這是最常用的更新數據語句,我們看下語法

update tbl_name SET 要更改的列

where 要更新的記錄

這裡的 where 子句是可選的,因此如果不指定的話,表中的每個記錄都被更新。

實例如下:

update test01_03 set name='www.111cn.net' where age= '20';


delete刪除數據

刪除一條語句,我們常用delete關鍵字。語法定義:

delete from tbl_name where 要刪除的記錄

where子句指定哪些記錄應該刪除。它是可選的,但是如果不選的話,將會刪除所有的記錄。這意味著最簡單的delete語句也是最危險的

實例如下:

delete from test01_01 where age=10;//刪除年齡為10的數據

copyright © 萬盛學電腦網 all rights reserved