sql簡單總結

1、基本查詢

(sql語言大小寫不敏感)

全表查詢

select  * from 表名;

特定列查詢

select 【distinct】列1,列二 from 表名;

列別名(兩種方式)

select 列1 AS 別名1 ,列2 別名2 from 表名;

使用算數運算符(列加一)

select 列1+1 from 表名;

常用函數(count 、max、min、sum、avg)

注意:count(),括號中的數據只要某一行有列不爲空(包括0),那莫計算這行時都是1;當這行爲NULL時計算爲0.

select count(*) from  表名

limit語句(限制返回的行數)

select * from 表名 limit 5;

2、where語句

使用where將不滿足條件的行過濾掉,where緊隨在from後面

使用比較運算符(並且還包含between \ in \ is null)

select * from emp where sal IN (1500, 5000);

使用LIke和RLike選擇類似的值(選擇條件可以包含字符或者數字)

select * from emp where sal LIKE '_2%';

使用邏輯運算符(and\or\not)

select * from emp where sal>1000 or deptno=30;

3、排序語句

ORDER BY 子句在SELECT語句的結尾。

SELECT   last_name, job_id, department_id, hire_date FROM     employees ORDER BY hire_date ;

ASC(ascend): 升序

DESC(descend): 降序

如果出現過濾條件(where)和排序(order by)的話,排序寫在後面。

注意:不能使用別名進行過濾,可以進行排序。

4、分組

Group By語句

通常和聚合函數一起使用,然後對每個分組執行聚合操作

select t.deptno, avg(t.sal) avg_sal from emp t group by t.deptno;

注意:要求非聚集函數的字段必須出現在group by當中。普通條件既可以放在where中,又可以放在having中,儘量放在where中因爲進行了sql優化。

Having 語句

having 與 where不同,where後面不能寫分組函數,而having 後面可以;having 只用於group by 分組統計語句。

select deptno, avg(sal) avg_sal from emp group by deptno having  avg_sal > 2000;

5、join

等值join(此處使用了表別名)

select e.empno, e.ename, d.deptno, d.dname from emp e join dept d on e.deptno = d.deptno;

內連接

內連接:只有進行連接的兩個表中都存在與連接條件相匹配的數據纔會被保留下來

左外連接

左外連接:JOIN操作符左邊表中符合WHERE子句的所有記錄將會被返回。

select e.empno, e.ename, d.deptno from emp e left join dept d on e.deptno = d.deptno;

右外連接

右外連接:JOIN操作符右邊表中符合WHERE子句的所有記錄將會被返回。

select e.empno, e.ename, d.deptno from emp e right join dept d on e.deptno = d.deptno;

滿外連接

滿外連接:將會返回所有表中符合WHERE語句條件的所有記錄。如果任一表的指定字段沒有符合條件的值的話,那麼就使用NULL值替代。

select e.empno, e.ename, d.deptno from emp e full join dept d on e.deptno = d.deptno;

多表連接

注意:連接 n個表,至少需要n-1個連接條件。例如:連接三個表,至少需要兩個連接條件。

多表查詢可以使用join on也可使用where語句

笛卡爾積

產生條件:省略連接條件、連接條件無效、表中所有行互相連接

select empno, dname from emp, dept;

注意:連詞謂詞中不支持or

6、子查詢

子查詢要包含在括號內。 將子查詢放在比較條件的右側。

單行子查詢,子查詢返回單行結果。可以使用比較運算符

多行子查詢,子查詢返回多行結果。可以使用in,any,all

---------------------------------

不相關子查詢,子查詢結果返回的是固定的值,跟外查詢的條件無關。

相關子查詢,子查詢返回的結果跟外查詢條件有關,是動態變化的。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章