关系型数据库与MySQL相关命令总结

0. 相关概念  
    ~ DB / RDB - relational database  
    ~ 关系型数据库管理系统 DBMS / RDBMS - relational database management system  
    ~ 数据库管理员 DBA - database administrator  
    ~ DBS - database system  
    ~ 结构性查询语言/不仅仅是sql SQL / NoSQL - structured query language / not only SQL  
        - 键值对保存数据 KV数据库 - Redis / DynamoDB - 性能极好 - 游戏开发 / IoT应用 / 实时分析   
        - 体量大的低价值数据库 文档数据库 - MongoDB / DynamoDB / CouchDB - 价值低体量大 / 扩展能力 - 内容管理 / 日志处理 / 实时协作同步  
        - 列族数据库 - Cassandra / HBase - 大数据场景下提数性能好 / 实时查询  
        - 图数据库 - Neo4j / MemGraph - Cypher - 社交网络 / 推荐系统 / 流数据处理  
        - 时序数据库 - InfluxDB / Prometheus / DolphinDB - 时间序列分析 - 金融 / 监控  
        - 搜索引擎 - ElasticSearch / Solr - 倒序索引 - 全文检索  
  
1. 关系型数据库的特征  
    ~ 理论基础 - 关系代数(集合论、一阶逻辑、关系运算)  
    ~ 具体表象 - 用二维表组织数据  
        - 表 - 实体(entity)- 关系(relation)  
        - 行 - 记录(record)- 元组(tuple)  
        - 列 - 字段(field)- 属性(attribute)  
        - 主键(primary key)  
        - 外键(foreign key)  
        - 行数 - 集合的势(cardinality)  
        - 列数 - 集合的度(degree)  
        - 取值范围 - 域(domain)  
    ~ 编程语言 - 结构化查询语言 - SQL  
        - 数据定义语言 - DDL - create / drop / alter / rename / truncate  
        - 数据操作语言 - DML - insert / delete / update / select  插入/删除/更新/查询
        - 数据控制语言 - DCL - grant / revoke  
        - 事务控制语言 - TCL - start transaction / commit / rollback  
  
2. 关系型数据库相关产品  
    ~ Oracle  
    ~ MySQL  
    ~ IBM DB2  
    ~ Microsoft SQLServer  
    ~ PostgreSQL  
    ~ MariaDB  
  
3. MySQL相关知识  
    ~ 性能好、成本低、可靠性高  
    ~ LAMP --> Linux + Apache + MySQL + PHP  
    ~ MySQL的SQL方言跟大数据平台的HiveSQL相似度最高  
    ~ 安装和启动  
        - Windows环境 - MySQL Installer - Windows服务 - MySQL80  
        - macOS环境 - MySQL Server / MySQL Workbench - 系统设置 - MySQL  
        - Linux环境 - CentOS / Redhat - 包管理工具RPM  
    ~ 连接MySQL服务器  
        - 命令行客户端 - mysql -h localhost -u root -p  
        - 图形化客户端  
            ~ Workbench - 功能比较完备,界面不够漂亮 - 官方工具  
            ~ Navicat - 付费工具,界面漂亮,功能比较强大 - PremiumSoft  
            ~ SQLyog - 付费/社区,功能比较强大,界面一般 - Webyog  
            ~ DataGrip - 支持多种数据库,智能代码编辑器,资源占用高 - JetBrains  
  
4. MySQL命令  
    ~ show - 显示相关信息  
    ~ help - 获取帮助信息  
    ~ system - 调用系统命令  
    ~ source - 执行SQL脚本  
    ~ edit - 打开文本编辑器  
    ~ quit - 退出客户端  
  
5. 使用DDL建库建表  
    ~ 创建数据库  
    create database db_name default character set utf8mb4;  
  
    ~ 删除数据库  
    drop database if exists db_name;  
  
    ~ 切换上下文  
    use db_name;  
  
    ~ 创建二维表  
    create table table_name  
    (  
        field_name data_type not null,  
        field_name data_type default x,  字段名,数据类型
        ...  
        primary key (field_name)  约束
    );  
    指定重音、大小写不敏感,是默认的
   
  
    ~ 删除二维表  
    drop table if exists table_name;  
      
    ~ 修改二维表  
        - 添加列  
        alter table table_name add column field_name data_type;  column可以省略
        - 删除列  
        alter table table_name drop column field_name;  
        - 修改列  
        alter table table_name modify column field_name data_type;  
        alter table table_name change column old_field new_field data_type;  
        - 添加约束  
        alter table table_name add constraint ...;  
        - 删除约束  
        alter table table_name drop constraint ...;  
        - 修改表名  
        alter table old_table_name rename to new_table_name;

    

6. SQL数据类型  
    ==~ help获取帮助信息==
    help 'data types';  查看数据类型
    help 'decimal';  
    help 'varchar';  
  https://devdocs.io/mariadb/

    ~ 整数 - tinyint / smallint短整数 / mediumint / int / bigint长整数  
              1字节      2字节       3字节     4字节   8字节  
        int / integer - 取值范围从 -2^31 到 2^31-1  
        int unsigned - 无符号整数 - 只能表示0和正数 - 取值范围从 0 到 2^32-1  
        int(4) zerofill - 11 --> 0011 / 123 ---> 0123 / 1234 ---> 1234  4位整数,不足用0填充
        ----------------------------------------------------------------  
        bigint - 取值范围从 -2^63 到 2^63-1  
        bigint unsigned - 只能表示0和正数 - 取值范围从 0 到 2^64-1  
        ----------------------------------------------------------------  
        smallint - 取值范围从 -32768 到 32767  
        smallint unsigned - 只能表示0和正数 - 取值范围从 0 到 65535  
    ~ 小数 - float / double / numeric / decimal / dec  
        decimal(M,D) / numeric - M位有效数字,小数点后面有D位有效数字  decimal(4,2)99.99
        最大值:M - 65, D - 30  
        默认值:M - 10, D - 0  
    ~ 字节串 - binary / varbinary - 二进制数据  固定/可变
    ~ 字符串 - char / varchar  
        char(M) / charater - 定长字符串 - 255  
        varchar(M) / character varying - 变长字符串 - 65535 ---> utf8mb4 ---> varchar(16383)  65535/4=16383
        经验:不要把大文本或大二进制数据放到数据库二维表中,比较好的做法是保存文件的资源路径  
    ~ 日期和时间 - date / time / datetime / timestamp  
        date - 日期 - 1998-05-08  
        time - 时间 - 14:25:39  
        datetime - 日期时间 1998-05-08 14:25:39  
    ~ 其他类型  
        boolean - tinyint - 1 / 0  
        enum / set - 有限选项 - enum('男', '女') / enum('东', '南', '西', '北')  枚举/集合{MySQL方言
        longtext / longblob - 文本大对象(CLOB)/ 二进制大对象(BLOB)- 单列4G  
        json - JSON数组 / JSON对象 - [1, 2, 3] / {'name': '骆昊', 'age': 43} - 4G

7. 表关系的建立  
    ~ 一对一 - 多对一的特例,可以将任何一方视为多添加外键列,再给外键列加唯一约束  
    ~ 一对多 - 在多的一方添加外键列  
    ~ 多对多 - 创建中间表,将多对多关系变成两个多对一关系  
  
8. 使用DML实现写数据操作  
    ~ 插入数据 - inser  
    insert into table_name   
        (field_name, field_name, ...)  
    values  
        (value, value, ...);  
  
    ~ 删除数据 - delete  
    delete from table_name  
     where key = ...;  
  
    ~ 更新数据 - update  
    update table_name  
       set field = value  
         , field = value  
     where key = ...;

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值