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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...