Mysql操作

qindarkstone 发布于 2025-02-02 96 次阅读 预计阅读时间: 6 分钟 1346 字


Mysql 终端操作

  • windows 终端使用 mysqlsh root@localhost 链接本地数据库
  • mysql shell 中可使用三种语言 JavaScript、python和MySQL
    • 其中 shell 初始为 js,使用\sql 转换为 sql 语句,python 同理
  • MySQL 快捷键
    • 通过 ctrl+回车 运行当前行 sql 语句

Mysql 基础

  • sql 语句一般并不区分大小写
    • 但为了提高可读性
      • 一般把关键字大写
      • 把表明、列名和其他名称小写
  • sql 语句的分类
    • DDL 数据定义语言
      • 关键字有 CREATE、DROP、ALTER、TRUNCATE
      • 用于定义数据对象
    • DML 数据操作语言
      • INSERT、UPDATE、DELETE、CALL
      • 增删改
    • DQL 数据查询语言
      • SELECT、WHERE
    • DCL 数据控制语言
      • GRANT、REVOKE
      • 用于定义数据库的访问权限和安全级别
  • sql 具体操作
    • 数据库操作
      • 创建数据库:CREATE database 数据库名;
      • 查看数据库:show databases;
      • 删除数据库:drop database 数据库名
      • 选择(使用)数据库:use 数据库名
    • 表操作
      • 创建表:create table 表名(字段的名称 字段的数据类型,)
        • 名称和类型用空格分隔,不同的字段用逗号分隔
      • 查找表结构:desc 表名 describe
      • 修改表结构:alter table 表名 modify column 列名 数据类型
        • modify column 表示修改列
          • 可通过 modify 列名 数据类型 default 1 设置默认值为 1
        • rename column 表示重命名字段 rename column 旧字段名 to 新字段名
        • add column 表示添加列 add column 列名 列数据类型
        • drop column 表示删除列 drop column 列名
      • 删除表:drop table 表名
  • mysql 数据类型(五类)
    • 数值类型
      • 整型int
        • tinyint、smallint、bigint
      • 浮点型float、double
    • 日期时间类型
      • date 日期
      • time 时间
      • datetime 日期时间
      • timestamp 时间戳
    • 字符串
      • char 定长字符串
        • 用 ``来引用字符
      • varchar 变长字符串
      • text 文本
      • blob 二进制数据
      • decimal(n,m)长度为 n,保留 m 为小数的十进制数值
    • json 类型
    • 空间类型

Sql数据操作

  • 插入操作
    • INSERT INTO 表名 (列名1,列名2……)VALUES (新列元素1,新列元素2……)
      • 若表名后的括号中包含所有列,并且顺序也和表结构保持一致,可以不使用括号内列名,表名直接接 values
      • VALUES 后可接多个括号插入多条数据
  • 查询操作
    • select 后接查询(显示)的列名 from 表名 或 select * from 表名
      • * 表示代替所有列
  • 修改操作
    • UPDATE 表名 set 列名 = 值 where 列名(键值,表示修改哪行的数据)=
      • 也可 UPDATE 表名 set 列名 = 值 直接修改所有内容
  • 删除操作
    • DELETE FROM 表名 where = 键值(删除对应键值的内容)

Sql 表导入导出

  • 导出
    • mysqldump -u root -p 表名 > 表.sql
    • -u 后接用户名
    • -p 后接表名
  • 导出
    • mysql -u root -p 表名 < 表.sql

Sql 常用语句

  • where 子句
    • 用来提取那些满足指定标准的记录 where 列 接条件 AND 另一条件
      • 条件可为 =、< 或 > 等
      • 逻辑运算符优先级 NOT > AND > OR, 也可以使用括号改变优先级
        • NOT 可加在任何一个条件语句之前,表示为取反
      • 也可以为 where 列 IN (多个条件)
        • 提取满足 in()内条件的记录
      • where 列 BETWEEN 范围1 AND 范围2
        • 用 BETWEEN AND 查找一个范围内的结果
      • where 列 LIKE 匹配模式
        • 使用 like 来进行模糊查询
          + 使用 % 来表示任意多个字符
          +使用 _ 来表示一个字符
          +使用 REGEXP 来匹配正则表达式
          + 可用通配符来设置模式
          · 表示匹配任意一个字符
          ^ 表示匹配开头
          $ 表示匹配结尾
          [abc] 表示匹配其中任意一个字符
          [a-z] 表示匹配范围内的任意一个字符
          A|B 匹配A或者B
        • where 列名 is null 查找空值
        • where 列名 = '' 查找空字符串(空值)
    • 可同 SELECT、UPDATE和DELETE 一起使用
  • order by 子句
    • SELECT * FROM 表名 ORDER BY 列名
      • 默认升序排列
      • 降序排列要在列名后加上 DESC
      • SELECT * FROM 表名 ORDER BY 列名,第二列名 表名在前列排序的基础上,对后列进行排序
      • ORDER BY 后也可以使用 列的序号(第几列) 进行排序
  • 聚合函数:用于对某列进行计算
    • AVG() 返回集合的平均值
      • SELECT AVG(列名)FROM 表名;
    • COUNT() 返回集合中的项目数
      • SELECT COUNT(*)FROM 表名;
    • MAX() 返回最大值
    • MIN() 返回最小值
    • SUM() 求和
  • 分组查询:group by
    • SELECT 列名 ,count(*)FROM group by 列名
      • 表示按列来进行分组,并且用 count 来得到数量
    • SELECT 列名 ,count(*)FROM group by 列名 having count(列名)条件
      • having 表示对分组进行过滤,后接过滤条件
    • 后也可以继续跟 order by 进行排序
  • limit 数量 表示限制数量
  • distinct 列名 去除重复的内容
  • union 用于合并查询的结果
    • 将两条语句用 union 链接起来即可
      • union 可能会将不同时满足结果的内容去掉
      • 可以使用 union all 合并所有结果
  • intersect 用于查找两个结果的交集
    • 用 intersect 将两个查询语句连接起来
  • except 查找两个结果的差集
    • 用 except 将两个查询语句连接起来

Sql 函数

  • substr(列名,开始位置,截取长度)
    • 截取字符串