久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

數(shù)據(jù)庫基礎(chǔ)中的mysql語句有哪些

共計(jì) 5553 個(gè)字符,預(yù)計(jì)需要花費(fèi) 14 分鐘才能閱讀完成。

數(shù)據(jù)庫基礎(chǔ)中的 mysql 語句有哪些,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

數(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=

使用 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;
創(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)注丸趣 TV 行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-28發(fā)表,共計(jì)5553字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 维西| 曲沃县| 巴中市| 方山县| 开封县| 济阳县| 四会市| 佛冈县| 蓝山县| 南康市| 许昌县| 普兰店市| 铁岭县| 阿克苏市| 邢台县| 宁陵县| 石林| 邵阳市| 长丰县| 嘉义县| 常宁市| 巴彦淖尔市| 成都市| 社旗县| 佳木斯市| 交口县| 宜兴市| 武功县| 宜阳县| 鸡西市| 杭州市| 贵定县| 肃宁县| 德清县| 九龙城区| 壶关县| 射阳县| 上栗县| 德化县| 平阳县| 新源县|