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
posted @   Destiny233  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示