MySQL入门基础(1)
MySQL基本介绍
MySQL登录
- mysql -uroot -p123456 显示输入密码
- mysql -uroot -p 不显示密码
MySQL常用命令
-
show databases; 显示所有的数据库
-
create database xxxx; 创建xxxx数据库
-
use xxx 使用xxx数据库,这里可以不要分号
-
show tables; 显示当前数据库中的所有
SQL语句分配
- DQL:查询 select
- DML:数据修改,insert delete update
- DDL:数据定义,create drop alter 动的是表的结构
- TCL:事务控制语言,commit, rollback
- DCL:数据控制语言,grant, invoke
其他命令
- desc:查看表头
- select version(); 查看mysql版本
DQL 查询
简单查询
-
查询一个字段:select 字段名 from 表名;
-
查询两个或多个用,隔开:select 字段名1, 字段名2, from 表名;
-
查询所有:select * from 表名
-
给查询的类起别名:select 字段名1 as 别名 from 表名; as可省略。如果别名有空格,可以将别名用‘’引起来
-
列参与计算 select ename, sal*12 'year_salary' from emp;
条件查询
- =,<>, !=, <, >, <= >=
- between xx and xx,必须遵循左小右大,闭区间包括左右两端的值
- 查空:is null。null不可以用=衡量
- and, or。and优先级大于or
- in和not in,相当于多个or合并。select xx from table where xx in (1, 2, 3)
- like 模糊查询,%表示通配符可以匹配多个字符。_表示通配符,匹配一个字符。如果想查%和_可以用\转义
排序
- order by。默认升序,desc指定降序,asc指定升序。select xx from xx order by 列名 desc;
- 多个字段排序。用,隔开。select xx from xx order by 列名1 desc, 列名2 asc; 只有列名1相同时,才会按列名2排序
数据处理函数
数据处理函数可以用于列,也可以用于where
单行处理函数
每一行返回一个值
- lower,字符串转小写, select lower(dname) from dept;
- upper,转大写
- substr,取子串,select ename from emp where substr(ename, 1, 1) = 'A';
- concat,字符串拼接,select concat(ename, job) result from emp;
- length,返回字符串长度
- trim,去除两边的空字符
- str_to_date
- date_format
- format 设置千分位
select 200 from emp; select可以生成一列新的数据
- round,四舍五入 select round(123.56, 1) as result from emp;
- rand,随机生成0~1的数 select rand() as result from emp;
- ifnull,MySQL中有null的运算结果一定是null,这时候需要给null赋初值。 select ename, sal + ifnull(comm, 0) salary from emp;
- case ... when ... then ... when ... then ... else ... end;
分组函数
多行处理函数(分组函数)输入多行,最后处理得到一行。
需要先对数据分组,然后计算。如果没有分组,默认一张表是一组。
- count,计数
- sum,求和
- avg,求平均
- max,最大
- min,最小
分组函数注意
- 自动忽略null,不需要对null提前处理
- count(列名)统计字段下不为null的个数
- count(*):统计行数(因为一条记录至少有一个不为null,所以count(*)会统计每一行记录。
- 不能直接使用在where子句中
- 所有的分组函数可以一起用
分组查询
group by 字段
执行顺序
- from
- where
- group by
- select
- order by
找出每个部门的最高薪资
- select deptno, max(sal) from emp group by deptno;
找出每个部门不同岗位的最高薪资
- select deptno, max(sal) from emp group by deptno, job;
找出每个部门的最高薪资,显示大于3000的
- select deptno, max(sal) from emp group by deptno having sal > 3000;
- select deptno, max(sal) from emp where sal > 3000 group by deptno;
- where能实现优先where,不能再才having
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!