Mysql学习基础篇

8.DML:

  • 添加数据:insert
    • 给制定的字段添加数据:insert into 表名(字段名1,字段名2,…)values(值1,值2,…);
      • 值1对应字段名1,值2对应字段名2
    • 给制定字段添加数据:insert into 表名 values(值1,值2,…);
      • 值1对应字段名1,值2对应字段名2
      • 与column的字段顺序一一对应
    • 批量添加数据:insert into 表名(字段名1,字段名2,…)values(值1,值2,…),(值1,值2,…),(值1,值2,…);
    • 注:1.插入数据时,指定的字段顺序需要与值的顺序一一对应
      • 2.如果插入的是字符串或日期,应包含在单引号中
      • 插入的数据大小应该在字段的规定范围内
  • 修改数据:update
    • update 表名 set 字段名1=值1,字段名2=值2,… where 条件
      • where条件:修改的是符合这个条件的记录。可有可无
      • 没有where条件则修改全表
  • 删除数据:delete
    • delete from 表名 where 条件
      • delete不能删除某一个字段的值(要删除用update变成none即可)

9.DQL:关键:select【正常业务中查询远高于增删改】

  • 语法(编写顺序):
    • select

                                  字段列表
      
      
                   from
      
                             表名列表
      
                   where
      
                            列表条件
      
                  group by
      
                            分组字段列表
      
                   having
      
                             分组后条件列表
      
                   order by
      
                             排序字段列表
      
                   limit
      
                             分页参数
      
    • 基本查询:

      • 查询多个字段:1.select 字段1,字段2,… from 表名;
        1. select * from 表名; 查询所有
        • 能不用*就不用,想全部输出就把所有的字段名复制粘贴一次;(不直观/效率低)
      • 设置别名(非必须):select 字段1 as 别名1,字段2 as 别名2… from 表名;(as可省略)
      • 去除重复记录: select distinct 字段列表 from 表名;
    • 条件查询:select 字段列表 from 表名 where 条件列表;

  • 条件构建形式

eg:非空 用: is not null

注意:1.between后面跟着的是最小值;and后面跟着的是最大值

  1. in前要写字段名称,选项间用,连接
  2. like 后面的占位符用’’括住,各个符号间直接链接不用,分开_代表一个字符,%代表一个或多个
  • 聚合函数 (作用于表中的某一列)
    • select 聚合函数(字段列表)from 表名; (后面可用where条件做限定)
      • 注:null不参与计算
  • 分组查询
    • select 字段列表 from 表名 where 条件 group by 分组字段名 having 分组后过滤条件;
      • where条件和having条件可省略
    • where和having的不同:(1)where在分组前//having在分组后
      • (2)判断条件:where不能对聚合函数进行判断,而having可以
    • 执行顺序:where>聚合函数>having
    • 分组之后,查询字段一般为聚合函数和分组字段,查询其他字段无任何意义
  • 排序查询
    • select 字段列表 from 表名 order by 字段1 排序方式,字段2 排序方式2;(支持多字段排序)
      • 排序方式:asc: 升序 (默认) desc : 降序
      • 多字段排序:当第一个字段值相同时,才会根据第二个字段进行排序
  • 分页查询
    • select 字段列表 from 表名 limit 起始索引,查询记录数;
    • 注:(1)起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数;
      • (2)分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是Limit
      • (3)若查询的是第一页数据,起始索引可省略,直接简写成limit 10
  • 执行顺序
    • from—>where—>group by… having —>select—>order by—>limit

9.DCL: 管理数据库用户,控制数据库访问权限

  • 管理用户
    • 查询用户:use mysql

                            select * from user;
      
    • host:主机;同时定位主机名和用户名才能完整的定位一个用户名

      • localhost:只能在本机访问不能远程访问
    • 创建用户:create user ‘用户名’ @ ‘主机名’ identified by ‘密码’;

    • 修改用户密码:alter user ‘用户名’@‘主机名’ identified with mysql_native_password by ‘新密码’;

    • 删除用户:drop user ‘用户名’@’主机名’;

    • 注:创建用户可以使用%通配

      • 主要是数据库管理员使用
  • 权限控制
    • 查询权限:show grants for ‘用户名’@’主机名’;
      • grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’;
      • revoke 权限列表 on 数据库名.表名 from ‘用户名’@’主机名’;

10.函数:一段可以直接被另一段程序调用的代码或程序

  • 字符串函数:select 函数;
    • 对于substring函数:索引从1开始
  • 数值函数(函数可以做嵌套)
  • 日期函数
    • datediff: 第一个时间-第二个时间
  • 流程函数:实现条件筛选,从而提高语句效率
  • case函数中 when x1 then r1可以多个并列

11.约束

  • 概述:作用于表中字段上的规则,用于限制存储在表中的数据
  • 目的:保证表中数据的正确性,完整性和有效性
  • 分类:注:作用于表中字段,可在创建表/修改表的时候添加约束
  • 注:多个约束条件放在一起,中间不用加,直接 就行

    • check(),括号里写要检查的条件
    • default后面要跟设定的默认值(字符串用单引号括住)
  • 外键约束:用来让两张表建立连接,从而保证数据的一致性和完整性

    • 语法:

      添加成功:表格上的字段名会出现蓝色🔑(內键为黄色🔑)

    • 删除外键:alter table 表名 drop foreign key 外键名称;
    • 删除/更新行为:
    • 语法:alter table 表名 add constraint 外键名称 foreign (外键字段)references 主表名(主表字段名) on update cascade on delete cascade; bn

12.多表查询:

  • 多表关系:项目开发时,在进行数据库表结构设计时,会根据业务需求和模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系:一对多(多对一),多对多,一对一
    • 一对多(多对一):在多的一方建立外键,一个员工对应一个部门
    • 多对多:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
    • 一对一:多用于单表的拆分,将一张表的基础字段放在一张表中,其他详情放在另一张表中,以提升操作效率
      • 在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(unique)
  • 多表查询:
    • 笛卡尔积:数学中两个集合A,B所有组合情况(多表查询中需要消除无效的笛卡尔积)
      • 消除无效笛卡尔积:where a=b;
    • 分类:(1)连接查询
      • 内连接:相当于查询A和B的交集部分数据
        • 隐式内连接:select 字段列表 from 表1,表2 where 条件…;
        • 显式内连接:select 字段列表 from 表1 [inner] join 表2 on 连接条件…;
        • 注:为表起了别名后不能再用表原名搜索
      • 外连接:左外连接:查询左表(表1)所有数据,以及两张表的交集部分数据
        • select 字段列表 from 表1 left [outer] join 表2 on 条件
      • 右外连接:查询右表(表2)所有数据,以及两张表交集部分数据
        • select 字段列表 from 表1 right [outer] join 表2 on 条件;
      • 自连接:当前表与自身的连接查询,自连接必须使用表别名
        • select 字段列表 from 表A 别名A join 表A 别名B on 条件…;
        • 可以是内连接,也可以是外连接
        • 把一张表看成2张表,分别命名成A和B
      • 联合查询:union,union all
      • 把多次查询的结果合并起来,形成一个新的查询结果表
        • select 字段列表 from 表A…
        • union[All]
        • select 字段列表 from 表B…;
          • 去掉all→查重
        • 多张表的列数必须保持一致,字段类型也要保持一致
    • (2)子查询:在SQL语句中嵌套select语句,称为嵌套查询,又称子查询
      • select * from t1 where column1=(select column 1 from t2);

      • 子查询外部的语句可以是insert/update/delet/select的任何一个

      • 分类1(根据结果不同):

        • 标量子查询:子查询结果为单个值(数字/字符串/日期/…)
          • 常见操作符:= <> > >= <=
        • 列子查询:子查询结果为一列(可以是多行)
        • 行子查询:子查询结果为一行(可多列)
        • 常用操作符:=,<>,in,not in
        • 表子查询:子查询结果为多行多列
          • 常用操作符:in
      • 分类2:(根据查询位置)

        • where 之后
        • from 之后
        • select之 后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值