天天看點

4、MySQL查詢語句01

上一章内容介紹了關于MySQL資料類型組成及應用,本章将介紹MySQL中的一些查詢語句一些常用的指令和使用執行個體

一、相關指令文法格式

1.1 添加字段

<code>alter table tb_name add &lt;字段名&gt; 列類型 [not null| null][primary key][uniqe][auto_increment][default value]</code>

<code>alter table tb_name add &lt;字段定義&gt; after &lt;已有字段&gt;</code>

1.2 删除字段

<code>alter table tb_name drop 字段名</code>

1.3 修改字段類型

<code>alter table tb_name modify &lt;字段名&gt; 字段新類型;</code>

1.4 修改字段名和類型

<code>alter table tb_name change &lt;舊字段名稱&gt; &lt;新字段定義&gt;</code>

1.5 修改表名

<code>alter table OLD_tb_name rename NEW_tb_name;</code>

1.6 删除表(并避免報錯)

<code>drop table [</code><code>fi</code> <code>(not) exists] tb_name;</code>

1.7 表中行的操作-insert

<code>文法:insert [into] tb_name [(字段清單)] values|value(表達式|null|default,...),(表達式|null|default...)</code>

<code>insert [into] tb_name </code><code>set</code> <code>字段名稱=值,...</code>

<code>insert與insert ... </code><code>set</code><code>的差別是後者可以帶有子查詢。</code>

1.8 表中行的操作-update

<code>update tb_name </code><code>set</code> <code>字段名稱=值,...[where 條件];預設省略是更顯全部記錄的使用需謹慎</code>

1.9 表中行的操作-delete

<code>delete from tb_name[where 條件]</code>

<code>;同上,不加where條件限制則删除全部記錄</code>

1.10 表中行的操作-select

select 字段清單 from tb_name [as tb_alias] [where 條件];使用select 的時候*号表示全部字段;

注意:表的别名可以有效減少表明的長度;

<code>mysql&gt; </code><code>select</code> <code>xx.name,fsb.</code><code>id</code> <code>from xiaoxiong as xx,fengshenbang as fsb where xx.</code><code>id</code><code>=fsb.</code><code>id</code><code>;</code>

<code>+----------+------+</code>

<code>| name     | </code><code>id</code>   <code>|</code>

<code>| Zhangfei |    2 |</code>

<code>| zhaoyun  |    2 |</code>

<code>| liubei   |    2 |</code>

<code>| xiaoqiao |    2 |</code>

<code>8 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

總結:select傳回的是對資料庫的讀操作,而insert、update、delete隻傳回此次操作影響的記錄數;屬于寫操作。

二、讀操作指令

2.1 select檢視MySQL資料庫的系統資訊;

<code>mysql&gt; </code><code>select</code> <code>now(); 檢視目前日期和時間</code>

<code>mysql&gt; </code><code>select</code> <code>curdate(); 檢視目前日期</code>

<code>mysql&gt; </code><code>select</code> <code>curtime();檢視目前時間</code>

<code>mysql&gt; </code><code>select</code> <code>database();檢視目前預設資料庫</code>

<code>mysql&gt; </code><code>select</code> <code>version(); 檢視目前mysql資料庫版本</code>

<code>mysql&gt; </code><code>select</code> <code>user(); 檢視目前登陸使用者</code>

2.2 show檢視系統資訊

<code>mysql&gt; show processlist;檢視目前連結數</code>

<code>mysql&gt; show variables\G; 檢視目前系統資訊</code>

<code>mysql&gt; show global variables\G;檢視全局配置資訊</code>

<code>mysql&gt; show global variables like </code><code>'%version%'</code> <code>檢視系統版本号縣官起哄%表示0個或多個未知字元</code>

<code>mysql&gt; show global variables  like </code><code>'%storage_engine%'</code><code>;檢視目前預設存儲引擎</code>

<code>mysql&gt; show engines;檢視目前所支援的存儲引擎</code>

<code>mysql&gt; show status;檢視目前系統狀态</code>

<code>mysql&gt; show global status like </code><code>'Thread%'</code><code>;檢視目前線程數</code>

三、資料庫的備份和還原

3.1資料庫備份:

文法:mysqldump -u&lt;user&gt; -p&lt;password&gt; sql_name&gt;sql_name.sql

導入資料庫:source /資料庫備份檔案·;

<code>[root@node3 ~]</code><code># mysqldump -usys_neme -psys_password xiaoxiong &gt; xiaoxiong.sql備份資料庫</code>

<code>mysql&gt; create database xiaoxiong;導入資料庫之前需要先建立資料庫;</code>

<code>mysql&gt; use xiaoxiong;設定預設資料庫</code>

<code>mysql&gt; </code><code>source</code> <code>/root/xiaoxiong</code><code>.sql;導入已經備份的資料庫</code>

<code>mysql&gt; show tables;檢視已經導入的資料庫</code>

3.2 通過select的結果導出到文本檔案

<code>mysql&gt; </code><code>select</code> <code>* into outfile </code><code>'/tmp/xiaoxiong.txt'</code> <code>from xiaoxiong; </code><code>/tmp</code><code>目錄是允許sql使用者在其建立檔案的</code>

<code>mysql&gt; </code><code>select</code> <code>ID,uuid,name,sex from xiaoxiong where sex like </code><code>'M'</code> <code>into outfile </code><code>'/tmp/bak_xiaoxiong.txt'</code><code>;</code>

<code>Query OK, 3 rows affected (0.00 sec)</code>

四、邏輯運算符在MySQL中的使用

以下操作将在資料庫book中操作

4.1 檢視book資料庫所包含的table,及getable的字段

<code>mysql&gt; desc category;</code>

<code>+-----------+-------------+------+-----+---------+----------------+</code>

<code>| Field     | Type        | Null | Key | Default | Extra          |</code>

<code>| bTypeId   | int(4)      | NO   | PRI | NULL    | auto_increment |</code>

<code>| bTypeName | varchar(40) | YES  |     | NULL    |                |</code>

<code>2 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

<code>mysql&gt; mysql&gt; desc books;</code>

<code>+------------+------------------------------------------------+------+-----+---------+----------------+</code>

<code>| Field      | Type                                           | Null | Key | Default | Extra          |</code>

<code>| bId        | int(4)                                         | NO   | PRI | NULL    | auto_increment |</code>

<code>| bName      | varchar(255)                                   | YES  |     | NULL    |                |</code>

<code>| bTypeId    | enum(</code><code>'1'</code><code>,</code><code>'2'</code><code>,</code><code>'3'</code><code>,</code><code>'4'</code><code>,</code><code>'5'</code><code>,</code><code>'6'</code><code>,</code><code>'7'</code><code>,</code><code>'8'</code><code>,</code><code>'9'</code><code>,</code><code>'10'</code><code>) | YES  |     | NULL    |                |</code>

<code>| publishing | varchar(255)                                   | YES  |     | NULL    |                |</code>

<code>| price      | int(4)                                         | YES  |     | NULL    |                |</code>

<code>| pubDate    | </code><code>date</code>                                           <code>| YES  |     | NULL    |                |</code>

<code>| author     | varchar(30)                                    | YES  |     | NULL    |                |</code>

<code>| ISBN       | varchar(255)                                   | YES  |     | NULL    |                |</code>

8 rows in set (0.00 sec)

4.2 通過條件限制語句進行查詢

查找出價格在40到70之間的書籍名字,并列出價格和出版社

<code>mysql&gt; </code><code>select</code> <code>bName,price,publishing from books where price&gt;40 and price&lt;70;</code>

4.3 算術運算符的應用

MySQL依舊支援大于&gt;,小于&lt;,等于=,不等于!=,大于等于&gt;=和小于等于&lt;=等

in 運算符适用于where表達式中,支援多個選擇

<code>文法:</code><code>select</code> <code>* from tb_name where &lt;字段&gt; </code><code>in</code> <code>(value1,value2,...)</code>

<code>mysql&gt; </code><code>select</code> <code>bName,price,publishing from books where price </code><code>in</code> <code>(40,50,60,70);</code>

not in與in作用相反;

<code>mysql&gt; </code><code>select</code> <code>bName,price,publishing from books where price not </code><code>in</code> <code>(40,50,60,70);</code>

五、排序操作-order by

升序:MySQL中預設排序為升序輸出asc

降序:order by "排序字段" desc

<code>mysql&gt; </code><code>select</code> <code>bName,price from books where price &gt;40 and price&lt;60 order by price desc;</code>

<code>mysql&gt; </code><code>select</code> <code>bName,price from books where price </code><code>in</code><code>(40,50,60,70) order by price desc;</code>

<code>+--------------------------------------+-------+</code>

<code>| bName                                | price |</code>

<code>| ASP資料庫系統開發執行個體導航            |    60 |</code>

<code>| Delphi 5程式設計與控件參考           |    60 |</code>

<code>| Illustrator 10完全手冊               |    50 |</code>

<code>| FreeHand 10基礎教程                  |    50 |</code>

<code>| 網站設計全程教程                     |    50 |</code>

<code>6 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

六、範圍運算

<code>&lt;br data-filtered=</code><code>"filtered"</code><code>&gt;</code>

<code>[not] between ... and ...;</code>

<code>between ... and ...使用相當于大于并且等于表達式的運算,但表意不明;</code>

<code>例如:</code>

<code>mysql&gt; </code><code>select</code> <code>bName,price from books where price between 40 and 60 order by price desc;</code>

七、模糊字段查詢的使用-like

文法: &lt;字段&gt; [not]like '通配符' 其中%表示多個字元的意思

例如:查找出表books中帶有網頁字樣的書名,并列印出來

<code>mysql&gt; </code><code>select</code> <code>bName from books where bName like </code><code>'%網頁%'</code><code>;</code>

<code>+---------------------------------------------------------+</code>

<code>| bName                                                   |</code>

<code>| 網頁樣式設計-CSS                                       |</code>

<code>| Dreamweaver 4網頁制作                                   |</code>

<code>| Fireworks 4網頁圖形制作                                 |</code>

<code>| 網頁界面設計藝術教程                                    |</code>

<code>| Frontpage 2000& ASP 網頁設計技巧與網站維護             |</code>

<code>5 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

八、子查詢的應用

文法:在查詢語句中select的where條件中又出現了select查詢的嵌套語句。

<code>mysql&gt; </code><code>select</code> <code>bName,bTypeId,price from books where bTypeId=(</code><code>select</code> <code>bTypeId from category where bTypeName=</code><code>'黑客'</code><code>);</code>

<code>+--------------------------+---------+-------+</code>

<code>| bName                    | bTypeId | price |</code>

<code>| 黑客與網絡安全           | 6       |    41 |</code>

<code>| 黑客攻擊防範秘笈         | 6       |    44 |</code>

九、限制查詢結果顯示的條目

文法:select * from tb_name LIMIT [n,]m;

limit子句,可以用于select語句傳回指定的記錄數,LIMIT接收一個或兩個參數,參數必須是一個整數常量。如果給定連個參數則第一個參數指定的是第一個傳回記錄行的偏移量,第二個則表示指定傳回記錄行的最大數目。初始行記錄偏移量為0;

查找處books表中第5行到第10行的記錄,共6個數字,

<code>mysql&gt; mysql&gt; </code><code>select</code> <code>* from books limit 4,6;</code>

<code>+-----+-------------------------------+---------+-----------------------------------+-------+------------+-----------+------------+</code>

<code>| bId | bName                         | bTypeId | publishing                        | price | pubDate    | author    | ISBN       |</code>

<code>|   5 | 黑客攻擊防範秘笈              | 6       | 北京騰圖電子出版社                |    44 | 2003-06-29 | 趙雷雨    | 7120000233 |</code>

<code>|   6 | Dreamweaver 4入門與提高       | 2       | 清華大學出版社                    |    44 | 2004-06-01 | 嶽玉博    | 7505397699 |</code>

<code>|   7 | 網頁樣式設計-CSS             | 2       | 人民郵電出版社                    |    45 | 2002-03-01 | 張曉陽    | 7505383663 |</code>

<code>|   8 | Internet操作技術              | 7       | 清華大學出版社                    |    45 | 2002-02-01 | 肖銘      | 7121003023 |</code>

<code>|   9 | Dreamweaver 4網頁制作         | 2       | 清華大學出版社                    |    45 | 2004-04-01 | 黃宇      | 7505380796 |</code>

<code>|  10 | 3D MAX 3.0 創作效果百例       | 3       | 北京萬水電子資訊出版社            |    45 | 2002-09-01 | 耿影      | 7505380796 |</code>

9.2檢視所有書籍中價格最低的書名和價格

<code>mysql&gt; </code><code>select</code> <code>bName,price from books order by price limit 1;</code>

<code>+-----------------------+-------+</code>

<code>| bName                 | price |</code>

<code>| 網站制作直通車        |    34 |</code>

<code>1 row </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

十、綜合應用

10.1 顯示出bId,bName,bTypeId内容,條件:價格要比電子工業出版社中的書中最便宜的書還要便宜;

<code>mysql&gt; </code><code>select</code> <code>bId,bName,bTypeId from books where price &lt; (</code><code>select</code> <code>price from books where publishing=</code><code>"電子工業出版社"</code><code>order by price asc limit 1);</code>

<code>+-----+--------------------------------------------------------+---------+</code>

<code>| bId | bName                                                  | bTypeId |</code>

<code>|   1 | 網站制作直通車                                         | 2       |</code>

<code>|   2 | 黑客與網絡安全                                         | 6       |</code>

<code>|   3 | 網絡程式與設計-asp                                    | 2       |</code>

<code>|   4 | pagemaker 7.0短期教育訓練教程                              | 9       |</code>

<code>|   5 | 黑客攻擊防範秘笈                                       | 6       |</code>

<code>|   6 | Dreamweaver 4入門與提高                                | 2       |</code>

<code>|   7 | 網頁樣式設計-CSS                                      | 2       |</code>

<code>|   8 | Internet操作技術                                       | 7       |</code>

<code>|   9 | Dreamweaver 4網頁制作                                  | 2       |</code>

<code>|  10 | 3D MAX 3.0 創作效果百例                                | 3       |</code>

<code>|  11 | Auto CAD職業技能教育訓練教程                               | 10      |</code>

<code>|  12 | Fireworks 4網頁圖形制作                                | 2       |</code>

<code>|  13 | 自己動手建立企業區域網路                                 | 8       |</code>

<code>|  14 | 頁面特效精彩執行個體制作                                   | 2       |</code>

<code>|  15 | 平面設計制作整合案例詳解-頁面設計卷                   | 2       |</code>

<code>|  16 | Illustrator 10完全手冊                                 | 9       |</code>

<code>|  17 | FreeHand 10基礎教程                                    | 9       |</code>

<code>|  18 | 網站設計全程教程                                       | 2       |</code>

<code>|  19 | 動态頁面技術-HTML 4.0使用詳解                         | 2       |</code>

<code>|  20 | Auto CAD 3D模型大師                                    | 10      |</code>

<code>|  21 | Linux傻瓜書                                            | 4       |</code>

<code>|  22 | 網頁界面設計藝術教程                                   | 2       |</code>

<code>|  23 | Flash MX 标準教程                                      | 2       |</code>

<code>|  24 | Auto CAD 2000 應用及執行個體基集錦                         | 10      |</code>

<code>|  25 | Access 2000應用及執行個體基集錦                            | 1       |</code>

<code>mysql&gt; </code><code>select</code> <code>bName,price from books where price&lt;(</code><code>select</code> <code>price from books where publishing=</code><code>"電子工業出版社"</code> <code>order by price asc limit 0,1);</code>

10.2 多子句查詢-all

與列出的最小或最大值進行比較

<code>mysql&gt; </code><code>select</code> <code>* from books where price&lt;all(</code><code>select</code> <code>price from books where publishing=</code><code>"電子工業出版社"</code><code>);</code>

版權聲明:原創作品,如需轉載,請注明出處。否則将追究法律責任

本文轉自 CARYFLASH 51CTO部落格,原文連結:http://blog.51cto.com/maoxiaoxiong/1982162