Mysql必知必会笔记

前景概要

需要下的文件
sql脚本
适用于:4.1以上的版本

基本概念

数据库:

  • 概念: 保存有组织的数据容器

表:

  • 概念:是一种结构化的文件,可用存储某种特定的类型的数据
  • 表名:用来表示自己的用途,且当前数据库表明不能重复
  • 列: 表中的一个字段,用于存储特定的信息
  • 行:即代表表中存储的一个记录

主键:

  • 概念:用于唯一区分表中每一个行.(一般都是字段ID)
  • 好处: 便于后期数据的管理和操纵
  • 适用主键的字段:
    • 任意两行度不具有相同的主键值
    • 每个行都必须有一个主键,且主键不能为空
  • 属于MySql第一范式,
  • 复合主键
    • 概念:可以以多个列作为主键使用
    • 要求:所有列值的组合必须唯一,单个列的值可以不唯一
MySql简介

一.mysql的优点:

  1. 成本: 免费
  2. 性能:执行效率高
  3. 可信赖:很多企业都在使用MySql来处理自己重要的数据
  4. 简单: 便于上手

二.mysql基于客户机-服务器的数据库库

  • 负责所有数据访问和处理的一个软件,而这个软件则运行在称为数据库服务器的计算机上
  • 服务器: 关于数据处理
  • 客户机:与用户交互的软件

三:安装:

  • 略:

四:MySql的连接

  • 使用cmd登录命令
    • mysql -P 3306 -h localhost -u root -p
      • -P :端口号 :默认为3306端口
      • -h :ip : localhost:即本地连接到MySql服务器
      • -u :用户名
      • -p :密码
  • 选择数据库
    • USE 数据库名 ;
  • 查看所有数据库
    -SHOW DATABASES;
  • 进入数据库,获取该数据库中所有的表
    • SHOW TABLES;
  • 显示表的结构
    • SHOW COLUMNS FROM 表名;
      • TYPE: 数据类型
      • NULL:是否为空
      • Key : 键的信息
      • Default: 默认值
      • Extra:其他信息
        • auto_increment:自增
          -支持DESCRIBE语句
    • DESCRIBE 表名 ; 与前者效果相同
  • 其他命令
    • SHOW STATUS: 显示服务器的信息
    • SHOW GRANTS; 用于显示授权用户的安全权限
    • SHOW ERRORS 和SHOW WARNINGS 显示服务的错误与警告
检索数据
  • 常见的问题
  • 通配符 * 的使用
    • 一般尽量少使用通配符,不明确所需的列,通常降低检索和应用程序的性能
    • 好处:检索未知列
  • distinct 去重关键字
    • DISTINCT:关键字应用于所有的列,因此如果查询多个列时使用 ,除非你查询所有的列属性相同才去重
  • limit 关键字 限制查询
    • 检索的起始小标为 0
  • order by 排序
    • 默认是顺序(ASC) 可以设置为倒序(DESC
    • 如果排序有多列,按照层级目录依次排序
    • 使用查询顺序:

from xx
order by xxx
limit xxxx

过滤查询 where
  • 空值查询(IS NULL 和 IS NOT NULL)

    • 用途: 过滤NULL
    • NULL 并非空字符串,0 仅仅作为特殊的值
  • NOT 的使用

    • 使用条件: MYSQL 支持 IN , BETWEEN 以及 exists 字句中取反使用
  • like 通配查询

    • %:表示 0 - n 个字符通配
    • - : 表示 一个占位符
    • 注意事项: 不要过度使用
  • 查询顺序

from xxx
where xxx
order by xxx

函数的使用
  • CONCAT() 用于 多条数据的拼接或者拼接常量
  • LTRIM() 和RTRIM() 用于去出除(左)右多余空格 ,但对内容不影响
  • Upper() :将查询列的值转成大写
  • Lower() :将查询列的值转成小写
  • length():返回字符串的长度
  • 聚集函数的使用
  • AVG() 自动忽略NULL值
  • COUNT()
    • COUNT(*) 统计表中的行的数目,无视是否为NULL值
    • COUNT(Column) 对指定列的进行行的计数,自动忽略NULL值
  • MAX():自动忽略NULL, 如果用于文本,则返回最后一行
  • MIN():自动忽略NULL,与MAX相反
  • SUM();自动忽略NULL
    • 和 DISTINCT 搭配使用
    • 事例:select AVG(DISTINCT prod_price) AS AVG_PRICE
分组查询

group by 常与 having 搭配使用

  • 顺序

select xxx
from xxx
where xxx
group by xxxx
having xxx
order by xxxx
limit xxxx

子查询
  • 场景一:

    • Q:绝不能将顾客的清单和订单的清单存储在一张表
    • A:造成检索和访问困难,应该创建两张表
  • 场景二:

    • Q:不要使用MySql的关键字去命名一张表或列
    • A:可能导致数据库的报错,如果已经使用该关键字,需使用()将该字段引起(例如 - order,esc下面的的按键(很遗憾无法显示))
  • 场景三:

    • Q:where 子句何时使用单引号
    • A: 如果操作的列 比较的是 字符串类型 ,则需将值引起,如果是数值则无需引起
    • 事例: where name = ‘zsf’
  • 场景四:

    • Q :where id =32 or id =33 and name =‘zsf’;
    • A:查询出结果可能报错,由于and 优先级高于 or ,因此查询时不要吝啬的使用小括号,消除不必要的歧义
  • 场景五:

    • Q: 使用 where name like ‘%zs’ ;
    • A: 无法查找到zsf对象 ,很有可能 zsf 时后尾多了空格
  • 场景六:

    • Q: 当你查询某一天的订单,然而订单日期为datetime,无法通过 where order_date = ‘2005-01-01’
    • A: 你需使用到 date() 日期函数 where Date(order_date )= ‘2005-01-01’
    • A: where Date(order_date) Between ‘2005-01-01’ AND ‘2006-10-01’ 查询这个时间段
    • A: where Year(order_date)=2005 AND Month (order_date) = 9; 查询 2005年 9月
  • 场景七:

    • Q: where 和having的区别
    • A: where 过滤的是行而并非分组 (属于分组之前), 而having 基于group by分组之后进行过滤 (分组之后),having 可以使用聚合函数 ,而where 则无法使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值