MySQL基础 | DAY 13

MySQL基础篇学习

基础

数据库管理系统(DBMS)是包含数据库的系统。DBMS是一个软件,用于创建、管理、查询和更新数据库。数据库本身是由DBMS创建和管理的结构化数据集合。

常用的数据库系统有:

  • 关系型数据库:MySQL, Oracle, SQL Server,
  • 非关系型数据库:MongoDB, Cassandra, Redis, Couchbase, Neo4j

关系型数据库(RDBMS):

  • 关系型数据库是基于关系模型的数据库,使用表、行和列来存储数据。
  • 数据之间通过预定义的键(通常是主键和外键)进行关联。
  • MySQL, Oracle, SQL Server, PostgreSQL等。

非关系型数据库(NoSQL):

  • 非关系型数据库不遵循传统的关系模型。

  • 数据以键值对、文档、列族或图形结构存储。

  • MongoDB(文档存储)、Cassandra(列族存储)、Redis(键值存储)、Neo4j(图形存储)等。

关系型数据库(RDBMS)适用场景:

  • 需要复杂查询和事务处理的应用。

  • 数据结构化,且关系复杂。

  • 数据一致性和完整性要求高。

  • 例如:银行系统、
    非关系型数据库(NoSQL)适用场景:

  • 需要高性能、高可扩展性的应用。

  • 数据结构不固定或非常复杂。

  • 不需要复杂的事务处理。

  • 例如:社交媒体、实时分析、日志处理、缓存等。

主键(Primary Key):

  • 主键是数据库表中的一个或多个字段的组合,用于唯一标识表中的每一行。

  • 主键的值必须是唯一的,并且不能为NULL。
    MySQL中的主键生成方式:

  • 自增(AUTO_INCREMENT):MySQL为每行自动分配一个唯一的数字。

  • 手动生成:手动为每条记录指定一个唯一值。

vs访问数据库

  1. 属性 c 常规 包含目录 server include
  2. 链接器 常规 附加库目录 server lib
  3. 输入 依赖库 libmysql/lib

命令行操作数据库

mysql -u root -p

MYSQL数据类型

  • tinyint 小整数值

  • smallint 大整数数值

  • float 单精度浮点数值

  • double 双精度浮点数值

  • char 定长字符串

  • varchar 变长字符串

  • tinytext 短文本字符串

  • data 日期值 YYYY-MM-DD

  • time 时间值或持续时间值 HH:MM:SS

  • year 年份值 YYYY

DDL 数据定义语言

数据库操作

  • 查询所有数据库 SHOW DATABASES;

  • 查看当前数据库 SELECT DATABASE();

  • 创建数据库 CREATE DATABASE [IF EXISTIS]数据库名 [DEFAULT CHARSET 字符集] ;

  • 删除数据库 DROP DATABASE[IF EXISTS] 数据库名;

  • 切换数据库 USE 数据库名;

  • 查询当前数据库所有表 SHOW TABLES;

表操作

  • 查询表结构 DESC 表名;

  • 查询创建表语句 SHOW CREATE TABLE 表名;

  • 创建表 CREATE TABLE 表名(字段 字段类型 [COMMENT 注释])[COMMENT 注释];

  • 删除表 DROP TABLE 表名;

  • 删除表内容 TRUNCATE ;

  • 修改表名 ALTER TABLE 表名 RENAME TO 新表名

字段操作

  • 修改字段 ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMENT 注释];

  • 修改字段数据类型 ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

  • 修改数据类型和字段名称 ALTER TABLE 表明 CHANGE 旧字段名 新字段名 新类型(长度)[COMMENT 注释];

  • 删除字段 ALTER TABLE 表名 DROP 字段名;

DML 数据操作语言

添加数据 INSERT

INSERT INTO 表名(字段)VALUES(值);

修改数据 UPDATA

UPDATA 表名 SET 字段名=值 [WHERE 条件];

删除数据 DELETE

DELETE FROM 表名 WHERE 条件;

DQL 数据查询语言

  • SELECT 字段列表

  • FROM 表名列表

  • WHERE 条件列表

    • in 在其中之一

    • not like

      • %表示任何字符出现任意次数

      • _表示单个字符

      • []表示一个字符集

  • GROUP BY 分组字段列表

  • HAVING 分组后条件列表

  • ORDER BY 排序字段列表

    • 字段 默认升序 加 DESC 是降序

    • between and 前闭后闭

  • LIMIT 分页参数

    • limit 起始索引 每页展示记录数
  • DISTINCT 数据去重

多表查询

  • 一对多

    • 部门 – 员工

    • 多的一边建立外键,指向另一方的主键

    • 多对多

      • 学生 – 课程
      • 中间表,至少两个外键分别关联两个主键
    • 一对一

      • 用户 用户详情
      • 任意一方加入外键 设置外键为唯一约束 UNIQUE
    • 笛卡尔查询

      • 两张表所有组合情况
      • 消除 WHERE 表名.字段 = 表名.字段
    • 内连接 相当于查询A,B交集部分数据

      • 隐式内连接
        • SELECT 字段列表 FROM 表1,表2 WHERE;
      • 显式内连接·
        • SELECT 字段列表 FROM 表1【INNER】JOIN 表2 ON 连接条件
    • 外连接

      • 左外连接
        • SELECT 字段列表 FROM 表1 LEFT【OUTER】JOIN 表2 ON 条件
      • 右外连接
        • SELECT 字段列表 FROM 表1 RIGHT 【OUTER】JOIN 表2 ON条件
    • 自连接

      • 当前表与自身连接查询 必须使用表别名
      • SELECT 字段列表 FROM 表1 别名A JOIN 表1 别名B ON 条件

DCL 数据库权限

管理用户

  • 查询用户
    • USE mysql;
    • SELECT *FROM user;
  • 创建用户
    • CREATE USER 用户名@主机名 IDENTIFIED BY密码;
  • 修改用户密码
    • ALTER USER 用户名@主机名 INENTIFIED 原密码 BY 新密码;
  • 删除用户
    • DROP USER 用户名@主机名;
  • 任意主机名 %

约束

  • 主键 PRIMARY KEY
  • 自动增长 AUTO_INCREMENT
  • 不为空 NOT NULL
  • 唯一 UNIQUE
  • 默认为1 DEFAULT

外键约束

ALTER TABLE 表名 ADD CONSITRINT 外键名称 FOREIGN KEY (外键字段名)REFERENCES 主表(主表列名)

内置函数

字符串截取 substring(字符串,起始位置,截取字符数)

字符串拼接 concat (字符串1,字符串2…)

字母大写 upper(字符串)

DATE_FORMAT(NOW(), ‘%d/%m/%Y’) AS formatted_date;

事务

事务会把所有操作作为一个整体一起向系统提交或撤销操作星球 这些操作要么同时成功要么同时失败

事务操作

查看 设置事务

SELECT @@autocommit;

SET @@AUTOCOMMIT=0 设置为手动提交

提交事务COMMIT

回滚事务 ROLLBACK

开启事务 start transctionbegin

提交事务 commit

回滚事务 rollback

事务四大特性

  • 原子性 事务是不可分割的最小单元 要么全部成功 要么全部失败
  • 一致性 事务完成时 必须使所有数据都保持一致
  • 隔离性 保证事务在不收外部并发操作影响的独立环境
  • 持久性 事务一旦提交或回滚 数据库中数据改变持久性

并发事务问题

赃读 一个事务读取到另一个事务还没有提交的数据

不可重复读 一个事务先后读取同一条记录 但两次读取的数据不同

幻读 一个事务按照调教查询数据时 没有对应的数据行 但是在插入数据时 又发现了这条数据的存在

事务隔离级别

隔离级别赃读不可重复读幻读
read uncommitted 读未提交
read committed 读已提交×
repeatable read(默认) 可重复读××
serializable 串行化×××

查看事务隔离级别 SELECT @@transacyion_isolation;

设置事务隔离级别

set [session | global] transaction isolation level { 四种级别 };

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值