中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫基礎中的mysql語句有哪些

發布時間:2021-10-13 12:00:18 來源:億速云 閱讀:132 作者:柒染 欄目:數據庫

數據庫基礎中的mysql語句有哪些,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

  數據庫與數據庫軟件:

  數據庫是數據容器,可以理解為文件,數據庫軟件是數據庫管理系統,

  提供用戶對數據庫文件的操作

  schama(模式):

  關于數據庫和表的布局及特性的信息

  列(column):

  表由列組成,列中存儲著表中某部分的信息。

  行(row):

  表中的數據是按行存儲的

  主鍵:

  表中每一行都應該有可以唯一標識自己的一列,稱為主鍵

  主鍵可以由單個列構成,也可以由多個列構成

  SQL:

  結構化查詢語言,用于和數據庫通信

  查詢數據庫和表命令:

  SHOW DATABASES;

  SHOW TABLES;

  SHOW COLUMNS FROM COLLATIONS; //顯示COLLATIONS中的所有列

  auto_increment //自動增量,每添加一個行,該值自動加一

  SELECT prod_name FROM products; //從prducts中檢索出prod_name

  SELECT prod_id,prod_name FROM products; //檢索多個列

  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; //對多個列排序(如果prod_price存在重復,就對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 實現分組的排序

  SELECT order_num,SUM(quantity*item_price) AS ordertotal FROM orderitems GROUP BY order_num HAVING SUM(quantity*item_price)>=50 ORDER BY ordertotal;

  子查詢可以用來減少查詢的語句條數

  例如:

  SELECT order_num FROM orderitems WHERE prod_id = 'TNT2'; //返回結果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');

  計算字段使用子查詢:

  SELECT cust_name,cust_state,(SELECT COUNT(*) FROM orders WHERE orders.cust_id = customers.cust_id) AS orders FROM customers ORDER BY cust_name;

  聯結:

  (主鍵與外鍵)

  分表是為了更好的存儲與提升可伸縮性,但在使用select查詢的時候就不得不采用聯結的方法

  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');

  自聯結方式:

  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';

  外部聯結

  聯結包含在相關表中沒有關聯行的行,這種類型的聯結成為外部聯結

  SELECT customers.cust_id,orders.order_num FROM customers LEFT OUTER JOIN orders ON customers.cust_id = orders.cust_id;

  左向外聯結和右向外聯結

  左向外聯結的結果集包括 LEFT OUTER子句中指定的左表的所有行,而不僅僅是聯結所匹配的行

  RIGHT JOIN 和RIGHT OUTER JOIN

  右向外聯結是左向聯結的反向聯結,將返回右表的所有行

  FULL JOIN 或FULL OUTER JOIN

  完整外部聯結返回左表和右表的所有行,當某行在另一個表中沒有匹配行時,則另一個表的

  選擇表列包含空值,如果表之間有匹配行,則整個結果集包含基表的數據值。

  帶聚集函數的聯結

  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表相互關聯。GROUP BY子句按客戶分組數據,因此函數調用COUNT(order.order_num)對每個客戶的訂單技術,將它作為num_ord返回。

  聚集函數也可以方便的與其他聯結一起使用

  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;

  組合查詢:

  多個查詢(多條SELECT語句),并將結果作為單個查詢結果集返回

  組合查詢的應用場景:

  在單個查詢中從不同的表返回類似結構的數據

  對單個表執行多個查詢,按單個查詢返回數據

  如果使用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會自動去重,如果想要匹配所有行,可以使用UNION ALL   SELECT語句的輸出用ORDER BY子句排序,在用UNION組合查詢時,只能用一條ORDER BY子句。必須出現在最后一條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語句返回的結果插入到另一張表中,通常用于將一張表導入到另外一張表中   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;   更新和刪除數據:   更新某一行的數據:   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關鍵字可以忽略更新過程中的錯誤   刪除數據:   DELETE FROM customers WHERE cust_id = 10006;   1   創建表:   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;   視圖:   視圖是虛擬的表,只包含使用時動態檢索數據的查詢   使用視圖:   使用視圖的原因:   重用SQL語句;   簡化復雜的SQL語句,在編寫查詢后,可以方便的重用它而不必知道它的基本查詢細節   使用表的組成部分而不是整個表   保護數據,可以給用戶授予表的特定部分的訪問權限而不是整個表的訪問權限   更改數據格式和表示。視圖可返回與底層表的表示和格式不同的數據。   觸發器:   觸發器的主要作用是事件發生時某些語句自動執行   CREATE TRIGGER newproduct AFTER INSERT ON products FOR EACH ROW SELECT 'Product added';

關于數據庫基礎中的mysql語句有哪些問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

彭阳县| 曲松县| 寿阳县| 苗栗市| 嘉鱼县| 沭阳县| 自治县| 香河县| 泸西县| 德阳市| 会昌县| 泾源县| 樟树市| 屏山县| 阳曲县| 博爱县| 保亭| 东丰县| 贵港市| 阳城县| 江津市| 碌曲县| 涿鹿县| 射阳县| 闽清县| 广元市| 上犹县| 蛟河市| 汾阳市| 通辽市| 都兰县| 舒城县| 景谷| 广安市| 连城县| 阳春市| 武威市| 祁阳县| 锡林郭勒盟| 饶阳县| 辰溪县|