学习数据库笔记分享一

1、SQL、DB、DBMS的关系

DB:DataBase(数据库)在硬盘以文件的形式存在

SQL: 结构化查询语言,高级语言,编译后执行

DBMS: DataBase Manager System (数据库管理系统) Mysql,SQLservice,Oracle,DB2,Syba se

关系:DBMS来执行SQL语句进而操作DB数据

2.表、通用的SQL语句

表:数据库基本组单位

DQL (数据查询语言) :select语句

DML(数据操作语言) : insert、update、delete

DDL(数据定义语言) : create、alter、drop

TCL(事务控制语言): commit 提交事务、rollback 回滚事务

DCL(数据控制语言):grant 授权、revoke 撤销权限

查看数据库:show databases;

创建数据库:create database 数据库名;

查看表: show tables;

初始化数据:source sql文件的路径;

删除数据库:drop database 数据库名;

拓展:

查看使用的数据库: select database();

查看mysql 版本号:select version;

结束一条语句:\c

3、查询语句(DQL)

简单的省略…

条件查询:

…是数字:between… and… 是闭区间

…是字符:between… and …是左闭右开区间

空null:不是一个值,不能用等号判断: is null 和 is not null。

关键字in: in(100,200):是具体的数字,不是区间。

模糊查询like: % _

案例:名字中含有_: 使用转义字符:_ 来查询

升序: asc(默认)

降序:desc

顺序:

select 
	字段						3
from
	表名						1
where
	条件						2
order by
	....				      4

order by是最后执行的

4、分组函数

5大分组函数:count 、sum、avg、 max、min

分组函数:多行处理函数

分组函数在遇到null的时候:自动忽略null

分组函数不能直接跟在where条件后面:group by 是在where执行后才会执行

select		5
	..			
from		1
	..
where		2
	..
group by	3
	..
having		4
    ..
order by    6
	..

count(*)和count(某个字段)的区别?

​ count(*):统计的是总的条数

​ count(某个字段):表示这个字段中国null的数据总数量

数据库中规定:有null参与的运算结构一定是null

案例:计算员工的年薪

mysql> select ename ,(sal+comm)*12 as '年薪'from emp;
+--------+----------+
| ename  | 年薪     |
+--------+----------+
| SMITH  |     NULL |
| ALLEN  | 22800.00 |
| WARD   | 21000.00 |
| JONES  |     NULL |
| MARTIN | 31800.00 |
| BLAKE  |     NULL |
| CLARK  |     NULL |
| SCOTT  |     NULL |
| KING   |     NULL |
| TURNER | 18000.00 |
| ADAMS  |     NULL |
| JAMES  |     NULL |
| FORD   |     NULL |
| MILLER |     NULL |
+--------+----------+
14 rows in set (0.00 sec)

mysql> select ename ,(sal+ifnull(comm,0))*12 as '年薪'from emp;
+--------+----------+
| ename  | 年薪     |
+--------+----------+
| SMITH  |  9600.00 |
| ALLEN  | 22800.00 |
| WARD   | 21000.00 |
| JONES  | 35700.00 |
| MARTIN | 31800.00 |
| BLAKE  | 34200.00 |
| CLARK  | 29400.00 |
| SCOTT  | 36000.00 |
| KING   | 60000.00 |
| TURNER | 18000.00 |
| ADAMS  | 13200.00 |
| JAMES  | 11400.00 |
| FORD   | 36000.00 |
| MILLER | 15600.00 |
+--------+----------+
14 rows in set (0.00 sec)

if null 是空处理函数属于单处理函数

5、group by 和having

group by : 按照某个字段或者某些字段跟组

having : 是对分组之后的数据进行再次过滤

分组函数一把和group by 联合使用,

注意:当使用分组group by后,select后面只能跟分组函数和参与分组的字段

案例:每个工作岗位的平均薪资?

select
	job,
	avg(sal)
from
	emp
group by
	job;

案例:找出每个部门的最大薪资,并且显示大于2900的数据

mysql> select max(sal),deptno from emp group by deptno;
+----------+--------+
| max(sal) | deptno |
+----------+--------+
|  3000.00 |     20 |
|  2850.00 |     30 |
|  5000.00 |     10 |
+----------+--------+
3 rows in set (0.00 sec)

mysql> select max(sal),deptno from emp where sal>2900 group by deptno;
+----------+--------+
| max(sal) | deptno |
+----------+--------+
|  3000.00 |     20 |
|  5000.00 |     10 |
+----------+--------+
2 rows in set (0.00 sec)

案例:找出每个部门的平均薪资,并且显示大于2900的数据

mysql> select avg(sal),deptno from emp group by deptno;
+-------------+--------+
| avg(sal)    | deptno |
+-------------+--------+
| 2175.000000 |     20 |
| 1566.666667 |     30 |
| 2916.666667 |     10 |
+-------------+--------+
3 rows in set (0.00 sec)

mysql> select avg(sal),deptno from emp group by deptno having avg(sal)>2000;
+-------------+--------+
| avg(sal)    | deptno |
+-------------+--------+
| 2175.000000 |     20 |
| 2916.666667 |     10 |
+-------------+--------+
2 rows in set (0.00 sec)

总结:完整的SQL语句

select
	..	5
from 
	..	1
where
	..	2
group by 
	..	3
having
	..	4
order by
	..	6
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值