主要是看《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
MySQL、MariaDB、PostgreSQL或者SQLite,需要使用LIMIT 子句。
警告:第0行
第一個被檢索的行是第0行,而不是第1行。因此,LIMIT 1 OFFSET 1會檢索第2行,而不是第1行。
提示:MySQL和MariaDB快捷鍵
MySQL和MariaDB支持簡化版的LIMIT 4 OFFSET 3語句,即LIMIT 3,4(從第四個開始,取後面的四條記錄)。
說明:並非所有的SQL實現都一樣
我加入這一節只有一個原因,就是要說明,SQL雖然通常都有相當一致的實現,但你不能想當然地認為它總是這樣。非常基本的語句往往是容易移植的,但較複雜的語句就不同了。當你針對某個問題尋找SQL解決方案時,一定要記住這一點。
二、使用註釋
在mysql:--或者是/**/ 這兩者都是可以的
作者:今孝
出處:http://www.cnblogs.com/jinxiao-pu/p/6811967.html
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。
覺得好就點個推薦把!