• MySQL的概念和sql语句


    数据库的概念

    数据库的概念:数据库是用来组织(各个数据之间是有关联,是按规则组织起来的),存储和管理(增,删,改,查)的仓库

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

    数据库是一个系统,一个人机系统。包含硬件,os,数据库,DBMS和数据库的用户共同组成。

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

    数据库的分类

    随着时代的发展,当今数据库可分为两大类:关系数据库(SQL)非关系数据库(NO SQL)两大类 。

    关系型数据库

    关系数据库的存储结构是二维表格 ,表是有行和列。行称为记录,是用来描述一个对象的信息。列称为字段,是用来描述对象的一个属性

    关系性数据库常见的有:MYSQL ,Oracle,SQL-Server,MariaDB, postgreSQL 

    非关系型数据库

    缓存性数据库: redis     Memcache

          索引型数据库:  ES(Elasttic search)

          时序型数据库:Prometheus

           文档型数据库:MongoDB

     非关系型数据库:是键对值的存储结构(key ——————>   VALUE)

    优点:可高并发读写,对海量数据依旧保持着高效率的存储和访问,具有高扩展性和高可用性
     

    mysql数据库的存储引擎

    5.5之前:MYSAM,不支持事物和外键的存储引擎。适用于读的多,写的少

    5.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的语句规范

    在数据库系统中,sql不区分大小写,但是建议大写。语句不区分,但是表名严格区分大小写。

    sql语句可以单行也可以多行书写,但默认都以 ;结尾。

    关键词不能跨行或者简写。

    子语句通常位于度路航,便于编辑,提高可读性。

    数据库命名规范

    1.必须已字母开头,后面可以包含数据,特殊字符:#_$

    2.不能使用mysql的保留字作为名字 :table select

    3.数据库名 表名 用户名严格区分大小写

    数据库的字符类型

    字符类型用法
    int 4个字节,用来存储整数,范围很大
    char 只能存取固定长度的字符串,用来存储定长的字符串
    varchar 可变长度的字符类型,存储可变长度的字符串。(无限制的可以随便写)
    float (m,d)

    单精度浮点

    m:总长度 d:小数位

    double (m,d) 双精度浮点数,存储浮点数 。M是总位置,d表示小数位
    text 用于存储大文本数据 ,文档,或者字符长度
    image 二进制存储的图像,图片,多媒体
    decimal (5.2) 用于存储固定精度的小数,其中5表示总位数,2表示小数位。
    date 存储日期:YYYY-MM-DD
    datetime 存储日志 yyyy-mm-dd hh:mm:ss (年-月-日-时-分-秒)
    timestamp 和datetime格式一致,可以自动更新位当前的时间戳

    char和varchar的区别

    char:无论是否定义了值,他都会占用固定长度的字节大小

    varchar:在保存时,varchar14 实际长度是5。结果就是实际长度+隐藏符号=6个

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

    sql语句的分类

    DDL:数据定义的语言,用于创建数据的对象,创建库,表,索引。

      CREATE :创建

     DROP :删除

     ALTER:修改

    show global variables like 'port';

    1. show databases;
    2. 查看库
    3. use mysql;
    4. //使用mysql库

    show tables;

    1. describe user\G;
    2. //纵向查看
    3. desc test1;
    4. //简写

    1. show databases;
    2. create databases zzr;

    create table hj (id int(4) not null,name varchar(10) not null,score decimal(5,2),passwd char(48),primary key(id));

    1. desc hj;
    2. //查看表结构

    null和空格的区别:

    null表示什么都没有,对象没有任何的描述信息。

    DML:数据操纵语言,对表中的数据进行管理

    select:查看

    update:更新

    insert:添加

    delect:删除 对表进行删除操作

    insert into hj values(4,'ZZR',92,password('789'))

    1. mysql> update hj set passwd=password('456') where id = 3;
    2. Query OK, 1 row affected, 1 warning (0.00 sec)
    3. Rows matched: 1 Changed: 1 Warnings: 1
    4. mysql> select * from hj;
    5. +----+------+-------+-------------------------------------------+
    6. | id | name | score | passwd |
    7. +----+------+-------+-------------------------------------------+
    8. | 1 | A | NULL | |
    9. | 2 || 90.00 | 123 |
    10. | 3 | AAA | 95.00 | *531E182E2F72080AB0740FE2F2D689DBE0146E04 |
    11. | 4 | ZZR | 92.00 | *531E182E2F72080AB0740FE2F2D689DBE0146E04 |
    12. +----+------+-------+-------------------------------------------+
    13. 4 rows in set (0.01 sec)

    1. mysql> delete from hj where id = 4;
    2. mysql> select * from hj;

    DQL语言:查询数据记录

    1. select * from hj where id = 3;
    2. +----+------+-------+-------------------------------------------+
    3. | id | name | score | passwd |
    4. +----+------+-------+-------------------------------------------+
    5. | 3 | AAA | 95.00 | *531E182E2F72080AB0740FE2F2D689DBE0146E04 |
    6. +----+------+-------+-------------------------------------------+
    7. 1 row in set (0.00 sec)
    8. //查看指定行

    1. mysql> select * from hj limit 2,3;
    2. +----+------+-------+-------------------------------------------+
    3. | id | name | score | passwd |
    4. +----+------+-------+-------------------------------------------+
    5. | 3 | AAA | 95.00 | *531E182E2F72080AB0740FE2F2D689DBE0146E04 |
    6. +----+------+-------+-------------------------------------------+
    7. 1 row in set (0.00 sec)
    8. mysql> select * from hj limit 1,3;
    9. +----+------+-------+-------------------------------------------+
    10. | id | name | score | passwd |
    11. +----+------+-------+-------------------------------------------+
    12. | 2 || 90.00 | 123 |
    13. | 3 | AAA | 95.00 | *531E182E2F72080AB0740FE2F2D689DBE0146E04 |
    14. +----+------+-------+-------------------------------------------+
    15. 2 rows in set (0.00 sec)
    16. limit 2;
    17. //表示前两行

    查看指定列

    1. mysql> select distinct name from hj;
    2. +-----------+
    3. | name |
    4. +-----------+
    5. | A |
    6. ||
    7. | AAA |
    8. | zhaozirui |
    9. | 赵子瑞 |
    10. +-----------+
    11. 5 rows in set (0.00 sec)
    12. //查看指定列

    修改表的名称

    1. 修改表的名称
    2. mysql> show tables;
    3. +---------------+
    4. | Tables_in_zzr |
    5. +---------------+
    6. | hejing |
    7. +---------------+
    8. 1 row in set (0.00 sec)
    9. mysql> alter table hejing rename hj;
    10. //格式
    11. Query OK, 0 rows affected (0.00 sec)
    12. mysql> show tables;
    13. +---------------+
    14. | Tables_in_zzr |
    15. +---------------+
    16. | hj |
    17. +---------------+
    18. 1 row in set (0.00 sec)

    更新信息

    1. mysql> update hj set birth=date('2002-5-31') where id = 4;
    2. //根据唯一索引查看定位

    修改列名

    mysql> alter table hj change birth birthday datetime;

    删除列

    1. 删除列
    2. mysql> alter table hj drop birthday;

    修改字段类型

    1. mysql> alter table hj modify column passwd varchar(52);
    2. Query OK, 5 rows affected (0.01 sec)

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

       GRSNT:赋予权限

       REMOVE:取消权限

       TCL:事物控制语句,管理数据库当中的事物

          commit:确认提交事物,一旦提交就无法修改

          ROLLBACK:事物提交之后无法回滚。

       savepoint保存点,可以回滚

  • 相关阅读:
    ELK 8.5版本安装教程(二)
    Nginx自签名证书的配置
    LeetCode_哈希表_困难_149. 直线上最多的点数
    朴素贝叶斯算法
    HummerRisk V0.5.2:升级对象存储、云检测、云审计和K8s资源态势等
    Jmeter和Postman那个工具更适合做接口测试?
    Redis高可用方案之主从复制
    竞赛 基于深度学习的视频多目标跟踪实现
    【leetcode】98. 验证二叉搜索树
    TDengine3.0 踩坑实录
  • 原文地址:https://blog.csdn.net/qq_51506982/article/details/134075296