數(shù)據(jù)庫基礎(chǔ)中的MySQL語句有哪些,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
成都創(chuàng)新互聯(lián)于2013年成立,公司以成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計(jì)等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶近千家,涉及國內(nèi)多個(gè)省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗(yàn)。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計(jì)、宣傳推廣等服務(wù)。 通過專業(yè)的設(shè)計(jì)、獨(dú)特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。
數(shù)據(jù)庫與數(shù)據(jù)庫軟件:
數(shù)據(jù)庫是數(shù)據(jù)容器,可以理解為文件,數(shù)據(jù)庫軟件是數(shù)據(jù)庫管理系統(tǒng),
提供用戶對(duì)數(shù)據(jù)庫文件的操作
schama(模式):
關(guān)于數(shù)據(jù)庫和表的布局及特性的信息
列(column):
表由列組成,列中存儲(chǔ)著表中某部分的信息。
行(row):
表中的數(shù)據(jù)是按行存儲(chǔ)的
主鍵:
表中每一行都應(yīng)該有可以唯一標(biāo)識(shí)自己的一列,稱為主鍵
主鍵可以由單個(gè)列構(gòu)成,也可以由多個(gè)列構(gòu)成
SQL:
結(jié)構(gòu)化查詢語言,用于和數(shù)據(jù)庫通信
查詢數(shù)據(jù)庫和表命令:
SHOW DATABASES;
SHOW TABLES;
SHOW COLUMNS FROM COLLATIONS; //顯示COLLATIONS中的所有列
auto_increment //自動(dòng)增量,每添加一個(gè)行,該值自動(dòng)加一
SELECT prod_name FROM products; //從prducts中檢索出prod_name
SELECT prod_id,prod_name FROM products; //檢索多個(gè)列
SELECT DISTINCT vend_id from products; //返回一列中不同的值(過濾掉相同的)
SELECT prod_name FROM products LIMIT 5; //限制最多輸出5行
SELECT prod_name FROM products LIMIT 4,5; //限制最多從行4輸出5行
SELECT products.prod_name FROM products; //完全限定
SELECT products.prod_name FROM crashcourse.products; //完全限定(列和表)
SELECT prod_name FROM products ORDER BY prod_name; //排序
SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price,prod_name; //對(duì)多個(gè)列排序(如果prod_price存在重復(fù),就對(duì)prod_name重新排序)
SELECT prod_name FROM products ORDER BY prod_name DESC/ESC; //排序(升序或降序)
SELECT prod_id,prod_price,prod_name FROM products WHERE prod_price = 2.5; //使用where過濾(= 《 <> betown等操作)
SELECT prod_id,prod_price,prod_name FROM products WHERE prod_price BETWEEN 5 AND 10;//在中間
SELECT prod_id,prod_price,prod_name FROM products WHERE prod_price vend_id = 1003 AND prod_price<=10 3="" 123="" 2005="" and="" select="" prod_name="" from="" products="" where="" vend_id="1003;" prod_price="" not="" like="" vendors="" order="" by="" as="" vend_title="" item_price="" expanded_price="" orderitems="" order_num="20005;" vend_name_upcase="" left="" abc="" right="" length="" lower="" upper="" ltrim="" rtrim="" substring="" bc1="" concat="" abc123xyz="" orders="" between="" avg_price="" num_cust="" max_price="" items_ordered="" total_price="" distinct="" price_avg="" num_prods="" group="" having="" cust_id="">=2;
使用ORDER BY 實(shí)現(xiàn)分組的排序
SELECT order_num,SUM(quantity*item_price) AS ordertotal FROM orderitems GROUP BY order_num HAVING SUM(quantity*item_price)>=50 ORDER BY ordertotal;
子查詢可以用來減少查詢的語句條數(shù)
例如:
SELECT order_num FROM orderitems WHERE prod_id = 'TNT2'; //返回結(jié)果20005,20007
SELECT cust_id FROM orders WHERE order_num IN(20005,20007)
SELECT cust_id FROM orders WHERE order_num IN(SELECT order_num FROM orderitems WHERE prod_id = 'TNT2');
計(jì)算字段使用子查詢:
SELECT cust_name,cust_state,(SELECT COUNT(*) FROM orders WHERE orders.cust_id = customers.cust_id) AS orders FROM customers ORDER BY cust_name;
聯(lián)結(jié):
(主鍵與外鍵)
分表是為了更好的存儲(chǔ)與提升可伸縮性,但在使用select查詢的時(shí)候就不得不采用聯(lián)結(jié)的方法
SELECT vend_name,prod_name,prod_price FROM vendors INNER JOIN products ON vendors.vend_id = products.vend_id'
表別名能夠在單挑SELECT語句中不止一次的引用相同的表
SELECT prod_id,prod_name FROM products WHERE vend_id = (SELECT vend_id FROM products WHERE prod_id = 'DTNTR');
自聯(lián)結(jié)方式:
SELECT p1.prod_id,p1.prod_name FROM products AS p1,products AS p2 WHERE p1.vend_id = p2.vend_id AND p2.prod_id = 'DTNTR';
外部聯(lián)結(jié)
聯(lián)結(jié)包含在相關(guān)表中沒有關(guān)聯(lián)行的行,這種類型的聯(lián)結(jié)成為外部聯(lián)結(jié)
SELECT customers.cust_id,orders.order_num FROM customers LEFT OUTER JOIN orders ON customers.cust_id = orders.cust_id;
左向外聯(lián)結(jié)和右向外聯(lián)結(jié)
左向外聯(lián)結(jié)的結(jié)果集包括 LEFT OUTER子句中指定的左表的所有行,而不僅僅是聯(lián)結(jié)所匹配的行
RIGHT JOIN 和RIGHT OUTER JOIN
右向外聯(lián)結(jié)是左向聯(lián)結(jié)的反向聯(lián)結(jié),將返回右表的所有行
FULL JOIN 或FULL OUTER JOIN
完整外部聯(lián)結(jié)返回左表和右表的所有行,當(dāng)某行在另一個(gè)表中沒有匹配行時(shí),則另一個(gè)表的
選擇表列包含空值,如果表之間有匹配行,則整個(gè)結(jié)果集包含基表的數(shù)據(jù)值。
帶聚集函數(shù)的聯(lián)結(jié)
SELECT customers.cust_name,customers.cust_id,COUNT(orders.order_num) AS num_ord FROM customers INNER JOIN orders ON customers.cust_id = orders.cust_id GROUP BY customers.cust_id;
此SELECT語句使用INNER JOIN將customers和orders表相互關(guān)聯(lián)。GROUP BY子句按客戶分組數(shù)據(jù),因此函數(shù)調(diào)用COUNT(order.order_num)對(duì)每個(gè)客戶的訂單技術(shù),將它作為num_ord返回。
聚集函數(shù)也可以方便的與其他聯(lián)結(jié)一起使用
SELECT customer.cust_name,customer.cust_id,COUNT(order.oder_num) AS num_ord FROM customers LEFT OUTER JOIN orders ON customers.cust_id = orders.cust_id GROUP BY customers.cust_id;
組合查詢:
多個(gè)查詢(多條SELECT語句),并將結(jié)果作為單個(gè)查詢結(jié)果集返回
組合查詢的應(yīng)用場(chǎng)景:
在單個(gè)查詢中從不同的表返回類似結(jié)構(gòu)的數(shù)據(jù)
對(duì)單個(gè)表執(zhí)行多個(gè)查詢,按單個(gè)查詢返回?cái)?shù)據(jù)
如果使用WHERE:
SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price<=5 OR vend_id IN(1001,1002); 使用UNION: SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price <=5 UNION SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id IN(1001,1002); UNION會(huì)自動(dòng)去重,如果想要匹配所有行,可以使用UNION ALL SELECT語句的輸出用ORDER BY子句排序,在用UNION組合查詢時(shí),只能用一條ORDER BY子句。必須出現(xiàn)在最后一條SELECT語句之后。 SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price <=5 UNION SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id IN(1001,1002) ORDER BY vend_id,prod_price; INSERT INFO customers(cust_name,cust_address,cust_city,cust_state,cust_zip,cust_country,cust_contact,cust_email) VALUES('Pep E.LaPew','100 Main Street','Los Angeles','CA','90046','USA',NULL,NULL); 如果想插入多行 INSERT INFO customers(cust_name,cust_address,cust_city,cust_state,cust_zip,cust_country,cust_contact,cust_email) VALUES(('Pep E.LaPew','100 Main Street','Los Angeles','CA','90046','USA',NULL,NULL)(...)); INSERT SELECT: //將SELECT語句返回的結(jié)果插入到另一張表中,通常用于將一張表導(dǎo)入到另外一張表中 INSERT INFO customers(cust_name,cust_address,cust_city,cust_state,cust_zip,cust_country,cust_contact,cust_email) SELECT cust_name,cust_address,cust_city,cust_state,cust_zip,cust_country,cust_contact,cust_email FROM custnew; 更新和刪除數(shù)據(jù): 更新某一行的數(shù)據(jù): UPDATE customers SET cust_mail = 'elmer@fudd.com' WHERE cust_id = 10005; 更新多行: UPDATE customers SET cust_mail = 'elmer@fudd.com' ,cust_email = 'elmer@fudd.com' WHERE cust_id = 10005; IGNORE關(guān)鍵字可以忽略更新過程中的錯(cuò)誤 刪除數(shù)據(jù): DELETE FROM customers WHERE cust_id = 10006; 1 創(chuàng)建表: CREATE TABLE customers ( cust_id int NOT NULL AUTO_INCREMENT, cust_name char(50) NOT NULL, cust_address char(50) NULL, cust_city char(50) NULL, cust_state char(5) NULL, cust_zip char(10) NULL, cust_country char(50) NULL, cust_contact char(50) NULL, cust_email char(255) NULL, PRIMARY KEY(cust_id) )ENGINE=InnoDB; NULL值就是沒有值或缺值。 更新表ALTER ALTER TABLE vendors ADD vend_phone CHAR(20); 刪除剛剛添加的列: ALTER TABLE Vendors DROP COLUMN vend_phone; 刪除表: DROP TABLE customers; 重命名表: RENAME TABLE customers2 TO customers; 視圖: 視圖是虛擬的表,只包含使用時(shí)動(dòng)態(tài)檢索數(shù)據(jù)的查詢 使用視圖: 使用視圖的原因: 重用SQL語句; 簡化復(fù)雜的SQL語句,在編寫查詢后,可以方便的重用它而不必知道它的基本查詢細(xì)節(jié) 使用表的組成部分而不是整個(gè)表 保護(hù)數(shù)據(jù),可以給用戶授予表的特定部分的訪問權(quán)限而不是整個(gè)表的訪問權(quán)限 更改數(shù)據(jù)格式和表示。視圖可返回與底層表的表示和格式不同的數(shù)據(jù)。 觸發(fā)器: 觸發(fā)器的主要作用是事件發(fā)生時(shí)某些語句自動(dòng)執(zhí)行 CREATE TRIGGER newproduct AFTER INSERT ON products FOR EACH ROW SELECT 'Product added';
關(guān)于數(shù)據(jù)庫基礎(chǔ)中的mysql語句有哪些問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
本文標(biāo)題:數(shù)據(jù)庫基礎(chǔ)中的mysql語句有哪些
瀏覽路徑:http://muchs.cn/article34/jiodpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、軟件開發(fā)、企業(yè)網(wǎng)站制作、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)