mysql資料操作插入 查詢 修改 刪除命令用法

來源:互聯網
上載者:User

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的資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.