MySQL-1-SQL语句的分类、MySQL命令、SQL查询语句

一、SQL语句的分类(任何一条sql语句以分号结尾;SQL语句不区分大小写)
DQL(数据查询语言):查询语句,凡是select都是DQL。
DML(数据操作语言):insert、delete、update,对表当中的数据进行增删改。
DDL(数据定义语言):create、drop、alter,对表结构的增删改。
TCL(事务控制语言):commit提交事务,rollback回滚事务。
DCL(数据控制语言):grant授权,revoke撤销权限等。

二、MySQL命令(不是SQL语句)
MySQL指令在windows黑窗口(dos)中使用,注意要先设置好环境变量。
1.启动MySQL服务:net start mysql
2.登录:mysql -u<用户名,一般为root> -p<密码>
说明:登录成功会现实"mysql<“。
3.查看所有的数据库:show databases;
4.创建一个数据库(注意是MySQL命令,不是SQL语句):create database <数据库名>;
5.查询当前使用的数据库:select database();
6.删除数据库:drop database <数据库名>;
7.查看表结构:desc <表名>;
在这里插入图片描述
上图中表示表dept有三个字段,分别为DEPTNO、DNAME、LOC。
8.使用该数据库:use <数据库名>;
9.查看当前使用的数据库中有哪些表:show tables;
10.初始化数据:source <.sql文件的全目录>
例如:
在这里插入图片描述
说明:.sql文件被称为"sql脚本”,是一种普通文本文件,该文件中编写了大量的sql语句。直接使用source命令可以执行sql脚本。sql脚本中的数据量太大的时候,无法打开,直接使用source命令完成初始化。
11.退出mysql:可使用\q、quit或exit。(不需要加分号)
12.查看创建表的语句:show create table <表名>;
例如:
在这里插入图片描述
三、SQL查询语句
1.简单查询语句
语法格式:select 字段名1,字段名2,字段名3,… from 表名;
例如:
在这里插入图片描述
再如:
在这里插入图片描述

从上图中可以看出,select语句中的字段可以参与数学运算。
注意:在sql语句中的数学运算中如果有一个或多个字段数值为null,则数学运算结果为null。
此外,可以给使用了数学运算的字段重命名,使用"as <别名>",as关键字可以省略:
在这里插入图片描述
若是使用了中文命名字段可以用单引号括起来:
在这里插入图片描述
省略as关键字:
在这里插入图片描述
2.条件查询语句
语法格式:select 字段,字段,… from 表名 where 条件;
在这里插入图片描述
执行顺序:先from,后where,最后select。
示例一:
在这里插入图片描述
在这里插入图片描述
注意:ename的属性字段类型为varchar,在sql语句中值需要使用单引号括起来。
在这里插入图片描述
注意:between…and…一定是小数据在前,大数据在后。
在这里插入图片描述
补充:where中and的优先级大于or。如果运算符的优先级不确定可以在sql语句中加小括号。
示例二(and与or 的优先级):
在这里插入图片描述
示例三(条件查询in):
在这里插入图片描述
注意:也可以使用“not in”。
示例四(模糊查询like):
在模糊查询中,必须掌握两个特殊的符号,一个是%,一个是 (下划线)。%代表任意多个字符,(下划线)代表任意1个字符。
在这里插入图片描述
如果需要有下划线字符,使用转义字符:
在这里插入图片描述
3.排序(升序、降序)
先执行from,再执行where,再执行select,最后执行order by。
在这里插入图片描述
注意:多个字段同时排序时,从左到右考虑(越靠前的字段越起主导作用),只有前面的字段相同时才接着考虑后面的字段。
在这里插入图片描述
4.分组函数
分组函数的特点为输入多行,输出的结果为1行,即分组函数是多行处理函数(相对于单行处理函数而言)。
在这里插入图片描述
在这里插入图片描述
注意:分组函数自动忽略null,即分组函数中指定的字段为null的记录不会被处理。
在这里插入图片描述
单行处理函数,示例ifnull()函数。例如:
在这里插入图片描述
上例中,若comm的值为null则用0代替。
注意:SQL语句中分组函数不可以直接出现在where子句中(原因介绍了group by后解释)。
例如:
在这里插入图片描述
上图中的正确写法(子查询后序文章说明):
在这里插入图片描述
补充:count(*)与count(<字段名>)的区别为前者为统计的记录总数,后者为统计的指定字段不为null的记录个数。
5.group by和having
注意:先from,再group by,最后select。
group by:按照某个字段或某些字段进行分组。
having:having是对分组之后的数据进行再次过滤。
在这里插入图片描述
补充:分组函数一般会和group by联合使用,并且任何一个分组函数都是在group by语句执行结束之后才会执行的。当没有group by时,整张表的数据会自成一组。
解释:分组函数不能直接在where子句中是因为group by在where子句之后执行,而分组函数在group by子句之后执行。
再例:
在这里插入图片描述
但下述代码有问题:
在这里插入图片描述
注意:使用了group by语句后,select后只允许出现参加分组的字段和分组函数。
上图中的sql语句在oracle中会报错,但是在mysql中不会报错(oracle语法严谨,mysql语法松散)。虽然mysql语句不会报错,但是select后返回的ename是随机的,无意义。
补充:多个字段联合分组
在这里插入图片描述
要求是相同部门、相同工作岗位为一组,所以分组需考虑两个字段,sql语句如下:
在这里插入图片描述
having字段的使用
示例:
在这里插入图片描述
其实上述sql语句也可以写成如下形式,且执行效率更高:
在这里插入图片描述
因为最大值也可以在where时就进行过滤。但如果是找出“每个部门的平均薪资大于2000”就不能使用where进行过滤,必须使用having子句进行过滤:
在这里插入图片描述
group by和having的区别:
where子句是作用在from子句中执行结果的多个记录上,没有from子句就不能有where子句。having子句是作用在group by子句的执行结果的多个记录上,没有group by子句就不能有having子句。
6.去除重复记录
在select 与字段序列中间加一个distinct关键字即可:
在这里插入图片描述
在这里插入图片描述
再例:
在这里插入图片描述

总结:select子句的执行顺序。
语法格式:
select 字段名1 [别名1],字段名2 [别名1],…
from 表名
where …
group by …
having …
order by …
执行顺序为:先from,再where,再group by,再having,再select,最后order by输出。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值