程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL基礎02(查詢),mysql基礎02查詢

MYSQL基礎02(查詢),mysql基礎02查詢

編輯:MySQL綜合教程

MYSQL基礎02(查詢),mysql基礎02查詢


查詢是很大的一塊,所以這裡我只會寫mysql的特點,就我目前使用的情況,MYSQL對標准SQL是比較支持,如果是新手的話,建議去w3school 學習標准SQL.

1.DUAL

DUAL是一個虛擬表,即該表是不存在的,用於直接select 標量時,使語句看起來符合sql規范

-- MSSQL
select 1,'A'
-- Oracle中dual 不可缺少
select 1,'A' from DUAL
-- mysql  以下2種格式都支持
select 1,'A';
select 1,'A' from DUAL;

2.LIMIT

相對MSSQL來說,MYSQL並沒有TOP關鍵字,但有LIMIT,而且效率更高且更靈活

SELECT * FROM usr LIMIT 1;
-- LIMIT 1 的意思是取1條記錄, MYSQL在取完1條記錄後將不再操作.

SELECT * FROM usr LIMIT 0,2;
-- LIMIT 0,2的意思是從第一行(包括第一行)開始,取2條記錄

SELECT * FROM usr WHERE u_id IN (SELECT u_id FROM usr WHERE dept='信息部' LIMIT 1);
-- 該語句執行時,MYSQL會報錯,意思是不能在子查詢中使用limit
-- 解決辦法,將使用limit的語句再套一層表即可;如下:
SELECT * FROM usr WHERE u_id IN (SELECT * FROM (SELECT u_id FROM usr WHERE dept='信息部' LIMIT 1)aa)

PS:MSSQL中使用TOP,數據庫會先排序,然後再返回數據,因此limit的效率比較高

3.子查詢的update錯誤

UPDATE usr SET usr_name='匿名' WHERE u_id IN (SELECT u_id FROM usr WHERE dept='信息部')
-- 語句報錯,大概意思是修改表不能使用自身
-- 解決方法,跟上面一樣,再套一層表即可
UPDATE usr SET usr_name='匿名' WHERE u_id IN (SELECT * FROM (SELECT u_id FROM usr WHERE dept='信息部')aa)

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved