SQL必知必會 -------- SELECT、註釋

来源:http://www.cnblogs.com/jinxiao-pu/archive/2017/05/05/6811967.html
-Advertisement-
Play Games

主要是看《SQL必知必會》第四版的書,而寫的一些SQL筆記,紅色的是方便以後查詢的sql語句,工作中主要是使用mysql資料庫,所以筆記也是圍繞mysql而寫的。 下文調試的數據表sql語句,如果要嘗試的調試的話可以複製過去運行即可 1 # Host: localhost (Version: 5.5 ...


主要是看《SQL必知必會》第四版的書,而寫的一些SQL筆記,紅色的是方便以後查詢的sql語句,工作中主要是使用mysql資料庫,所以筆記也是圍繞mysql而寫的。

下文調試的數據表sql語句,如果要嘗試的調試的話可以複製過去運行即可

  1 # Host: localhost  (Version: 5.5.40)
  2 # Date: 2017-05-05 13:45:46
  3 # Generator: MySQL-Front 5.3  (Build 4.120)
  4 
  5 /*!40101 SET NAMES utf8 */;
  6 
  7 #
  8 # Structure for table "customers"
  9 #
 10 
 11 DROP TABLE IF EXISTS `customers`;
 12 CREATE TABLE `customers` (
 13   `cust_id` char(10) NOT NULL,
 14   `cust_name` char(50) NOT NULL,
 15   `cust_address` char(50) DEFAULT NULL,
 16   `cust_city` char(50) DEFAULT NULL,
 17   `cust_state` char(5) DEFAULT NULL,
 18   `cust_zip` char(10) DEFAULT NULL,
 19   `cust_country` char(50) DEFAULT NULL,
 20   `cust_contact` char(50) DEFAULT NULL,
 21   `cust_email` char(255) DEFAULT NULL,
 22   PRIMARY KEY (`cust_id`)
 23 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 24 
 25 #
 26 # Data for table "customers"
 27 #
 28 
 29 /*!40000 ALTER TABLE `customers` DISABLE KEYS */;
 30 INSERT INTO `customers` VALUES ('1000000001','Village Toys','200 Maple Lane','Detroit','MI','44444','USA','John Smith','[email protected]'),('1000000002','Kids Place','333 South Lake Drive','Columbus','OH','43333','USA','Michelle Green',NULL),('1000000003','Fun4All','1 Sunny Place','Muncie','IN','42222','USA','Jim Jones','[email protected]'),('1000000004','Fun4All','829 Riverside Drive','Phoenix','AZ','88888','USA','Denise L. Stephens','[email protected]'),('1000000005','The Toy Store','4545 53rd Street','Chicago','IL','54545','USA','Kim Howard',NULL);
 31 /*!40000 ALTER TABLE `customers` ENABLE KEYS */;
 32 
 33 #
 34 # Structure for table "orderitems"
 35 #
 36 
 37 DROP TABLE IF EXISTS `orderitems`;
 38 CREATE TABLE `orderitems` (
 39   `order_num` int(11) NOT NULL,
 40   `order_item` int(11) NOT NULL,
 41   `prod_id` char(10) NOT NULL,
 42   `quantity` int(11) NOT NULL,
 43   `item_price` decimal(8,2) NOT NULL,
 44   PRIMARY KEY (`order_num`,`order_item`),
 45   KEY `FK_OrderItems_Products` (`prod_id`)
 46 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 47 
 48 #
 49 # Data for table "orderitems"
 50 #
 51 
 52 /*!40000 ALTER TABLE `orderitems` DISABLE KEYS */;
 53 INSERT INTO `orderitems` VALUES (20005,1,'BR01',100,5.49),(20005,2,'BR03',100,10.99),(20006,1,'BR01',20,5.99),(20006,2,'BR02',10,8.99),(20006,3,'BR03',10,11.99),(20007,1,'BR03',50,11.49),(20007,2,'BNBG01',100,2.99),(20007,3,'BNBG02',100,2.99),(20007,4,'BNBG03',100,2.99),(20007,5,'RGAN01',50,4.49),(20008,1,'RGAN01',5,4.99),(20008,2,'BR03',5,11.99),(20008,3,'BNBG01',10,3.49),(20008,4,'BNBG02',10,3.49),(20008,5,'BNBG03',10,3.49),(20009,1,'BNBG01',250,2.49),(20009,2,'BNBG02',250,2.49),(20009,3,'BNBG03',250,2.49);
 54 /*!40000 ALTER TABLE `orderitems` ENABLE KEYS */;
 55 
 56 #
 57 # Structure for table "orders"
 58 #
 59 
 60 DROP TABLE IF EXISTS `orders`;
 61 CREATE TABLE `orders` (
 62   `order_num` int(11) NOT NULL,
 63   `order_date` datetime NOT NULL,
 64   `cust_id` char(10) NOT NULL,
 65   PRIMARY KEY (`order_num`),
 66   KEY `FK_Orders_Customers` (`cust_id`)
 67 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 68 
 69 #
 70 # Data for table "orders"
 71 #
 72 
 73 /*!40000 ALTER TABLE `orders` DISABLE KEYS */;
 74 INSERT INTO `orders` VALUES (20005,'2004-05-01 00:00:00','1000000001'),(20006,'2004-01-12 00:00:00','1000000003'),(20007,'2004-01-30 00:00:00','1000000004'),(20008,'2004-02-03 00:00:00','1000000005'),(20009,'2004-02-08 00:00:00','1000000001');
 75 /*!40000 ALTER TABLE `orders` ENABLE KEYS */;
 76 
 77 #
 78 # Structure for table "products"
 79 #
 80 
 81 DROP TABLE IF EXISTS `products`;
 82 CREATE TABLE `products` (
 83   `prod_id` char(10) NOT NULL,
 84   `vend_id` char(10) NOT NULL,
 85   `prod_name` char(255) NOT NULL,
 86   `prod_price` decimal(8,2) NOT NULL,
 87   `prod_desc` text,
 88   PRIMARY KEY (`prod_id`),
 89   KEY `FK_Products_Vendors` (`vend_id`)
 90 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 91 
 92 #
 93 # Data for table "products"
 94 #
 95 
 96 /*!40000 ALTER TABLE `products` DISABLE KEYS */;
 97 INSERT INTO `products` VALUES ('BNBG01','DLL01','Fish bean bag toy',3.49,'Fish bean bag toy, complete with bean bag worms with which to feed it'),('BNBG02','DLL01','Bird bean bag toy',3.49,'Bird bean bag toy, eggs are not included'),('BNBG03','DLL01','Rabbit bean bag toy',3.49,'Rabbit bean bag toy, comes with bean bag carrots'),('BR01','BRS01','8 inch teddy bear',5.99,'8 inch teddy bear, comes with cap and jacket'),('BR02','BRS01','12 inch teddy bear',8.99,'12 inch teddy bear, comes with cap and jacket'),('BR03','BRS01','18 inch teddy bear',11.99,'18 inch teddy bear, comes with cap and jacket'),('RGAN01','DLL01','Raggedy Ann',4.99,'18 inch Raggedy Ann doll'),('RYL01','FNG01','King doll',9.49,'12 inch king doll with royal garments and crown'),('RYL02','FNG01','Queen doll',9.49,'12 inch queen doll with royal garments and crown');
 98 /*!40000 ALTER TABLE `products` ENABLE KEYS */;
 99 
100 #
101 # Structure for table "vendors"
102 #
103 
104 DROP TABLE IF EXISTS `vendors`;
105 CREATE TABLE `vendors` (
106   `vend_id` char(10) NOT NULL,
107   `vend_name` char(50) NOT NULL,
108   `vend_address` char(50) DEFAULT NULL,
109   `vend_city` char(50) DEFAULT NULL,
110   `vend_state` char(5) DEFAULT NULL,
111   `vend_zip` char(10) DEFAULT NULL,
112   `vend_country` char(50) DEFAULT NULL,
113   PRIMARY KEY (`vend_id`)
114 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
115 
116 #
117 # Data for table "vendors"
118 #
119 
120 /*!40000 ALTER TABLE `vendors` DISABLE KEYS */;
121 INSERT INTO `vendors` VALUES ('BRE02','Bear Emporium','500 Park Street','Anytown','OH','44333','USA'),('BRS01','Bears R Us','123 Main Street','Bear Town','MI','44444','USA'),('DLL01','Doll House Inc.','555 High Street','Dollsville','CA','99999','USA'),('FNG01','Fun and Games','42 Galaxy Road','London',NULL,'N16 6PS','England'),('FRB01','Furball Inc.','1000 5th Avenue','New York','NY','11111','USA'),('JTS01','Jouets et ours','1 Rue Amusement','Paris',NULL,'45678','France');
122 /*!40000 ALTER TABLE `vendors` ENABLE KEYS */;
MySQL語句

一、select語句

1.檢索單個列SELECT prod_name FROM Products

提示:未排序數據
如果你自己試驗這個查詢,可能會發現顯示輸出的數據順序與這裡的不同。出現這種情況很正常。如果沒有明確排序查詢結果(下一課介紹),則返回的數據沒有特定的順序。返回數據的順序可能是數據被添加到表中的順序,也可能不是。只要返回相同數目的行,就是正常的。如上的一條簡單SELECT語句將返回表中的所有行。數據沒有過濾(過濾將得出結果集的一個子集),也沒有排序。以後幾課將討論這些內容。
提示:結束SQL語句
多條SQL語句必須以分號(;)分隔。多數DBMS不需要在單條SQL語句後加分號,但也有DBMS可能必須在單條SQL語句後加上分號。當然,如果願意可以總是加上分號。事實上,即使不一定需要,加上分號也肯定沒有壞處。
提示:SQL語句和大小寫
請註意,SQL語句不區分大小寫,因此SELECT與select是相同的。同樣,寫成Select也沒有關係。許多SQL開發人員喜歡對SQL關鍵字使用大寫,而對列名和表名使用小寫,這樣做使代碼更易於閱讀和調試。不過,一定要認識到雖然SQL是不區分大小寫的,但是表名、列名和值可能有所不同(這有賴於具體的DBMS及其如何配置)。
提示:使用空格
在處理SQL語句時,其中所有空格都被忽略。SQL語句可以寫成長長的一行,也可以分寫在多行。下麵這三種寫法的作用是一樣的。

2.檢索多個列SELECT prod_id,prod_name,prod_price FROM Products

提示:當心逗號
在選擇多個列時,一定要在列名之間加上逗號,但最後一個列名後不加。如果在最後一個列名後加了逗號,將出現錯誤。

3.檢索所有列SELECT * FROM Products

警告:使用通配符
一般而言,除非你確實需要表中的每一列,否則最好別使用*通配符。雖然使用通配符能讓你自己省事,不用明確列出所需列,但檢索不需要的列通常會降低檢索和應用程式的性能。
提示:檢索未知列
使用通配符有一個大優點。由於不明確指定列名(因為星號檢索每一列),所以能檢索出名字未知的列。

4.檢索不同的值SELECT DISTINCT vend_id FROM Products

如果有重覆的的記錄怎麼辦?辦法就是使用DISTINCT關鍵字,顧名思義,它指示資料庫只返回不同的值。

警告:不能部分使用DISTINCT
DISTINCT關鍵字作用於所有的列,不僅僅是跟在其後的那一列。例如,你指定SELECT DISTINCT vend_id, prod_price,這兩列都不同才算是不重覆的記錄。

5.限制結果:不同的資料庫有比較大的不同之處

我主要看mysl:SELECT vend_id FROM Products LIMIT 3

MySQLMariaDBPostgreSQL或者SQLite,需要使用LIMIT 子句。

警告:第0
第一個被檢索的行是第0行,而不是第1行。因此,LIMIT 1 OFFSET 1會檢索第2行,而不是第1行。
提示:MySQLMariaDB快捷鍵
MySQLMariaDB支持簡化版的LIMIT 4 OFFSET 3語句,即LIMIT 3,4從第四個開始,取後面的四條記錄)。
說明:並非所有的SQL實現都一樣
我加入這一節只有一個原因,就是要說明,SQL雖然通常都有相當一致的實現,但你不能想當然地認為它總是這樣。非常基本的語句往往是容易移植的,但較複雜的語句就不同了。當你針對某個問題尋找SQL解決方案時,一定要記住這一點。

二、使用註釋

在mysql:--或者是/**/ 這兩者都是可以的

作者:今孝
出處:http://www.cnblogs.com/jinxiao-pu/p/6811967.html 
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。

覺得好就點個推薦把!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.查看索引 (1)單位是GB SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024*1024), 2), ' GB') AS 'Total Index Size' FROM information_schema.TABLES WHERE table_sc ...
  • MongoDB 是一款NoSql資料庫,沒有固定的模式,即同一個集合中的不同文檔結構可以不同,如:第一條記錄{name:”xiaoming”},第二條記錄:{name:”xiaoli”,age:15},這在關係型資料庫中是無法實現的。對於MongoDB,其中:collections即集合相當於關係型 ...
  • 一直以來,MySQL的應用和學習環境都是MySQL 5.6和之前的版本,也沒有去關註新版本MySQL 5.7的變化和新特性。今天幫人處理忘記root密碼的時時候,發現以前的方法不奏效了。具體情況如下所示: 案例環境如下: 操作系統 : Red Hat Enterprise Linux Server ... ...
  • MySQL集群PXC的搭建 最近公司某客戶要求我們的資料庫搭建PXC集群以保證他們的系統高性能和搞穩定性 以後花費了一些時間去搭建和測試,也踩過一些坑,準備分享出來 系統:centos6.6PXC:5.6.26 建議關閉iptables, 4個埠 3306,4444,4567,4568pxc環境所 ...
  • 背景 今天舉辦的 Data Amp 大會上,微軟向開發者們強調了 數據如何影響他們的應用和服務 ,順道還宣佈了幾個小新聞。這個免費的線上研討會不僅展示了未來的機器學習遠景,還發佈了 SQL Server 2017、推出了 面部認知服務 API 和 Azure 分析服務。顯然,SQL Server 2 ...
  • 之前從mysql 5.6的時候,mysql 還沒有密碼策略這個東東,所以我們每個用戶的密碼都可以隨心所欲地設置,什麼123 ,abc 這些,甚至你搞個空格,那也是OK的。 而mysql.user 表裡面也保存有password 的欄位進行標識這個是密碼的位置。 但是當升級到了MySQL 5.7 的時 ...
  • 註冊ocx時出現ole初始化錯誤或OCX載入錯誤 問題原因:安裝文件不能放在包含空格的文件夾名字中 解決辦法:oracle安裝的時候最好安裝在盤符的根目錄下,不要使用中文 ora-00922(缺少或無效選項) 問題原因:配置管理員密碼時,採用了數字開頭的密碼 解決辦法:將密碼改為英文開頭(配置密碼時 ...
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重覆值時,會觸發此異常。 ORA-00017: 請求會話以設置跟蹤事件 ORA-00018: 超出最大會話數 ORA-00019: 超出最大會話許可數 ORA-00020: 超出最大進程數 () ORA-00021... ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...