经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MySQL » 查看文章
mysql
来源:cnblogs  作者:不善严辞  时间:2021/2/18 15:26:36  对本文有异议

@

MySQL讲解

一.启动服务

  • 用管理员身份运行命令提示符
  1. 停止服务
  2. net stop + 服务名
  3. 启动服务
  4. net start + 服务名
  5. 查询服务器连接所用端口信息
  6. select @@port;
  7. 查询系统所支持的存储引擎类型
  8. show engines;
  9. 登录到MySQL服务端查看服务器版本信息
  10. select version();
  11. 未登录到MySQL服务器端查看服务器版本信息
  12. mysql --version/--V;
  13. 查看默认存储引擎
  14. show variables like 'default_storage_engine';

二.MySQL命令之数据库操作

  1. 创建数据库
  2. create database 库名;
  3. 查看当前所有数据库
  4. show databases;
  5. 打开指定的数据库
  6. use 库名;
  7. 删除指定的数据库
  8. drop database 库名;
  9. 查看当前在哪个数据库
  10. select database();
  11. 查看数据库的存储引擎
  12. show variables like 'storage_engine'
  13. 查看数据库的存储引擎
  14. show variables like '%storage_engine%'

三. MySQL命令之表操作

  1. 创建表
  2. create table if not exists 表名
  3. 查看当前数据库的所有表
  4. show tables;
  5. 查看其他数据库的所有表
  6. show tables from 库名;
  7. 查看表结构
  8. desc 表名;
  9. show index from 表名;
  10. show create table 表名 \g
  11. 删除表
  12. drop table [if exists] 表名;

四.MySQL语法规范

  • 不区分大小写,但建议关键字大写,表名,列名小写
  • 建议每条命令用分号结尾
  • 每条命令根据需要,可以进行缩进或换行
  • 注释
    • 单行注释:# 或 --格 注释文字
    • 多行注释:/.../

MySQL数据类型

数据类型 系统数据类型
整数型 TINYINY / SMALLINT / MEDIUMINT / INT / BIGINT
精确数值型 DECIMAL(M,D) / NUMERIC(M,D)
浮点型 FLOAT / REAL / DOUBLE
位型 BIT
二进制型 BINARY / VARBINARY
字符型 CHAR / VARCHAR / BLOB / TEXT / ENUM / SET
Unicode字符型 NCHAR / NVARCHAR
文本型 TINTTEXT / TEXT / MEDIUMTEXT / LONGTEXT
BLOB类型 TINYBLOB / BLOB / MEDIUMBLOB / LONGBLOB
日期时间型 DATETIME / DATE / TIMESTAMP / TIME / YEAR

五.DQL语言(主查询)

  • 基础查询

    • 语法

    select 查询列表 from 表名;

    • 类似于

    system.out.printLn(打印的东西)

    • 特点
      • 查询列表可以是
        1. 表中的字段
        2. 常量值
        3. 表达式
        4. 函数
      • 查询结果是一个虚数值
      • 起别名
        1. 使用AS

        select 要查询的字段 As 别名;

        1. 使用空格

        select 要查询的字段 别名;

      • 去重

      select distinct 要查询的字段 from 表名;

      • 拼接

      select concat(str1,str2,...) As 别名;

  • 条件查询

    • 语法

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

    • 筛选条件分类
      • 条件运算符
      1. >.<.=.!=.<>.>=.<=
      • 逻辑运算符
      1. &&(与) / ||(或) / !(非) / and / or / not
      • 模糊查询
      1. like / between / and / in / is null / is not null

      like一般与通配符搭配使用
      - 通配符
      1. %:任意多个字符,包含0个字符
      2. _:任意单个字符

  • 排序查询

    • 语法:
    1. select * from student
    2. where [筛选条件]
    3. order by 排序列表 [asc | desc]

支持多字段排序,中间用,分割

  • 常见函数

    • 概念:类似Java中的方法
    1. 隐藏了实现细节
    2. 提高代码的重用性
    • 调用

    select 函数名() [from 表];

    • 分类
    1. 单行函数

    concat:拼接字符串
    length:个数
    ifnull:判断是否为空

    1. 单行函数:
    2. 字符函数
    3. 获取参数值的字节个数
    4. length
    5. 拼接字符串
    6. concat
    7. 变大写
    8. upper
    9. 变小写
    10. lower
    11. 截取字符串
    12. substr/substring
    13. 返回str2str1中第一次出现的起始索引
    14. instr(str1,str2)
    15. 去掉str2中前后的str1
    16. trim(str1 form str2)
    17. eg:select trim('a' from 'aaaStudentaaa');
    18. 用指定的字符实现左填充指定长度
    19. lpad(str,len,str)
    20. 右填充
    21. rpad
    22. 替换
    23. replace
    24. 数学函数
    25. 四舍五入
    26. round
    27. 向上取整
    28. ceil
    29. 向下取整
    30. floor
    31. 截断
    32. truncate()
    33. 取余
    34. mod
    35. 日期函数
    36. 返回当前系统日期和时间
    37. now
    38. 返回当前系统的日期,不包含时间
    39. curdate
    40. 返回当前系统的时间,不包含日期
    41. curtime
    42. 将日期格式字符转换成指定格式
    43. str_to_date('9-13-2020','%m-%d-%y')
    44. 将日期转换为字符串
    45. date_format('2020/11/16','%y年%m月%d日')
    46. 返回(date1-date2)的天数
    47. DATEDIFF(date1,date2)
    48. 其他函数
    49. 查看MySQL版本号
    50. version()
    51. 查看当前数据库
    52. database()
    53. 查看当前用户
    54. user()
    55. 流程控制函数
    56. if函数:实现if else的效果
    57. case函数:
    58. --switch case的效果
    59. 语法:(当then后面接的是语句的时候,要用';'结尾,值的话就不用)
    60. case 要判断的字段或表达式
    61. when 常量1 then 要显示的值1或语句1
    62. when 常量2 then 要显示的值2或语句2
    63. ...
    64. else 要显示的语句n或值
    65. end
    66. --多重if
  • 分组函数

    • 功能:做统计使用,又称为统计函数、聚合函数、组函数
    1. 分类:
    2. 求和
    3. sum
    4. 平均值
    5. avg
    6. 最大值
    7. max
    8. 最小值
    9. min
    10. 计算非空的值的个数
    11. count
    • 特点:
      1. 一般sum、avg处理数值类型的数据
        max、min、count可以处理任何类型
      2. 以上分组函数都忽略null值
      3. 可以和distinct搭配去重
      4. count函数的详细介绍
        一般用count(*)统计行数
      5. 和分组函数一同查询的字段要求是group by后面的字段
    • 效率:

    MYISAM存储引擎下,count()效率最高
    innodb存储引擎下,count(
    )和COUNT(1)效率差不多,但比COUNT(字段)要高一些

  • 分组查询

    • 语法:

    select 分组函数,列(要求出现在group by的后面)
    from 表名
    【where 筛选条件】
    【group by 分组列表】
    【order by 子句】

  • 注意:查询列表必须特殊,要求是分组函数和group by后出现的字段

  • 特点:

    1. 分组查询中的筛选条件分为两类
      分组前筛选:从原始表筛选,放在group by前,用where关键字
      分组后筛选:分组后的结果集,放在group by后,用having关键字
    2. 分组函数做条件一定放在having子句中
    3. group by子句支持
      单个字段分组
      多个字段分组(多个字段之间用逗号来连接)
      表达式
      函数
    4. 也可以添加排序
  • 连接查询

    • 含义:又称为多表查询,多表连接,当查询的字段涉及/来自多个表时
    • 笛卡尔乘积现象:表1 m 行,表2 n 行,结果=m*n行
    • 如何发生:没有有效的连接条件
    • 如何避免:添加有效的连接条件
    • 分类:
    • 按年代分类

    sql92标准:仅仅支持内连接
    sql99标准【推荐】:支持内连接+外连接(左外、右外)+交叉连接

    • 按功能分类
      • 内连接

        等值连接
        非等值连接
        自连接

      • 外连接

        左外连接
        右外连接
        全外连接

      • 交叉连接
  • 子查询

  • 分页查询

  • union联合查询

六.DML语言(对表中的数据操作)

  1. - 查看
  2. select * from 表名;
  3. - 插入
  4. - 语法一
  5. > insert into 表名 (字段名,...) value(值,[约束]),(值,[约束]);
  6. - 特点
  7. 1. 要求值的类型和字段的类型一致或兼容
  8. 2. 字段名和值要匹配
  9. - 语法二
  10. > insert into 表名 set=值,...;
  11. - 语法三
  12. > insert into 表名 values();
  13. - 修改
  14. - 语法
  15. > update 表名 set 字段=值,字段=值 [where 筛选条件];
  16. - 删除
  17. - 语法
  18. > delete from 表名 where id=1;
  • 标识列
    • 又称为自增长列

    • 含义:可以不用手动的插入值,系统提供默认的序列值

    • 特点

      1. 标识列必须与一个key搭配使用,可以是primary key、foreign key、unique……
      2. 一个表至多一个标识列
      3. 标识列类型只能是数值型
      4. 标识列可以通过:SET auto_increment_increment=3;设置步长
      5. 标识列可以通过手动插入值来设置起始值
    • 创建表时设置标识列

      • 关键词:auto_increment
      1. 查看标识列
      2. show variables like '%auto_increment%';
      3. {
      4. auto_increment_increment:步长
      5. auto_increment_offset:默认值,MySQL中不支持修改默认值
      6. }

七. DDL语言(表字段操作)

  • 表的约束
    • 常见约束:六大约束
      1. 非空约束
      2. not null
      3. 默认约束
      4. default
      5. 主键约束
      6. primary key
      7. 外键约束
      8. foreign key
      9. 唯一性约束
      10. 类似于primary key,可以为空
      11. unique
      12. 检查约束
      13. check
      • 约束可以分为表级约束和列级约束
      • 列级约束,在列后面添加
      • 表级约束

      constraint 约束名 约束类型;

修改表名
alter table 旧表名 rename [to] 新表名;

修改列名/字段语法规则
alter table 表名 change 原字段名 新字段名 新字段类型;

添加列
alter table 表名 add column 列名 类型 [first | after 字段名];

修改列类型或约束
alter table 表名 modify column 列名 新类型 [新约束];

删除某列
alter table 表名 drop column 列名;

复制旧表的结构
create table if not exists 表名 like 旧表名;

复制旧表的结构和数据
create table if not exists 表名 select 查询列表 from 旧表名 [where 筛选条件];

  1. ### 八.TCL语言(事务控制语言)
  2. - TCL语言
  3. - 通过show engines;来查看MySQL支持的存储引擎
  4. - 其中innodb支持事务,而myisam,memory等不支持事务
  5. - 事务的属性/特点:
  6. - 原子性:一个事务不可再分割,要么全部执行,要么全部不执行
  7. - 一致性:一个事务执行会使数据从一个一致状态切换到另一个一致状态
  8. - 隔离性:一个事务的执行不受其他事务的干扰
  9. - 持久性:一个事务一旦提交,则会永久的改变数据库的数据

原文链接:http://www.cnblogs.com/yes20000912/p/14381510.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号