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

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

不相关子查询,子查询结果返回的是固定的值,跟外查询的条件无关。

相关子查询,子查询返回的结果跟外查询条件有关,是动态变化的。

 

 

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