数据库相关

本文详细介绍了MySQL的基础操作,包括数据库创建、使用、修改、删除,数据表的管理,以及SQL语句如插入、删除、更新、查询的语法,涵盖了数据约束、连接查询、分组、排序和聚合函数等内容,还包括子查询的运用。
摘要由CSDN通过智能技术生成

目录

​编辑

​编辑

类型

关系型数据库

非关系型数据库

MySQL

组成

客户端连接mysql服务器

无UI界面、linux客户端终端连接

有UI界面、客户端navicat软件连接

辨:数据库,mysql,sql,navicat

点点点操作(了解)

常用数据类型

数据约束

linux客户端

数据库操作

查看表的物理信息

sql语句

数据库

创建数据库create database 数据库名 charset=utf8;

使用数据库use 数据库名;

修改数据库alter database 数据库名

删除数据库drop database 数据库名;

数据表

创建数据表create table 表名();

删除数据表drop table 表名;

清空数据表truncate table 表名;

数据

增,insert into 表名

删,delete from 表名

改,update 表名

查,select

语法

根据表字段去重:select distinct 字段名

连接查询:from 表1 join 表2 on 表1.字段=表2.字段

规定

语法

内连接,inner join

自连接,inner join

左连接,left join

右连接,right join

起别名:select/from 字段名/表名 as 别名

给表起别名

给字段起别名

筛选行,字段做条件:where

排序:order by

分组查询:group by

筛选组,字段做条件:having

分页查询:limit

聚合函数

子查询

子查询充当数据源

子查询充当条件


  • 类型

    • 关系型数据库

      • 常用关系数据库
        • oracle
        • mysql
        • sql server
      • 核心要素
        • 数据行/记录
        • 数据列/字段
        • 数据表
        • 数据库
    • 非关系型数据库

      • nosql
      • redis
      • hbase
  • MySQL

    • 组成

      • 服务器
      • 客户端
    • 客户端连接mysql服务器

      • 确定mysql服务器的ip地址
        • 通过ifconfig来确认
      • 确认mysql服务器端口是否开启
        • netstat -anptu |grep 3306
      • 无UI界面、linux客户端终端连接

        • mysql -h数据库ip -P端口号 -u数据库登录用户名 -p数据库登录密码
        • -h不加时,表示服务器为本机
        • -P不加时,默认端口3306
      • 有UI界面、客户端navicat软件连接

    • 辨:数据库,mysql,sql,navicat

      • 数据库分为关系型数据库和非关系型数据库
      • mysql是关系型数据库的一种
      • sql是数据库语言,用于处理数据库
      • mysql分为服务器和客户端
      • navicat是mysql客户端的一种
    • 点点点操作(了解)

      • 数据库操作
        • 新建数据库
        • 使用数据库
        • 修改数据库
        • 删除数据库
      • 数据操作
        • 添加数据
        • 修改数据
        • 删除数据
    • 常用数据类型

      • 整型int
      • 小数decimal(n,m)
        • n代表小数的总位数
        • m代表小数位的位数
      • 字符串varchar(n)
        • n代表字符串的长度
      • 时间datetime
    • 数据约束

      • 主键
        • 主键字段,非空且值唯一
        • 主键字段,不一定只有一个,可以由多个字段组成主键字段组
        • 所有主键字段构成的主键组是一条记录的唯一标识,单一主键不能作为记录的唯一标识
      • 外键
        • 该字段为另一张表的主键,作为当前表的非主键字段
        • 外键非空且唯一(因为外键是其他表的主键)
      • 非空
        • 空和" "空字符不一样
      • 唯一
        • 该字段的值不可重复
        • 唯一的字段可以有多个
        • 主键字段必唯一,唯一字段未必是主键
      • 默认值
    • 数据库的备份和还原
  • linux客户端

    • 数据库操作

      • 查看所有数据库
        • show databases;
      • 查看当前使用数据库
        • select database();
    • 查看表的物理信息

      • 查看当前数据库的所有表
        • show tabels;
      • 查看表结构
        • desc 表名;
      • 查看表的创建语句
        • show create table 表名;
  • sql语句

    • 数据库

      • 创建数据库create database 数据库名 charset=utf8;

      • 使用数据库use 数据库名;

      • 修改数据库alter database 数据库名

      • 删除数据库drop database 数据库名;

    • 数据表

      • 创建数据表create table 表名();

        • 语法
          • create table 表名(
          • 字段名 类型 约束,
          • 字段名 类型 约束
          • );
        • 不同字段之间用 , 区分
      • 删除数据表drop table 表名;

      • 清空数据表truncate table 表名;

    • 数据

      • 增,insert into 表名

        • 添加指定字段
          • insert into 表名(字段名) values(值);
        • 添加整行数据
          • insert into 表名 values(整行记录的值);
        • 添加多条数据
          • insert into 表名 (字段) values(值), (值), .......
      • 删,delete from 表名

        • delete from 表名
          • 语法
            • delete from 表名
            • where 条件
          • 此方法为物理删除,但是工作中大部分使用逻辑删除
          • 逻辑删除的意思是,设置一个字段,标识当前记录是否已删除
        • truncate table 表名
          • 清除表里的所有数据,但不删除表
        • drop table 表名
          • 直接删除表,包括数据和表结构
      • 改,update 表名

        • 语法
          • update 表名
          • set 字段1=值1,字段2=值2
          • where 条件
            • where筛选符合条件的行
      • 查,select

        • 语法
          • select 字段
            • *代表所有字段
            • 去重
            • 数据统计
            • 起别名
          • from 表名
            • 连接
            • 起别名
          • where 条件
          • order by 字段名 asc|desc,默认asc(升序)
          • group by 字段1,字段2,......
          • having 条件
          • limit start, count
        • 根据表字段去重:select distinct 字段名
          • select distinct 字段1,字段2,…… from 表名;
        • 连接查询:from 表1 join 表2 on 表1.字段=表2.字段
          • 规定
            • 左表/主表为:关联键在表中为外键
            • 右表/副表为:关联键在表中为主键
          • 语法
            • select *
            • from 表1 inner join 表2 on 表1.列=表2.列
          • 处理过程:先连接,再查询
          • 内连接,inner join
            • 取两表的交集
            • 连接流程
              • 按照记录先多后少的顺序遍历两张表的记录,每连接两条数据,就在表中“删除”(不是真删)连接的数据
              • 如果记录的主键在另一张表中存在,则连接,否则不连接
          • 自连接,inner join
            • 左表和右表为同一张表
            • 自关联一定要用别名
            • select * from 表 as 别名1 inner join 表 as 别名2 on 别名1.字段=别名2.字段
          • 左连接,left join
            • 两个表连接时,以左表为准,右表中不存在的为空
            • 连接过程
              • 遍历左表的每行记录,如果该记录的关联键在右表内,则连接,否则相应位置为空
          • 右连接,right join
            • 两个表连接时,以右表为准,左表中不存在的为空
            • 连接过程
              • 遍历右表的每行记录,如果该记录的关联键在左表内,则连接,否则相应位置为空
        • 起别名:select/from 字段名/表名 as 别名
          • 给表起别名
            • select 表别名.字段1,表别名.字段2,..... from 表名 as 表别名
            • as可省
          • 给字段起别名
            • select 字段1 as 字段别名1,字段2 as 字段别名2..... from 表名
        • 筛选行,字段做条件:where
          • 遍历每一行,根据字段条件进行数据筛选
          • 数学运算
            • +,-,*,/
          • 比较运算
            • >,<,=,>=,<=,!=/<>
          • 逻辑运算
            • and,or,not
          • 模糊查询:like
            • %,匹配任意多个字符
            • _,匹配任意单个字符
            • 一般,like关键字只用来匹配字段类型为字符串的
          • 范围查询
            • in:集合
              • c in (s1, s2, s3)
              • 等价于or:c=s1 or c=s2 or c=s3
            • between ... and ...:连续数据范围内
              • c between a and b 等价于 c>=a and c<=b
          • 判空
            • is null/is not null
        • 排序:order by
          • order by 字段名 asc|desc,默认asc(升序)
          • 按照多个字段进行排序时,先按照字段1排序,字段1相同的情况下,再按照字段2进行排序,……,在字段n-1相同的情况下,按照字段n进行排序
        • 分组查询:group by
          • select 所有分组字段1,聚合函数(字段1)
            • 注意,此处字段1和group by为相同字段,聚合函数内的字段也为相同字段
          • from 表名
          • group by 分组字段1
          • having 条件
          • 分组的目的是对每一组的数据进行统计(使用聚合函数)
          • 分组之后的数据,只可以用分组字段进行查询,但是聚合函数内可以用非分组字段进行数据筛选
          • select +聚合函数+ group by的处理流程为
            • 先查找select+from+where,再分组group by,最后对每个分组分别进行数据统计(聚合函数)
            • group by之后,必须在select中使用字段进行数据统计,此时*代表每一组的所有数据
          • select+聚合函数 vs select +聚合函数+ group by
            • select +聚合函数+ group by的处理对象为:每个组的数据
            • select+聚合函数的处理对象为:查出来的所有数据
        • 筛选组,字段做条件:having
          • 分组之后,将每一组作为一个表数据,通过having条件对“表数据”进行筛选
          • 处理对象为:每一组数据
          • having可以配合聚合函数进行使用
          • having处理流程
            • 先查找符合条件的数据,select+from+where
            • 再分组,group by
            • 再查找符合条件的分组,having
            • 输出结果
        • 分页查询:limit
          • 查看[start, start+count]条数据
            • select * from limit start, count
              • start,代表开始的记录,从0开始
              • count,代表从start开始,查找多少条记录
          • 假设一页m行,查看第n页的数据
            • select * from students limit (n-1)*m, m;
              • n,代表页数
              • m,代表每页的行数
        • 聚合函数
          • count(某字段):求某字段的记录总数
            • 可以和distinct配合使用,求某字段去重后的数据数
          • max(字段名),min(字段名):对某字段求最大/小值
          • sum(字段名):对某字段求和
          • avg(字段名):对某字段求平均
          • 适用范围
            • select+聚合函数
              • 如果用在select中,则聚合函数的处理对象为查询出来的所有记录,内部处理流程为:先查询,再聚合处理
            • having+聚合函数
              • 如果用在having中,则聚合函数的处理对象为每一组的数据,内部处理流程为:先查找,再分组,最后利用聚合函数进行筛选,筛选出符合条件的分组
            • 注意!聚合函数不可以用在where中
        • 子查询
          • 子查询select语句,要么充当条件,要么充当数据源
          • 执行顺序
            • 从内到外,先执行子查询,再执行主查询
            • 子查询的结果作为主查询的条件
          • 子查询充当数据源
            • from+子查询,子查询作为临时数据表
          • 子查询充当条件
            • where+子查询,子查询作为查询条件
            • 标量子查询
              • 子查询结果为一个值
            • 行子查询
              • 子查询结果为一组值,为子表
            • 列子查询
              • 子查询结果为一组值,为某个字段
            • 子查询特定关键字
              • 从内到外
                • in、any、all、if exists
                • in等价于any
                • not in等价于 !=all
              • 从外到内执行
                • exists/not exists
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙妞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值