查詢數據 SELECT
1、檢索單列
select prod_name from products;
注意:
1、 返回數據沒有排序
2、多條SQL 語句必須使用分號(;) 分隔
3、在處理SQL 語句時,其中所有空格都被忽略
4、SQL 可以一行也可以多行,建議將SQL語句分為多行,這樣更易閱讀和調試。
5、SQL語句不區分大小寫,但是建議SQL 關鍵字使用大寫,所有列和表名使用小寫,這樣便於閱讀調試,還有的就是MySQL4.1 及之前的版本中,標識符(如數據庫名稱,表名,列名),默認是區分大小寫的,4.1 之后默認是不區分大小寫的。
2、檢索多列
在檢索多列的時候,一定要在列名之間加上逗號,但是最后一個列名不要添加逗號,不然報錯
select prod_id,prod_name,prod_price from products;
數據的表示: SQL 語句一般返回原始的、無格式的數據,實際中一般是使用SQL查出原始的數據,然后使用程序進行提供格式(如給錢加個¥)
3、檢索所有列
1、是將所有的字段全部列出進行查詢
2、是使用通配符(*),表示所有的列
select * from products;
建議: (*) 能不用最好不用,因為會降低檢索和應用程序的性能。當然在你對這表不熟悉,這個時候* 就很重要會把表中所有的列檢出來,然后再不斷優化
4、檢索不同的行
如:在你進行單列查詢的時候,會把單列的所有的行都返回出來,這個時候可能會有一些行是重復的,也不方便了解, 就想上述的 vend_id (供應商編號)這一列中的數據好多行是重復的,不變查看,我就想知道這批商品主要有哪些供應商,怎么搞
這個時候 DISTINCT (distinct)關鍵字孕育而出,意味只返回不同的值
select distinct vend_id from products;
注意:
distinct 關鍵字應用於所有列而不僅是前置他的列,建議只在單列查詢的時候使用
如下面:兩個都用報錯,只用一個沒用
5、限制結果 (limit)
select 語句返回所有的匹配的行,但是你要是不需要那么多,需要返回特定的行要怎么辦來
這個時候 LIMIT 關鍵字就出來了,你要是了解的較多可能會聽過 TOP 關鍵字返回前幾行,不過這個SQLServer 支持,MySQL不支持
DQL語句語法格式:
-- <> 內為需要添加的內容,[] 內為可選內容 select <字段名列表> from <表名或視圖名> [where<查詢條件>] [group by<查詢條件>] [order by<查詢條件>] [LIMIT [位置偏移量],行數]
[LIMIT [位置偏移量],行數]中位置偏移量指從結果集中第幾行數據開始顯示(第一行記錄的位置偏移量是0,2的話就是1,以此類推),此參數可選,當省略 時默認從第一條記錄開始顯示。
行數指的是顯示記錄的行數
Limit 子句可以實現數據的分頁查詢,即從一批結果數據中規定每頁顯示多少條數據,也可以查詢中間某頁記錄。limit子句常與order by 子句一塊使用,用來先對查詢結果進行排序,然后根據limit 的參數顯示其中的部分數據。
從簡到難
-- 返回前五行 select prod_name from products limit 5;
-- 從第5行開始,檢索5行 limit 5,5 第一個數表示開始位置,第二個數表示檢索行數 select prod_name from products limit 5,5;
注意:
1、從0 開始算數,檢索出來的第一行為0而不是1(理工科就要無中生有,從零開始)
2、當需要檢索的行數大於擁有的時,只返回符合的
3、mysql 5 后支持 limit 4 offset 2,與limit 2,4 一個意思,表示從行2開始取4行
6、完全限定
就是通過名字來引用列,通過庫引用表
-- 查詢bookstu 數據庫中的products,products 表的prod_name 字段的所有行 select products.prod_name from bookstu.products;
7、在查詢中使用常量列