• Mysql 数据库


    目录

    Mysql数据库概念

    数据数字信息,属性,对一系列对象具体属性的描述的集合
    数据库数据库就是用来组织(各个数据之间是有关联的,按照规定组织起来的),存储和管理(对数据的增,删,改,查)数据的仓库

    数据库是企业的重要信息资产,在使用数据库时,要注意(查和增 无所谓,删和改  要谨慎,

    数据库的管理系统(DBMS)实现对数据的有效组织,管理和存取的系统软件

    数据库的组成

    数据库是一个系统,是一个人机系统,由硬件,os操作系统,数据库系统,DBMS和数据库的用户共同组成

    用户是通过DBMS(各种数据库软件)来对数据库进行操作

    数据库的分类

    1mysql关系型数据库
    2redis非关系型数据库
    3es索引型数据库

    什么是关系型数据库

    关系型数据库存储数据的结构是一个二维表格
    由行和列组成
    记录,用来描述一个对象信息
    字段,用来描述对象的具体信息

    常见的关系型数据库

    在关系型数据库当中,表里面的数据是关联的,表和表之间的数据也是关联起来的
    1mysql中小型的数据并发请求,用的比较多(因为免费)
    2oracle(甲骨文)高并发,大数据量 才使用它 ,和mysql使用起来差不多,只有一些前后顺序不一样
    3sql-server被淘汰了
    4mariaDByum安装的sql,和数据库一模一样
    5postgresql下一个可能要火起来的数据库

    关系型数据库当中,表里面的数据是关联的,表和表之间的数据也是关联起来

    面试题

    多表关联(多表关联查询),最多可以关联几张表

    最多关联三张表,再多就会降低查询速度,你想关联多少就可以关联多少,理论上可以关联无数

    非关系型数据库

    非关系型数据库的特点它保存的不是一张二维表格,一个  key  对应一个  value  键值对来保存数据,一个键对应一个值,比如 ky32=12 没有什么绝对的关联
    redis(典型的非关系型数据库)缓存型的数据库
    es索引型数据库
    mongDB文档型数据库

    关系型数据库与非关系型数据库对比

    1关系型数据库既然有关联,查询速度相对来说,关系型数据库查询速度慢一点
    2非关系型数据库可以支持高并发读写,对海量数据依旧保持高效率的存储和访问

    Mysql数据库的存储引擎

    15.5版本之间,MYISAM不支持事务和外键的存储引擎,适用于读的相对较多,写的相对较少
    25.6版本之后默认的存储引擎:innodb  ,可以支持事务,外键,行级锁定的存储引擎,还支持高并发性能的应用

    事务

    事务

    在数据库当中,一个或者多个操作组成的数据库操作的序列,这些操作要么全部成功,如果失败一个就全部不执行

    为什么要提出这个概念?

    是为了确保数据一致性和完整性

    事务在数据库中的特性特点:四个性质

    1原子性它是数据库最小的工作单位,要么全部执行成功,要么全部不执行,只要有一个操作时间,整个执行的序列都会被回滚,也就是一个也不生效(撤销操作),哪怕是完成的操作也会被撤销。
    2一致性事务执行前后,数据库的完整性和约束不能被破坏,只有在满足所有的约束条件情况下,事务才能被提交(比如要求只能填写数字,那么除了数字其他所有字符都无法提交)
    3隔离性事务的执行是相互隔离的,一个事物的执行不能受到其他事务的干扰,在并发事务(同时操作)之间互相隔离,防止数据不一致的情况发生。
    4持久性事务一旦提交,他所做的所有修改会被永久的保存在数据库中,即使系统崩溃,提交的数据也不会丢失,确保数据库始终处于一致性的状态,确保数据的完整和一致

    Mysql的名词

    1数据库database
    2表:table,行:row,列:column
    3索引index
    4视图view
    5存储过程procedure
    6触发器trigger
    7用户user
    8权限privilege

    在mysql中的语句规范

    1在数据库系统中,sql不区分大小写,但是建议大写,语句不区分,但是表名是要严格区分大小写的
    2sql语句可以单行书写,也可以多行书写,但是默认都以 (分号;)结尾,推荐多行写
    3关键词不能跨行写或者简写
    4子语句通常位于独立的一行,因为便于编辑,提高可读性

    数据库的命名规则

    1必须以字母开头,后面可以包含数据,可以支持的特殊字符:#,_  , $ 
    2不能使用mysql的保留字,如  table  select 等
    3数据库名,表名,用户名要严格区分大小写

    数据库的字符类型

    int会占4个字节,用来存储整数,范围比较大
    char只能存储固定长度的字符串,用来存储定长度的字符串(比如规定长度为2,那么超过2就不行)
    varchar可变长度的字符类型,存储可变长度的字符串(也不是无限制的改变长度)
    float(m,d)要先申明(m,d)m表示总长度,d表示小数位。单精度浮点存储点数
    double(m,d)双精度浮点数,存储浮点数,同样m表示总位数,d表示小数位(跟float差不多,没什么区别)
    text用于存储大文本数据(csdn就是用的这个)
    image用于存储二进制图像,图片,多媒体(视频)
    decimal(5,2)戴思某,用于存储固定精度的小数,其中5表示总位数,2表示小数,跟float,double,一样没什么本质上区别
    date用于存储日期,如果要存储日期格式那么要以 年-月-日,中间要有 - 表述出来 ,如  2023-10-28
    datetime存储日志  也是一样,格式:年-月-日 空格 时:分:秒,如:2023-10-28  22:50:59
    timestamp和datetime格式一至,可以自动的更新为当前的时间

    数据库字符串有个很重要的点

    char

    占4个字节,无论你是否定义了值,都会占用固定长度的字节大小(不满4个也算4个),举例:定义的值为4,实际值为3,那么占4字节,

    char对比varcha

    r比较占磁盘空间,但读写速度比varchar快

    varchar

    占1个字节,没有定义值就一直占一个(隐藏字节),举例:定义的长度为14,实际使用的长度为5,那么字节为5+1(隐藏字节)也就是6字节,

    varchar对比char

    省磁盘空间,但读写速度比char慢

    注意:都是字符串类型,一定要用单引号引起来 ,如:' 张三 '      ' 李四 '

    Sql语句的分类(面试会问)

    DDL数据定义语言,用于创建数据的对象,创建库,表,索引
    CREATE create   创建
    DROPdrop       删除
    ALTERalter       修改

    创建数据库的命令

    1. mysql -u root -p123456
    2. #mysql -u指定用户root,-p指定密码
    3. show global variables like 'port';
    4. #查看当前数据库使用的端口
    5. show databases;
    6. #查看我当前有那些库
    7. use mysql;
    8. #指定使用mysql这个库
    9. show tables;
    10. #查询当前库下有哪些表
    11. describe user\G;
    12. #查看表结构,加上\G就是纵向查看
    13. desc test1/user;
    14. #查看表结构的简写
    15. create database chen;
    16. #创建一个叫chen的库
    17. show databases;
    18. #查看一下chen的库是否创建完毕
    19. create table chen1 (id int(4) not null,name varchar(12) not null,sroce decimal(5,2),passwd char(48),primary key(id));
    20. #创建一个名字叫 chen1 的表,创建id,name,sroce,passwd四列这是类型,设立主键id不能为空,不能重复,int,varchar,decima,char为数据类型
    21. drop table chen1;
    22. #删除 chen1 表
    23. drop database chen;
    24. #删除 chen 库
    25. insert into chen1 values(1,'cwh',null,'空格');
    26. #对chen1这个表里插入一个数据(一个值)values第一个字符为1(序号),第二个字符为cwh(名字),第三个字符为null(可以为空),第四个字符为空格
    27. select * from chen1;
    28. #查询chen1这个表完整的数据
    29. select * from chen1 where passwd is not null
    30. #查询chen1这个表,passwd行哪一列不是为空?(空格会显示出来,是null的那一列不会显示出来)
    31. select * from chen1 where passwd is null
    32. #查询chen1这个表,passwd行哪一列为空(null那一列会显示出来,空格不显示出来,这个DDL语句,可以快速测试哪些是null或非null)

    Null和空格的区别

    nullnull是什么也没有,对这个对象没有任何的描述信息
    空格空格也是字符

    DML是什么

    数据操作语言,对表中的数据进行管理
    select查询语句,也可以作为管理语句
    update更新
    insert添加
    delete删除,对表进行删除

    DQL

    查询数据记录

    Select

    DCL

    数据控制语言,设置或者更改数据库用户或者用户的权限

    GRANT

    REVOKE

    TCL

    事务控制语句,管理数据库当中的事务

    Commit:确认提交事务   

    一旦提交后反悔可以 : ROLLBACK,:事务提交之后无法回滚,

    Savepoint :检查点(保存点),可以回滚。

    mysql数据库命令实操

    mysql -u  root  -p123456  #指定进入root用户的数据库,密码123456

    show global variables like  'port';

    #查看端口

    show  databases; 

    #展示有哪些库

    show  tabes;

    #展示这个库(你打开了哪个库就会展示哪个表)有哪些表

    创建一个表内容

    desc cw1;

    #查看这个表的结构

    truncate table cw1;

    select  * from cw1;

    insert into cw1 (id,name,sroce,passwd) values(1.'gq',90,'123'); 

    #创建的第一种方式

    insert into cw1 values(2,'hws',95,'456'); 

    #创建的第二种方式

    查看一下

    insert into cw1 values(3,'ymr',91,password('hyde'));   

    #对关键信息进行加密

    update cw1 set passwd=password('000') where id = 2;

    #通过id,set:进行指定passwd那一列的信息进行加密

    insert into cw1 values(6,'lyw',95,'lll');

    #不按顺序进行创建

    delete from cw1 where id = 6;

    #删除cw1表里的id列的第六行

    select * from cw1。如果有大量数据查看会比较慢,可以用指定条件查看,select * from cw1  where  id = 2;

    select * from cw1 limit 2,5l;

    #指定查看2到5行也就是一共4行,如果要查看前2行或者前几行就limit  2;

    select sroce from cw1;

    #指定查看sroce那一列

    select distinct sroce from cw1;

    #指定查询sroce那一列,并且去除重复

    select distinct name sroce from cw1;

    #指定多条件查询,并且去除重复

    alter table cw1 rename cw11;

    #改变表的名字

    alter table cw1 add birth date;

    #创建一个新的列

    update cw1 set birth=date('2020-1-1') where id = 4;

    #指定birth那一列,第4行添加一个年月日

    alter table cw1 change birth birthday datetiem;

    #修改birth那一列的名

    alter table cw1 drop birthday;

    #把birth那一列直接删除

    alter table cw1 modify column passwd varchar(52);

    #改变表里的类型

  • 相关阅读:
    Python编程 列表的常用方法
    23.10.15 《CLR via C#》 笔记6
    idea的macOS Apple Silicon (dmg)版本和macOS (dmg)版本有什么区别
    5分钟搞懂Kubernetes:轻松理解所有组件
    golang标准库-crc32的使用
    2023最新UI工作室官网个人主页源码/背景音乐/随机壁纸/一言
    java 实现单例模式
    新火种AI|微软扶持下一个OpenAI?Mistral AI新模型对标GPT-4,上线即挤爆
    视频转gif的几个方法
    【力扣2656】K个元素的最大和
  • 原文地址:https://blog.csdn.net/2301_79410672/article/details/134080913