zoukankan      html  css  js  c++  java
  • MySQL数据库

    MySQL数据库

    数据库管理系统

    数据库管理系统是一种大型软件。

    常见的关系型数据库管理系统:

    • Oracle
    • DB2
    • SQL Server:现在用得少了
    • SQL Lite:用于手机端
    • MySQL:目前不要下载最新的8.0,下载5.7版本的。

    下载地址:https://downloads.mysql.com/archives/installer/

    MySQL数据库安装步骤略,环境配置很简单:

    1. 新建系统变量%MYSQL_HOME%,值为MySQL Server 5.7所在路径,默认为C:Program FilesMySQLMySQL Server 5.7
    2. 修改系统变量path,增加一个值为%MYSQL_HOME%in

    MySQL数据类型

    数值类型

    数据类型 字节数
    INT 4
    DOUBLE 8
    DOUBLE(M,D) 8。M表示长度,D表示小数位数
    DECIMAL

    日期类型

    DATE

    TIME

    YEAR

    DATETIME

    TIMESTAP:时间范围短,不要用这个。

    字符串类型

    CHAR:用于定长字符串,如性别。

    VARCHAR:用于变长字符串。

    BLOB:二进制。

    TEXT:长文本数据。

    数据表的操作:

    更改数据表的结构

    ALTER TABLE 表名 操作......

    操作包括:ADD,MODIFY,DROP,CHANGE,RENAME

    修改记录的内容

    1. UPDATE

    UPDATE 表名 SET 列1=新值1, 列2=新值2 WHERE 条件

    注意:UPDATE语句常常需要配合WHERE条件一起使用,某则UPDATE将对整张表更新!

    1. DELETE

    删除符合条件的记录。
    DELETE FROM 表名 WHERE 条件

    1. TRUNCATE

    清空整张表。
    TRUNCATE 表名

    Q: TRUNCATE 表DELETE FROM 表 有何区别?

    A:TRUNCATE是销毁表然后按照原表结构重新建一张表,原表的行不受影响;
    SELETE FROM 表是逐行删除表的每一行,每行都受到影响。

    实体完整性约束

    • 主键约束 PRIMARY KEY:表中的某列值不可重复。
    • 唯一约束 UNIQUE:表中的某列值不可重复,但可以为NULL。
    • 自动增长列 AUTO_INCREMENT:自动增长,只能配合主键使用,使得INT类型的主键从1开始每次加1。

    域完整性约束

    对列的单元格的正确性做约束

    • 非空 NOT NULL
    • 默认值约束 DEFAULT:插入记录时指定某字段为DEFAULT时,其值会设为创建该列时用DEFAULT指定的默认值。

    引用完整性约束

    CONSTRAINT 引用名 FOREIGN KEY(列名) REFERENCES 被引用表(列名)

    注意:
    创建表时,先创建主表,后创建从表;
    删除表时,先删除从表,再删除主表。

    事务

    事务是一个原子操作,由一条或多条SQL语句组成。这些SQL语句必须全部执行成功,事务才算成功;如果其中某条SQL语句执行失败,则整个事务失败。

    事务的特性(ACID)

    1. 原子性:一个事务内的所有操作是个整体。
    2. 一致性:操作失败时,数据库要回滚到操作之前的状态。
    3. 隔离性:在执行完毕之前,数据的改变是外部看不到的。
    4. 持久性:持久性事务完成之后,它对系统的影响是永久性的。

    事务的操作

    1. 开启事务:START TRANSACTION

    2. 提交修改:COMMIT

    3. 回滚:ROLLBACK

    开启事务后执行的SQL语句都属于事务,全部执行成功后执行COMMIT进行提交,否则用ROLLBACK进行回滚。

    用户管理

    创建用户

    CREATE USER 用户名 IDENTIFIED BY 密码

    授权

    GRANT ALL ON 数据库.表 TO '用户名'

    数据库.*是指数据库里的所有表。

    撤销权限

    REVOKE ALL ON 数据库.表 FROM '用户名'

    注意:撤销权限后,被撤销权限的人要在下次登录后才生效。

    删除用户

    DROP USER 用户名

    视图

    视图用来临时保存查询结果。视图不单独存储数据,原表内容发生改变时视图内容也会发生改变。

    优点:简单性;安全性

    缺点:

    创建视图

    CREATE VIEW 视图名 AS 查询语句

    修改视图

    1. 若明确知道视图名存在,则可以这样修改:

      ALTER VIEW 视图名 AS 查询语句

    2. 若不确定某视图名是否存在,可以这样修改:

      CREATE OR REPLACE 视图名 AS 查询语句

    删除视图

    DROP VIEW 视图名

    删除视图不会影响原表。

    关于视图的注意事项:

    1. 视图不独立存储数据。原表改变内容,则视图跟着变化;
    2. 视图没有优化任何查询性能;
    3. 如果视图有以下结构,则视图不能修改:
      1. 聚合函数的结果;
      2. GROUP BY分组后的结果;
      3. HAVING过滤后的结果;
      4. DISTINCT去重后的结果;
      5. UNIONUNION ALL 联合的结果。

    参考资料

    https://www.bilibili.com/video/BV1BZ4y1H7LZ?from=search&seid=277125244471690868

    B站记录视频学习进度:

    1 2 3 4 5 6
    7 8 9 10 11 12
    13 14 15 16 17 18
    19 20 21 22 23 24
    25 26 27 28 29 30
    31 32 33 34 35 36
    37
  • 相关阅读:
    linux 上安裝lnmp
    html 禁用点击事件
    nftables 是什么? 提供什么功能? 如何使用?
    ESXi主机RAID卡_HBA卡_网卡 型号_固件_驱动查询
    Celery Beat定时任务
    Centos 7/8 安装Rabbit-MQ
    Celery 最佳实践
    Django 3.0 + Celery 4.4 + RabbitMQ
    C语言Socket示例
    深入理解计算机系统 — 读书笔记
  • 原文地址:https://www.cnblogs.com/elisha/p/14025011.html
Copyright © 2011-2022 走看看