首页 > 数据库 >MySQL数据库-基础篇

MySQL数据库-基础篇

时间:2024-07-23 17:57:31浏览次数:15  
标签:... 数据库 MySQL 基础 查询 字段 字段名 表名 SELECT

一、MySQL概述

  • cmd中输入services.msc可进入到系统服务中

  • 启动服务 net start mysql80

  • 停止服务 net stop mysql80

  • 客户端连接 mysql [-h 127.0.0.1] [-p 3306] -u root -p password
    []中内容可省略,默认连接本机3306端口,前提是配置了环境变量,cmd中即可连接

  • 数据模型
    image

  • MySQL为关系型数据库
    非关系型数据库一般指NoSQL。 NoSQL,泛指非关系型的数据库。

二、SQL

1.SQL通用语法

image

2.SQL分类

image

3.DDL(定义)

(1)数据库操作

  • 查询
    • 查询所有数据库 SHOW DATABASES;
    • 查询当前数据库 SELECT DATABASE();
  • 创建 CREAT DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
  • 删除 DROP DATABASE [IF EXISTS] 数据库名;
  • 使用 USE 数据库名;

(2)表操作

  • 查询

    • 查询当前数据库的所有表 SHOW TABLES;
    • 查询表结构 DESC 表名; 显示表
    • 查询指定表的建表语句 SHOW CREATE TABLE 表名; 显示表的详细信息
  • 创建

CREATE TABLE 表名(
	字段1 字段1类型[COMMENT 字段1注释],
	字段2 字段2类型[COMMENT 字段2注释],
	字段3 字段3类型[COMMENT 字段3注释],
)[COMMENT 表注释];
  • 修改

    • 添加字段 ALTER TRABLE 表名 ADD 字段名 类型(长度) [comment 注释] [约束];
    • 修改字段
      • 修改数据类型 ALTER TABLE 表名 MODFIY 字段名 新数据类型(长度);
      • 修改字段名和字段类型 ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
    • 删除字段 ALTER TABLE 表名 DROP 字段名;
    • 修改表名 ALTER TABLE 表名 RENAME TO 新表名;
  • 删除

    • 删除表 DROP TABLE [IF EXIST] 表名;
    • 删除指定表,并重新创建该表 TRUNCATE TABLE 表名;

(3)数据类型

image

image

image

4.DML(增删改)

  • 添加数据

    • 给指定字段添加数据 INSERT INTO 表名 (字段名1, 字段名2,...) VALUES (值1, 值2, ...);
    • 给全部字段添加数据 INSERT INTO 表名 VALUES (值1, 值2, ...);
    • 批量添加数据
      INSERT INTO 表名 (字段名1, 字段名2,...) VALUES (值1, 值2, ...),(值1, 值2, ...),(值1, 值2, ...);
      INSERT INTO 表名 VALUES (值1, 值2, ...),(值1, 值2, ...),(值1, 值2, ...);
  • 修改数据 UPDATE 表名 SET 字段名1 = 值1, 字段值2 = 值2, ... [WHERE 条件];

  • 删除数据 DELETE FROM 表名 [WHERE 条件];
    delete不能删除某个字段的值,可以使用update

5.DQL(查询)

(1)语法(编写顺序)

image

执行顺序
image

(2)基本查询

  • 查询多个字段
    SELECT 字段1, 字段2, 字段3, ... FROM 表名;
    SELECT * FROM 表名;

  • 设置别名 SELECT 字段1 [AS 别名1], 字段2 [AS 别名2] ... FROM 表名;
    as可以省略

  • 去除重复记录 SELECT DISTINCT 字段列表 FROM 表名;

(3)条件查询

  • 语法 SELECT 字段列表 FROM 表名 WHERE 条件列表;

  • 条件 image

(4)聚合函数

image

  • 语法 SELECT 聚合函数(字段列表) FROM 表名;
    null值不参与聚合函数计算

(5)分组查询

  • 语法 SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
    where和having的区别
    执行时机不同:where是分组之前过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
    判断条件不同,where不能对聚合函数进行判断,而having可以

(6)排序查询

  • 语法 SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;
    ASC 升序(可以省略,默认值) DESC 降序

(7)分页查询

  • 语法 SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;

6.DCL(控制)

管理数据库用户、控制数据库的访问权限

(1)管理用户

  • 查询用户
    USE mysql;
    SELECT * FROM user;

  • 创建用户 CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
    主机名可以使用%通配

  • 修改用户密码 ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';

  • 删除用户 DROP USER '用户名'@'主机名';

(2)权限控制

  • 常用权限
    image

  • 查询权限 SHOW GRANTS FOR '用户名'@'主机名';

  • 授予权限 GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

  • 撤销权限 REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

三、函数

1.字符串函数

  • 常用
    image
    MySQL截取字符串从1开始

2.数值函数

  • 常见
    image

3.日期函数

  • 常见
    image

4.流程函数

-常见
image
''不算空

四、约束

  • 概述
    image

  • 外键约束
    image

    • 添加外键

      •   CREATE TABLE 表名(
          	字段名 数据类型,
          	...
          	[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名)
          );
        
      • ALTER TABLE 表名 ADD_CONTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名);
    • 删除外键 ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

    • 设置删除/更新行为
      image

      • ALTER TABLE ADD_CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主键名(主键字段名) ON UPDATE CASCADE ON DELETE CASCADE;

五、多表查询

1.多表关系

image

image

image
image

2.多表查询概述

  • 概述
    image
    image

3.内连接

  • 查询语法
    • 隐式内连接 SELECT 字段列表 FROM 表1, 表2 WHERE 条件...;
    • 显式内连接 SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 连接条件...;
      image
      注意:如果为表起了别名,就不能通过原表名来限制字段了

4.外连接

  • 查询语法
    • 左外连接 SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件...;
      相当于查询表1(左表)的所有数据 包含表1和表2交集部分的数据

    • 右外连接 SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件...;
      相当于查询表2(右表)的所有数据 包含表1和表2交集部分的数据
      image

5.自连接

  • 语法 SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件...;
    自连接查询可以是内连接查询,也可以是外连接查询

6. 联合查询

  • 语法
SELECT 字段列表 FROM 表A ...
UNION [All]
SELECT 字段列表 FROM 表B ...;

image

7.子查询

SELECT * FROM t1 WHERE cloumu1 = (SELECT column1 FROM t2);
image

  • 标量子查询
    image

  • 列子查询
    image

  • 行子查询
    image

  • 表子查询
    image

8.多表查询案例

image

六、事务

1.事务简介

image

2.事务操作

方式1(取消自动提交,手动提交)

  • 查看/设置事务提交方式
    SELECT @@autocommit;
    SET @@autocommit = 0;

  • 提交事务
    COMMIT;

  • 回滚事务
    ROLLBACK;

方式2(开启事务)

  • 开启事务
    START TRANSACTION 或 BEGIN;

  • 提交事务
    COMMIT;

  • 回滚事务
    ROLLBACK;

3.事务的四大特性

image

4.并发事务问题

image

  • 脏读
    image

  • 不可重复读
    image

  • 幻读
    image

5.事务隔离级别

image

  • 查看事务隔离级别
    SELECT @@TRANSACTION_ISOLATION;

  • 设置事务的隔离级别
    SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL [READ UNCOMMITED | READ COMMITED | REPEATABLE READ | SERIALIZABLE]

image

标签:...,数据库,MySQL,基础,查询,字段,字段名,表名,SELECT
From: https://www.cnblogs.com/xuejx/p/18314919

相关文章

  • 知识清单|Python入门必备基础知识点
    1.数据类型和变量1.1缩进和注释的规则Python使用缩进来表示代码块,通常使用四个空格或一个制表符。注释使用#开头。1.2基本数据类型Python支持多种基本数据类型,包括整数、浮点数、字符串、布尔值和空值。1.3变量的动态类型和赋值Python是动态类型语言,变量可......
  • 面试题:如何解决缓存和数据库的一致性问题?
    所谓的一致性问题是指,在同时使用缓存和数据库的情况下,要确保数据在缓存与数据库中的更新操作保持同步。也就是当对数据进行修改时,无论是先修改缓存还是先修改数据库,最终都要保证两者的数据是一样的,不会出现数据不一样的问题。1.一致性问题解决方案缓存和数据库一致性的经典解决......
  • Oracle 和 MySQL 介绍及适用场景
    Oracle和MySQL介绍及适用场景Oracle介绍OracleDatabase是甲骨文公司开发的一款关系数据库管理系统。Oracle数据库是目前市场上最流行的数据库之一,广泛应用于大型企业和复杂业务系统中。Oracle提供了全面的数据管理和分析功能,支持事务处理、大规模数据库管理、高并......
  • 优化循环操作数据库批量处理数据mybatis plus
    优化循环操作数据库批量处理数据mybatisplus大家好我是小星,今天在技术交流群里看见有人在循环中修改数据库,觉得不太好在此总结几种批量修改数据库的方法未优化前代码:for(inti=0;i<pojolist.size();i++){Pojopojo=pojolist.get(i);pojo.setAge(1);m......
  • 【java计算机毕设】在线教学平台MySQL springboot vue HTML maven小组设计项目源代码+
    目录1项目功能2项目介绍3项目地址1项目功能【java计算机毕设】在线教学平台MySQLspringbootvueHTMLmaven小组设计项目源代码+文档寒暑假作业 2项目介绍系统功能:在线教学平台包括管理员、用户、教师三种角色。管理员功能包括个人中心模块用于修改个人信息......
  • 昇腾AI基础软硬件平台介绍
    面向训练场景的有Ascend910系列和Ascend310系列 AICORE是昇腾AI处理器的计算核心,采用华为自研究的达芬奇架构。具有矩阵计算单元,向量计算单元,标量计算单元,累加器CANN逻辑架构介绍。是华为针对AI推出的异构计算架构。 服务层 计算编译层 ......
  • sql基础语句学习笔记
    目录DDL(DataDefinitionLanguage)数据库模式定义语言DML(DataManipulationLanguage)数据操纵语言给指定字段添加数据查询数据修改数据删除数据DQL(DataQueryLanguage)数据查询语言基本查询(不带任何条件)条件查询(WHERE)聚合函数(count、max、min、avg、sum)分组查询(group......
  • 算法笔记|Day5哈希表基础
    算法笔记|Day5哈希表基础☆☆☆☆☆leetcode242.有效的字母异位词题目分析代码☆leetcode49.字母异位词分组(待补充)题目分析代码☆leetcode438.找到字符串中所有字母异位词(待补充)题目分析代码☆☆☆☆☆leetcode349.两个数组的交集题目分析代码☆leetcode350.两......
  • [转]从SQLite到Redis:探索C++与多种数据库的交互之道
    转自:【C++风云录】从SQLite到Redis:探索C++与多种数据库的交互之道开启数据库之旅:通过C++与各种数据库交互,事半功倍1.SQLite1.1简介SQLite是一个嵌入式关系型数据库管理系统,提供了一个轻量级的C++接口。它是一个开源的软件库,无需配置服务器或安装管理工具,可以直接在程序中使......
  • iOS开发基础141-音频解码
    音频解码是指将压缩的音频数据转换为PCM(脉冲编码调制)数据的过程。这个过程允许我们处理和播放多种格式的音频文件。在iOS开发中,AudioToolbox提供了一系列底层C语言API来支持音频的解码。下面,我们将创建一个简单的音频解码工具类,使用AudioToolbox中的API来解码AAC格式的音频文件,并......