MySql学习之路

本文详细介绍了MySQL数据库的基础知识,包括数据库的好处、相关概念、特点,以及MySQL的启动、登录、退出等操作。深入探讨了DQL语言,包括基础查询、条件查询、排序查询、函数等,同时讲解了分组查询、连接查询、子查询、分页查询和联合查询的语法与应用场景。此外,还涵盖了DML操作语言、DDL语言、TCL语言,以及存储过程、函数、变量、流程控制结构等内容,是全面学习MySQL的宝贵资料。
摘要由CSDN通过智能技术生成

MySql学习之路

第一章 数据库入门介绍

数据库的好处

  • 持久化数据到本地
  • 实现结构化查询

数据库相关概念

  • DB(data base)保存一组有组织的数据的容器
  • DBMS(database management system) 用于管理DB中的数据
  • SQL(structure query language) 用于和DBMS通信的语言

数据库的特点

  • 数据放到表中,表再放到库中(表有唯一表名标识自己)
  • 字段–列
  • 对象–行

第二章 MySql 介绍

MySql 启动与停止

  • 方式一:计算机管理-服务
  • 方式二:通过命令行
    net start mysql
    net stop mysql

MySql登陆与退出

  • 方式一:通过MySql自带的客户端(仅限root用户)
  • 方式二:通过命令行
    登陆 :MySQL 【-h 主机名 -p 端口号】-u 用户名 -p密码
    退出:exit 或 ctrl +c

MySql常见命令

  • 查看当前所有数据库
    show databases;

  • 打开指定的库
    use 库名;

  • 查看当前库的所有表
    show tables;

  • 查看其他库的所有表
    show tables from 库名;

  • 查看表结构
    desc 表名;

  • 查看服务器版本
    select version();

MySql 的语法规范

  • 不区分大小写,但建议关键字大写,表名、列名小写
  • 最好用分号结尾
  • 缩进与换行
  • 注释
    单行注释:#注释文字 – 注释文字(一定要空格)
    多行注释:/*注释文字*/

第三章 DQL(数据查询)语言

1. 基础查询

语法

 select 查询列表 from 表名;

特点

  1. 查询列表可以是:表中字段、常量值、表达式、函数;
  2. 查询的结果是一个虚拟表格;

ps:

  1. 加着重号`是为了区分关键字和字段;
  2. sql不区分字符和字符串
  3. 起别名时注意特殊字符,可以用双引号引起来
  4. 如果是字符型和日期型的常量值必须用单引号引起来,数值型不需要
  5. 去重时选择多列则去掉共同值
  • +号的作用:运算符
  1. select 100+90; 两个操作数均为数值型,做加法运算
  2. select ‘123’+90; 其中一方为字符型,试图将字符型数值转换为数值型。如果转换成功,则继续做加法运算;否则,则将字符型视为0.。
  3. select null + 90; 只要其中一方为NULL,则结果一定为null。
  4. 字符的连接用concat函数
  • NULL的处理
    函数ifnull:判断某字段是否为null,是则返回指定值,否则返回原本值
    函数isnull:判断某字段是否为null,是则1,否则0

2. 条件查询

语法

 select 查询列表 from 表名 where 筛选条件;

分类

  1. 条件运算符:> < = <> != >= <=
  2. 逻辑运算符:and && or || not !
  3. 模糊查询:like\ between and \ in \ is null is not null

3. 排序查询

语法

 select 查询列表
 from 表名 
 where 筛选条件
 order by 排序列表 【asc/desc;

特点

  • asc 升序(默认) desc 降序
  • order by 可以支持单个字段、多个字段、表达式、函数、别名
  • order by一般是放在查询语句最后面,limit除外
  • order by 后面直接加数字1,2,3…n,表示第1,2,3…n列

4. 常见函数

概念

将一组逻辑语句封装在方法体中,对外暴露方法名

调用

select 函数名(实参列表)

好处

隐藏了实现细节/提高代码效率、可读性、重用性

特点

叫什么(函数名)/干什么(函数功能)

分类

  1. 单行函数 (如concat length ifnull 等)
    (1) 字符函数 length concat substr instr trim upper lower lpad rpad replace
    (2) 数学函数 round ceil floor truncate mod rand(获取随机数)
    (3) 日期函数 now curdate curtime year month monthname day hour minute second str_to_date date_format daydiff(返回相差天数)
    %Y %y
    %m %c(不带0的月份)
    %d
    %H(24小时) %h(12小时)
    %i(分钟) %s
    str_to_date:将字符转换成日期
    date_format将日期转换为字符
    (4) 其他函数 version database user password/md5(自动加密)
    (5) 流程控制函数
    if(条件表达式,表达式1,表达式2):如果条件表达式成立,返回表达式1,否则返回表达式2
    case
    1)case 变量或表达式或字段
    when 常量1 then 值1
    when 常量2 then 值2

    else 值 n
    end
    2) case
    when 条件1 then 值1
    when 条件2 then 值2

    else 值 n
    end

  2. 分组函数 (统计/聚合/组函数) 做统计使用
    如 sum avg max min count

  • 语法
  select max(字段) from 表名;
  • 支持类型
    sum和avg一般用于处理数值型
    max min count 可以处理任何数据类型
  • 以上分组函数均忽略NULL值
  • 都可以与distinct搭配实现去重
    select sum(distinct 字段) from 表名;
  • count (*)、count(1)、count(字段)统计结果集的行数
    count(字段)统计该字段非空值的个数
    1)count的存储效率问题
    MYISAM引擎下 count(*) 效率最高 因为内部有计数器
    INNODB引擎下 count(*)和count(1)效率差不多,但都比count(‘字段’)更高
  • 和分组函数一同查询的字段,要求是group by 后出现的字段

补充

cast函数 1
作用

CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。

语法
cast(expression AS data_type)
可转换的数据类型

二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
可以转换的类型是有限制的。这个类型可以是以下值其中的一个:

5. 分组查询

语法(按执行顺序标号)

 select 分组函数,group by 后面的字段「5from 表名 「1」
【where 分组前的筛选】 「2group by 分组字段    「3」
【having 分组后的筛选】「4」
【order by 排序列表 【asc/desc】】「6」;

特点

  • 分组查询中的筛选条件分为两类,一类为分组前筛选(放于group by前,where),另一类为分组后筛选(放于group by后,having)
    ps: 分组函数做条件一定放于having子句中
    能用分组前的优先考虑分组前(出于性能的考虑)
  • group by 字句支持单个字段分组,多个字段分组(用逗号隔开,没有顺序要求),表达式或函数(比较少用)
  • 也可以添加排序,排序放在整个分组查询最后

6. 连接查询

含义及语法

当查询中涉及到了多个字段,需要用多表连接

select 字段1,字段2
from1,表2......
where 连接条件

一些现象

笛卡尔乘积现象:表1 m行 表2 n行 结果m*n行

  • 发生原因:没有有效的连接条件
  • 如何避免:添加有效的连接条件

分类

  • 按年代分类:mq92(仅支持内连接)
    mq99(推荐,在mysql中不支持全外连接)
  • 按功能分类
    内连接:等值、非等值、自连接
    外连接:左外连接、右外连接、全外连接
    交叉连接
mq92语法
  1. 等值连接
select 查询字段
from1 别名1,表2 别名2......
where 别名1.key=别名2.keyand 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
  • 多表等值查询结果为多表交集部分
  • n表连接至少需要n-1个连接条件
  • 多表顺序没有要求
  • 一般为表起别名
    ps:为表其别名的好处
    1)提高语句简介度
    2)区分多个重名字段
    tips:如果为表起了别名,则查询字段无法再使用原来的表名
  • 可以搭配之前介绍的所有字句进行使用
  1. 非等值连接
select 查询字段
from1 别名1,表2 别名2......
where 别名1.key  非等值连接条件 别名2.keyand 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
  1. 自连接
select 查询字段
from 表 别名1,表 别名2......
where 别名1.key=别名2.keyand 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
mq99语法
  1. 内连接
  • 特点
    1)可以搭配之前介绍的所有字句进行使用
    2)inner可以省略
    3)筛选条件放在where后面,连接条件放在on后面,提高可读性
    4)与92语法实现效果一样
 select 查询列表      「7from11」
  【innerjoin22on 连接条件       「3」    
    【where 分组前的筛选      「4group by 分组字段      「5having 分组后的筛选      「6order by 排序字段】      「8limit offset, size;      「9
  1. 外连接
 select 查询列表      「7from11left/right/fullouterjoin22on 连接条件       「3」    
    【where 分组前的筛选      「4group by 分组字段      「5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值