学习配套视频:老杜带你学_mysql入门基础(mysql基础视频+数据库实战)https://www.bilibili.com/video/BV1Vy4y1z7EX?spm_id_from=333.337.search-card.all.click&vd_source=bf4eb9e00649104ee4ec443e363be4b6

1 数据库概述

  1. mysql登录不上去

(84条消息) 解决ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)_柚子橘子的博客-CSDN博客

  1. 数据库含义
  • 数据库:按照一定格式存储数据的一些文件的组合。
  • 数据库管理系统:专门用来管理数据库中数据的,管理体现在增删改查。
  • SQL:结构化查询语言,程序员在数据库管理系统负责执行SQL完成数据的增删改查
  1. MYSQL的安装
  • 端口号通常和IP地址在一块,IP地址用来定位计算机的,端口号port是用来定位计算机上某个服务的/某个应用的!
  • mysql数据库启动的时候,这个服务占有的默认端口号是3306 !!这个大家都知道,不能不知道!
  1. MYSQL的服务
  • 计算机–>右键–>管理–>服务和应用程序–>服务–>找mysql服务
  • 看下是不是“正在运行”状态 然后是“自动”
  • 对应wimdow上cmd的命令是:
net stop 服务名称;
net start 服务名称;

2 常用命令

  1. 登录/退出MYSQL
登录:mysql -uroot -pxxxxxx
退出:exit
  1. 数据库操作
查看数据库:show databases;
创建数据库:create database bjpowernode;
选择使用数据库:use test;
查看使用哪一个数据库:select database();     记得带括号
  1. 表的操作
show tables;
  1. 导入数据
source 加目录
source D:\course\03-MySQL\document\bjpowernode.sql
  1. 其他
  • 必须有分号,;表示结束
  • \c表示终止一条命令的输入

3 SQL语句的分类

  1. DQL:数据查询语言
  • select
  1. DML:数据操作语言
  • insert 增
  • delete 删
  • update 改
  1. DDL:数据定义语言
  • create
  • drop
  • alter
  1. TCL:事务控制语言
  • 事务提交:commit
  • 事务回滚:rollback
  1. DCL:数据控制语言
  • 授权grant
  • 撤销权限revoke

4 DQL语句

4.1 查看表内容与结构

  1. 查看表中的数据
select * from 表名;
select * from emp;
  1. 查看表的结构
desc 表名;
desc dept;

4.2 简单查询

  1. 查询一个字段
select 字段名 from 表名;
select dname from dept;
  1. 查询多个字段
select 字段名,字段名 from 表名;
select deptno,dname from dept;
  1. 查询所有字段
select * from 表名;
select * from dept;
  1. 给查询字段的列取别名
select deptno,dname as deptname from dept;
select deptno,dname deptname from dept;
  1. 起别名有空格用双引号
select 字段 “dept name” from 表名;
select 字段 “dept name” from dept;
  1. 简单计算
select 字段*12 from 表名;
select name,sal*12 yearsal from emp;

4.3 条件查询

一个套路:where 字段 符号 值/文字

  1. 等于=
select 字段 from 表名 where 字段 = 值/文字;
select empno,ename from emp where sal = 800;
  1. 不等于<>=/!=
select 字段 from 表名 where 字段 <>= 值/文字;
select empno,ename from emp where sal <>= 800;
  1. 小于等于<=
select 字段 from 表名 where 字段 <= 值/文字;
select empno,ename from emp where sal <= 3000;
  1. 大于等于>=
select 字段 from 表名 where 字段 >= 值/文字;
select empno,ename from emp where sal >= 3000;
  1. 介于between … and …
select 字段 from 表名 where 字段 >= 值 and 字段 <= 值;
select empno,ename,sal from emp where sal >= 2450 and sal <= 3000;
select 字段 from 表名 where 字段 between 值 and 值;
select empno,ename,sal from emp where sal between 2450 and 3000;
  1. 为空 is null ,不为空is not null
select 字段 from 表名 where 字段 is null;
select empno,ename,sal from emp where comm is null;
select 字段 from 表名 where 字段 is null;
select empno,ename,sal from emp where comm is not null;
  1. 包含in,不包含not in
select 字段 from 表名 where 字段 in (值/文字);
->select empno,ename,job
->from emp
->where job in ('manager','salesman');
select 字段 from 表名 where 字段 in (值/文字);
->select empno,ename,job
->from emp
->where job not in ('manager','salesman');

4.4 逻辑查询

  1. 并且and
select 字段 from 表名 where 条件 and 条件;
select empno,ename from emp where job = 'MANAGER' and sal > 2500;
  1. 或者or
select 字段 from 表名 where 条件 or 条件;
-> select empno,ename
-> from emp
-> where job = 'manager'or job = 'salesman';
  1. 多个逻辑and和or并存,用括号
  • and和or同时出现,and优先级较高。如果想让or先执行,需要加“小括号”
    以后在开发中,如果不确定优先级,就加小括号就行了。
select 字段 from 表名 where 条件 and (条件 or 条件);
-> select empno,ename
-> from emp
-> where sal > 2500 and (deptno = 10 or deptno = 20);
  1. case…when…then…when…then…else…end
case 字段 when 条件 then 程序 when 条件 then 程序 else 程序 end  -> select->   ename,->     job,->   sal as oldsal,->     (case job when 'manager' then sal*1.1 when 'salesman' then sal*1.5 else sal end) as newsal-> from ->      emp;

4.5 模糊查询

  1. %:匹配任意多个字符
select 字段 from 表名 where like '%值/文字%';
select ename from emp where ename like '%o%'; 找出名字中含有O的?
select 字段 from 表名 where like '%值/文字';
select ename from emp where ename like '%T';  找出名字以T结尾的?
select 字段 from 表名 where like '%值/文字';
select ename from emp where ename like 'K%';  找出名字以K开始的?
  1. _:任意一个字符
select 字段 from 表名 where like '_值/文字%';
select ename from emp where ename like '_A%'; 找出第二个字每是A的?
select 字段 from 表名 where like '__值/文字%';
select ename from emp where ename like '__R%';    找出第二个字每是R的?

3, %与/的查询使用转义字符\

select 字段 from 表名 where like '%\_值/文字%';select name from t_student where name like '%\_%';

4.6 排序查询

  1. 升序asc
select 字段 from 表名 order by 排序字段 asc;
select ename,sal from emp order by sal asc;     asc可加可不加,默认升序
  1. 降序desc
select 字段 from 表名 order by 排序字段 desc;
select ename,sal from emp order by sal desc;
  1. 多个字段排序
select 字段 from 表名 order by 排序字段 asc, 排序字段desc;
select ename,sal from emp order by sal asc,ename desc;> select ename,sal from emp
-> where sal between 1250 and 3000
-> order by sal desc;

4.7 数据处理函数(单行函数处理)查询

  1. lower 转换小写
select low(字段) from 表名 ;
select lower(ename) from emp;
  1. upper 转换大写
select upper(字段) from 表名 ;
select upper(name) from t_student;
  1. substr截取
select substr(字段,起始下标,截取的长度) from 表名 ;
select substr(ename,1,1 from emp;
select ename from emp where substr(ename,1,1) = 'A';
  1. concat 拼接
select concat(字段,字段) from 表名 ;
select concat(empno,ename) from emp;
  1. length取长度
select length(字段) from 表名 ;
select length(ename) from emp;
  1. trim去空格
select trim(字段) from 表名 ;
select trim(ename) from emp;
select * from emp where ename =trim( ' king');
select * from emp where trim(ename) ='king';
  1. 日期转换 str_to_date,str_to_date
STR_TO_DATE(str,format);将字符串转换成日期
DATE_FORMAT(date,format);格式化日期

str_to_date:(86条消息) MySQL的STR_TO_DATE()函数将指定格式的字符串转为Date_秃秃爱健身的博客-CSDN博客_mysql字符串转日期函数

date_format:(86条消息) MySQL的DATE_FORMAT()函数将Date转为字符串_秃秃爱健身的博客-CSDN博客_mysqldate转字符串

  1. round四舍五入
select round(数字,保留小数个数) from 表名;
select round(123.554,-2) as result from emp;
  1. rand生成随机数
select rand()*100 from 表名;
select round(rand()*100,2) from emp;
  1. ifnull 将 null 转换成一个具体值
select ifnull(有null的字段,保留值) from 表名;
select ename,(sal+ifnull(comm,0))*12 monthsal from emp;
  1. distinct去重查询
select distinct 字段 from 表名;
select distinct job from emp;
select distinct job,deptno from emp; 表示两个字段联合起来去重。
select count(distinct job) from emp;

4.8 分组函数查询(多行处理函数)

  1. count 计数
  • count()和count(具体字段)有什么区别:count(具体字段)表示统计该字段下所有不为NULL的元素的总数,count()统计表当中的总行数
select count(字段) from 表名 ;
select count(sal) from emp;
  1. sum 求和
select sum(字段) from 表名 ;
select sum(sal) from emp;
  1. avg 平均值
select avg(字段) from 表名 ;
select avg(sal) from emp;
  1. max 最大值
select max(字段) from 表名 ;
select max(sal) from emp;
  1. min 最小值
select min(字段) from 表名 ;
select min(sal) from emp;

4.9 分组查询

  1. 执行顺序
     select...from...where...group by...order by...执行顺序:  1. from2. where3. group by4. select5. order by
  1. 要点
  • 问:为什么分组函数不能直接使用在where后面?
    select ename,sal from emp where sal > min(sal);//报错。
  • 答:因为分组函数在使用的时候必须先分组之后才能使用。
    where执行的时候,还没有分组。所以where后面不能出现分组函数。
  1. 案例
按照工作岗位分组,然后对工资求和。
select job,sum(sal) from emp group by job;找出每个部门的最高薪资
select deptno,max(sal) from emp group by deptno;每个部门,不同工作岗位”的最高薪资
select deptno,job,max(sal) from emp group by deptno,job;
  1. having在分组上进行过滤
select 字段,分组函数(字段) from 表名 group by 字段 having 条件;
mysql> select-> deptno,-> job,-> max(sal)-> from-> emp-> group by deptno,job-> having max(sal) > 3000;
  1. 综合例子来一个
 找出每个岗位的平均薪资,要求显示平均薪资大于1500的,除MANAGER岗位之外,要求按照平均薪资降序排。
mysql> select->       job,->       avg(sal) as avgsal-> from->        emp-> where->        job != 'manager'-> group by ->     job-> having ->       avg(sal) > 1500->limit 1;

4.10 连接查询

  1. 类型
 根据表连接的方式分类:内连接:等值连接非等值连接自连接外连接:左外连接(左连接)右外连接(右连接)全连接(不讲)
  1. 内连接之等值连接
     select ...fromajoinbona和b的连接条件where  a.筛选条件=b.筛选条件
查询每个员工所在部门名称,显示员工名和部门名?
mysql> select e.ename,d.dname-> from emp e-> join dept d-> on e.deptno = d.deptno;
  1. 内连接之非等值连接
     select ...fromajoinbona和b的连接条件where  a条件不等于(可能是介于)b条件
找出每个员工的薪资等级,要求显示员工名、薪资、薪资等级?
mysql> select e.ename,e.sal,s.grade-> from emp e-> join salgrade s-> on e.sal between s.losal and s.hisal;
  1. 内查询之自连接
     一张表看成两张表select ...fromajoinbona和b的连接条件where  条件
查询员工的上级领导,要求显示员工名和对应的领导名?
mysql> select a.ename,b.ename-> from emp a-> join emp b-> on a.mgr = b.empno;
  1. 外连接的左/右连接
     select ...fromaleft joinbona和b的连接条件where  a.筛选条件=b.筛选条件
查询每个员工所在部门名称,显示员工名和部门名?
mysql> select e.ename,d.dname-> from emp e-> left/right join dept d-> on e.deptno = d.deptno;
  1. 多张表的连接
     select ...fromajoinbona和b的连接条件joincona和c的连接条件right joindona和d的连接条件
 案例:找出每个员工的部门名称以及工资等级,要求显示员工名、部门名、薪资、薪资等级?
mysql> select e.ename,e.sal,d.dname,s.grade-> from emp e-> left join dept d-> on e.deptno = d.deptno-> left join salgrade s-> on e.sal between s.losal and s.hisal;
 案例:找出每个员工的部门名称以及工资等级,还有上级领导,要求显示员工名、领导名、部门名、薪资、薪资等级?
mysql> select e.ename,e.sal,d.dname,s.grade-> from emp e-> left join dept d-> on e.deptno = d.deptno-> left join salgrade s-> on e.sal between s.losal and s.hisal;-> left join emp l-> on e.mgr = l.empno;

4.11 子查询

  1. where中的子查询
  • 语法
 select 字段from表名 where(select 语句)
  • 案例
找出比最低工资高的员工姓名和工资?
错误用法:select ename,salfromemp wheresal > min(sal);ERROR 1111 (HY000): Invalid use of group functionwhere子句中不能直接使用分组函数
正确用法:
select ename,sal
from emp
where sal > (select min(sal) from emp);
  1. from中的子查询
  • 语法
 select 字段from(select 语句)where条件
  • 案例
找出每个岗位的平均工资的薪资等级。
mysql> select t.*,s.grade-> from->          ( select job,avg(sal) avgsal from emp group by job ) t   (记得给avg(sal)起别名)-> left join salgrade s-> on t.avgsal between s.losal and s.hisal;
  1. select后面出现的子查询
  • 语法
 select 字段,(select 语句)from表名where条件
  • 案例
找出每个员工的部门名称,要求显示员工名,部门名?select e.ename,e.deptno,(select d.dname from dept d where e.deptno = d.deptno) as dname from emp e;
  1. union 合并查询
  • 语法:和union all的区别是union去交集,去重过
select 语句
union
select 语句
  • 案例
mysql> select ename,job from emp where job = 'manager'-> union-> select ename,job from emp where job = 'salesman';
  1. limit 用法
  • 语法
limit startIndex, length     startIndex是起始下标,length是长度。
  • 案例
按照薪资降序,取出排名在前5名的员工?
select ename,sal from emp order by sal desc limit 0,5取出工资排名在[3-5]名的员工?select ename,sal from emp order by sal desc limit 2,3;
  • 额外功能:分页
每页显示3条记录第1页:limit 0,3     [0 1 2]第2页:limit 3,3     [3 4 5]第3页:limit 6,3     [6 7 8]第4页:limit 9,3     [9 10 11]第pageNo页:limit (pageNo - 1) * pageSize  , pageSize

4.12 DQL语言执行顺序

 select ...from...where...group by...having...order by...limit...执行顺序?1.from2.where3.group by4.having5.select6.order by7.limit..

自己的小tip:

1. and/or前后要写全
2. and和or同时出现,用括号区分优先级
3. is null/is not null
4. in/not in

朝花夕拾之MYSQL-01相关推荐

  1. linux 指定库名 登录mysql_数据库学习笔记之MySQL(01)

    目录 01. 什么是数据库? 02. 常见数据库 03. MySQL简介 04. 数据库系统(Database System)的组成 05. SQL语言 06. SQL语言组成 07. MySQL的常 ...

  2. MySQL—01—MySQL介绍和安装

    一. MySQL 简介 1 什么是 MySQL MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司.MySQL 是一种关系型数据库管理系统,关系型 ...

  3. Python Day10 MySQL 01

    MySQL数据库基本管理 Window版本安装 1.下载:MySQL Community Server 5.7.16 http://dev.mysql.com/downloads/mysql/ 2.解 ...

  4. for语句的执行过程_深入学习MySQL 01 一条查询语句的执行过程

    在学习SpringCloud的同时,也在深入学习MySq中,听着,,看着<高性能MySQL>,本系列文章是本人学习过程的总结,水平有限,仅供参考,若有不对之处或有啥建议都可与我联系,感谢! ...

  5. MySQL 01:数据库,MySQL基础

    一.数据库 1.数据储存 大家在自己日常中,存储信息大多用的是文本文档,或者是电子表格,但是对于大量数据的情况下,这样的速度非常慢,所以需要有一种专门管理数据的软件来管理数据 2.数据库 数据库就类似 ...

  6. MySQL 01 什么是数据库(关系型数据库?)

    1.1 为什么要学数据库 JavaEE:企业级 Java 开发,主要做的是 Web 开发.(需要结合 前端 后台 数据库 三大必备技能.) 前端:页面,用来展示数据. 后台:作为一个连接点,中转站.与 ...

  7. mysql 默认当前时间_复制信息记录表|全方位认识 mysql 系统库

    在上一期<时区信息记录表|全方位认识 mysql 系统库>中,我们详细介绍了mysql系统库中的时区信息记录表,本期我们将为大家带来系列第七篇<复制信息记录表|全方位认识 mysql ...

  8. MySQL性能调优与架构设计——第4章 MySQL安全管理

    第4章 MySQL安全管理 前言 对于任何一个企业来说,其数据库系统中所保存数据的安全性无疑是非常重要的,尤其是公司的有些商业数据,可能数据就是公司的根本,失去了数据的安全性,可能就是失去了公司的一切 ...

  9. 【数据库】Navicat Premium12远程连接MySQL数据库

    00. 目录 文章目录 00. 目录 01. 环境介绍 02. Navicat安装 03. MySQL开启远程登录权限 04. Navicat连接MySQL 01. 环境介绍 Navicat版本: N ...

  10. mysql 单表字段多少合适_复制信息记录表|全方位认识 mysql 系统库

    在上一期<时区信息记录表|全方位认识 mysql 系统库>中,我们详细介绍了mysql系统库中的时区信息记录表,本期我们将为大家带来系列第七篇<复制信息记录表|全方位认识 mysql ...

最新文章

  1. CVPR 2020: 移动端机器学习的研究实现
  2. (转)Activity的四种launchMode
  3. 说一说Android事件分发中的requestDisallowInterceptTouchEvent
  4. TypeScript Mixins 概念介绍
  5. po3580SuperMemo(splay)
  6. 由A* = A^T推导问题
  7. 在virtualbox上安装64位centos7和virtual增强工具以及设置共享文件夹
  8. Xcode9 调整模拟器大小
  9. SpringBoot 生产中 16 条最佳实践
  10. 基础矩阵F和本质矩阵E
  11. Linux命令学习(1) cat命令详解
  12. 快速沃尔什变换学习笔记
  13. 【Axure基础教程】第19章 树节点
  14. 2013-8-17 上周工作总结
  15. Rust 数据内存布局
  16. note10 android10,「上手」都说它是年度Android机皇,Galaxy Note10到底怎么样?
  17. 信息科学前沿计算机,基于信息时代背景分析计算机科学技术前沿发展策略
  18. 微信小程序头脑风暴2答题辅助
  19. 2021各地区数字中国发展成效评价
  20. Android小问题解决办法记录

热门文章

  1. 搜狐获得北京奥运会互联网视频转播权
  2. poi 操作excel 2007 设置 字体样式 插入图片
  3. 2018年台湾人口增加1.8万人 增长率创新低
  4. 查询计算机关机方式,查看Win10系统电脑上次的关机方式的方法介绍
  5. 5ATM防水等级是什么意思?手表防水等级讲解
  6. 19.继承和多态的知识点以及“多态测试南北方人案例“和“final“关键字
  7. IOS企业证书到期问题总结
  8. Java面试题(1)
  9. 心电MIT预测算法Android,基于Android系统的心电智能诊断终端算法设计与软件实现...
  10. 连接服务器出现黑屏怎么解决