01-MySQL基础

1、数据库的基本概念

1.1、文件操作数据的缺点

  • 查找,增加,修改,删除数据等操作比较麻烦(特别是txt),效率低

1.2、数据库的介绍

  • 存储和管理数据的仓库
  • 英文单词为Dtabase;简称DB
  • 数据库中的数据由组织存储
    [En]

    the data in the database is stored by the organization*

  • MySQL由瑞典MySQL AB公司开发,后来Sun公司收购了MySQL,而Sun公司又被Oracle收购

1.3、数据库的优点

  • 可以持久保存数据
  • 通过SQL语句比较方便的操作数据库
  • 通过高性能算法优化数据存储
    [En]

    data storage is optimized by algorithm with high performance*

1.4、数据库的使用场景

  • 数据库是存储和管理海量数据的高效解决方案
    [En]

    Database is an efficient solution for storing and managing large amounts of data*

2、数据库的安装和登录

2.1、MySQL 安装和配置

  • 参考MySQL安装文档
  • MySQL目录结构

2.2、 MySQL 登录、退出

2.2.1、Dos命令行登录MySQL

  • Dos命令行的缺点
  • 操作不方面
  • 无界面,显示数据不直观

2.2.2、SQLyog登录MySQL

  • SQLyog介绍
  • SQLyog是业界著名的Webyog公司出品的一款简洁高效、功能强大的图形化MySQL数据库管理工具
  • SQLyog的使用

3、MySQL相关概念

3.1、数据库、表、数据的关系

  • MySQL服务器中可以创建多个数据库
  • 每个数据库可以包含多个表
    [En]

    each database can contain multiple tables*

  • 每个表中可以存储多条数据记录
    [En]

    multiple data records can be stored in each table*

  • 客户端通过数据库管理系统来操作MySQL数据库

3.2、关系型数据库介绍

  • 关系数据库是基于关系模型的数据库
    [En]

    Relational database is a database based on relational model*

  • 关系模型通俗地说就是二维表模型。
    [En]

    Relational model, popularly speaking, is a two-dimensional table model.*

  • 关系数据库是由多个可以相互连接的二维表组成的数据库。
    [En]

    A relational database is a database made up of multiple two-dimensional tables that can be connected to each other.*

3.3、SQL介绍

  • SQL(Structured Query Language):结构化查询语言,一门操作关系型数据库的编程语言
  • 定义操作所有关系型数据库的同一标准。每一种数据库操作的方式可能会存在一些不一样的地方,我们称为”方言”

3.3.1、SQL通用语法

  • 1.SQL语句可以单行或多行注释,以分号结尾
  • 2.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
  • 3.单行注释:– 注释内容 #注释内容(MySQL特有)
  • 4.多行注释:/ 注释内容 /

3.3.2、SQL的分类

  • DDL(Data Definition Language)
  • 数据定义语言,用来定义数据库对象(数据库,表,列等)
  • DML(Data Manipulation Language)
  • 数据操作语言,用来对数据库中表的数据进行增删改
  • 注意
    • 查询不属于DML
  • DQL(Data Query Language)
  • 数据查询语言,用来查询数据库中表的记录(数据)
  • DCL(Data Control Language)
  • 数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户

4、DDL操作数据库和表

4.1、DDL查询和创建数据库

  • 查询所有数据库
  • SHOW DATABASES;
  • 创建数据库
  • CREATE DATABASE 数据库名称;
  • 创建数据库(判断,如果不存在则创建)
    [En]

    create a database (judge, create if it does not exist)*

  • CREATE DATABASE IF NOT EXISTS 数据库名称;
  • 删除数据库
  • DROP DATABASE 数据库名称;
  • 删除数据库(判断,存在则删除)
    [En]

    Delete the database (judge, delete if it exists)*

  • DROP DATABASE IF EXISTS 数据库名称;
  • 使用数据库
  • USE 数据库名称;

4.2、DDL操作表

4.2.1、DDL创建表

  • CREATE TABLE 表名(字段名 数据类型,….,字段名 数据类型);
  • 常用数据类型
  • int
    • 整数类型
  • double
    • 小数类型
  • varchar(长度)
    • 字符串类型
  • date
    • 表示日期类型(yyyy-MM-dd)

4.2.2、MySQL常见数据类型

分类 类型名称 类型说明 整数 tinyInt 微整型:很小的整数(占8为二进制)1个字节 整数 smallint 小整型:小的整数(占16为二进制)2个字节 整数 int(integer) 整型:整数类型(占32位二进制)4个字节 整数 bigint 大整型:占64位二进制,8个字节 小数 float 单精度浮点数,占4个字节 小数 double 双精度浮点数,占8个字节 小数 decimal(m,n) 数值类型:m表示数值的长度,n表示小数的位数,既可以表示整数,也可以表示小数。如:decimal(10) decimal(10,2) 日期 time 指标是时间类型HH:mm:ss 日期 date 只表示日期类型yyyy-MM-dd 日期 datetime 表示日期和时间类型,时间范围位:’1000-01-01 00:00:00′ 到’9999-12-31 23:59:59′ 日期 timestamp 表示日期和时间类型(时间戳),时间范围为:’1970-01-01 00:00:01’到’2038-01-19 03:14:07′ 字符串 char(m) 固定长度的字符串,无论使用几个字符都占满全部,m为0~65535之间的整数 字符串 varchar(m) 可变长度的字符串,使用几个字符就占用几个,m为0~65535之间的整数

4.2.3、DDL查看和删除表

  • 查询所有的表
  • SHOW TABLES;
  • 查询表结构
  • DESC 表名;
  • 删除表
  • DROP TABLE 表名;

4.2.4、DDL修改表

  • 修改表名
  • ALTER TABLE 表名 RENAME TO 新表名;
  • 单独添加一个字段
  • ALTER TABLE 表名 ADD 字段名 数据类型;
  • 修改某字段的数据类型
  • ALTER TABLE 表名 MODIFY 字段名 新数据类型;
  • 修改字段名和数据类型
  • ALTER TABLE 表名 CHANGE 字段名 新字段名 新数据类型;

5、DML表数据的增删改

5.1、DML往表中新增数据

  • 给指定列添加数据
  • INSERT INTO 表名 (字段名1, 字段名2, ···) VALUES (值1, 值2, 值3, ···);
  • demo
    • INSERT INTO goods (NAME, price, sales_volume, produce_date) VALUES (‘华为P40’, 5999, 1000, ‘2020-08-20’);
  • 给全部列添加数据
  • INSERT INTO 表名 VALUES (值1, 值2, ···);
  • demo
    • INSERT INTO goods VALUES (‘小米11’, 4999, 5000, ‘2020-12-28’);
  • 批量添加数据(一次多个数据)
    [En]

    add data in batches (multiple data at a time)*

  • INSERT INTO 表名 VALUES (值1, 值2, ···),(值1, 值2, ···),(值1, 值2, ···);

5.2、插入数据注意事项

*
1. 字段名和值的数量要对应
2. 值的类型和字段的类型要对应
3. 除了数值类型,其他数据类型的数据都需要加引号(单引号、双引号都可以,推荐使用单引号)

5.3、DML修改和删除表数据

  • 修改表中的数据
  • UPDATE 表名 SET 字段名=新的值 [WHERE 条件];
  • 修改语句中必须加条件,如果不加条件,则会将所有数据都修改
  • 删除表中的数据
  • DELETE FROM 表名 [WHERE 条件];
  • 删除语句中必须加条件,如果不加条件,则会将所有数据都删除
  • 删除表中的所有数据
  • TRUNCATE 表名;

6、DQL查询数据

6.1、DQL查询数据-基础查询

  • 查询指定字段的数据
  • SELECT 字段名1, 字段名2 FROM 表名;
  • 查询所有字段的数据
  • SELECT * FROM 表名;
  • 去除重复查询
  • SELECT DISTINCT 字段名1 FROM 表名;
  • 计算列的值(四则运算)
  • SELECT 字段名1 (+ – * /) 字段名2 FROM 表名
  • 起别名查询
  • SELECT 字段名1 AS 别名1,字段名2 AS 别名2 FROM 表名;

6.2、DQL查询数据-条件查询

  • 条件查询语法
  • SELECT 字段名 FROM 表名 WHERE 条件;
  • 比较运算符
  • 符号 功能 > 大于 < 小于 >= 大于等于
  • 逻辑运算符(用于多条件查询)
    [En]

    logical operator (for multi-conditional queries)*

  • 符号 功能 AND或&& 并且 OR或|| 或者 NOT或! 非,不是
  • 范围
  • 符号 功能 BETWEEN … AND … 在某个范围之内(都包含) IN(…) 多选一
  • NULL的处理
  • 符号 功能 IS NULL 是NULL IS NOT NULL 不是NULL

6.3、DQL查询数据-模糊查询

  • 模糊查询语法
  • SELECT * FROM 表名 WHERE 字段名 LIKE ‘通配符字符串’;
  • MySQL通配符由两个
  • %:表示任意多个字符
  • _:表示一个字符

6.4、DQL查询数据-查询排序

  • 排序查询语法
  • SELECT 字段名 FROM 表名 ORDER BY 列名 排序方式;
  • 排序方式
  • ASC:升序
  • DESC:降序
  • PS
  • 如果有多个排序条件,只有前面的条件值一样的时候,才会判断第二个条件

6.5、DQL查询数据-复杂查询(聚合函数)

  • 以上查询为水平查询,按条件逐行判断,聚合函数查询为垂直查询,计算一列的值,然后返回结果值。
    [En]

    the above queries are horizontal queries, which are judged row by row according to the conditions, while the query using aggregate function is a vertical query, which calculates the value of a column and then returns a result value.*

  • 聚合函数的使用
  • SELECT 聚合函数(字段名) FROM 表名;
  • 常用的聚合函数
  • 函数名称 功能 COUNT 统计指定列记录数 SUM 计算指定列的数值和 MAX 计算指定列的最大值 MIN 计算指定列的最小值 AVG 计算指定列的平均值(average)
  • 使用聚合函数的注意事项
  • 记录为NULL的数据不统计
  • 如果不是数值类型,那么计算结果为0

6.6、DQL查询数据-复杂查询(分组)

  • 分组语法
  • SELECT * FROM 表名 [WHERE 查询条件] GROUP BY 字段名 [HAVING 分组条件]
  • 注意事项
  • 分组之后, 查询的字段分为分组字段和聚合函数,查询其他字段无任何意义,甚至可能会报错
  • HAVING 和 WHERE 的区别
  • WHERE是在分组前对数据进行过滤,HAVING 是在分组后对数据进行过滤
  • where后面不可以使用聚合函数,HAVING后面可以使用聚合函数

6.7、DQL查询数据-复杂查询(分页)

  • LIMIT语句的作用
  • LIMIT是限制的意思,LIMIT的作用就是获取部分查询的数据
  • LIMIT语句格式
  • SELECT * FROM 表名 LIMIT offset, length;
    • offset是指偏移量,可以认为是跳过的记录数量,不写则默认为0
    • length是指需要显示的总记录数
  • example
  • SELECT * FROM goods limit 2,3;
  • Tips
  • 分页查询LIMIT是MySQL数据库的’方言’;
  • Oracle分页查询使用rownumber
  • SQL Server分页查询使用top

课后练习注意事项

1、DDL 修改表和DML 修改表的差别

1.1、DDL:

  • 修改表名
  • ALTER TABLE 表名 RENAME TO 新表名;
  • 单独添加一个字段
  • ALTER TABLE 表名 ADD 字段名 数据类型;
  • 修改某字段的数据类型
  • ALTER TABLE 表名 MODIFY 字段名 新数据类型;
  • 修改字段名和数据类型
  • ALTER TABLE 表名 CHANGE 字段名 新字段名 新数据类型;

1.2、DML:

  • 修改表中的数据
  • UPDATE 表名 SET 字段名=新的值 [WHERE 条件];
  • 修改语句中必须加条件,如果不加条件,则会将所有数据都修改

1.3、差别

  • 差别就是DDL只是修改字段的名称;而DML是修改字段下的数据(属性)
  • 对应Day01-MySQL基础课后习题

2、MySQL删除表中的字段(这是DDL操作,注意区别DML操作中的删除字段的值

  • 删除student表中的字段intro
  • alter table student drop intro;
  • 对比
  • 删除student表中的字段intro的值
  • delete intro from student [where 条件] // 如果不加条件,intro字段的所有数据都会被删除
  • 额外练习01,倒数第二个问题

3、MySQL中的DML操作(一次修改多列)

  • 一次修改多个列,把id为3的学生,生日改成1988-08-08,address改成北京
  • 一次修改一列
  • update 表名 set 字段名 = 新值 [where 条件];
  • 一次修改多列
  • update 表名 set 字段名 = 新值 [, 字段名 = 新值][where 条件];
  • 额外练习-02-增删改数据

4、组合排序

  • 查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩降序排序
  • 单个排序查询
  • select * from student order by age desc;
  • 多个排序查询
  • select * from student order by age desc, math desc;(前一个排序的字段的值一样,才会进行下一个排序)

Original: https://www.cnblogs.com/OnlyOnYourself-lzw/p/16471537.html
Author: OnlyOnYourself-Lzw
Title: 01-MySQL基础

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/505240/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux系统安装JDK

    准备工作 1.去JDK的官网下载一个1.8的安装包 2.解压到linux系统 tar -zxvf jdk-8u311-linux-x64.tar.gz -C /download/c…

    数据库 2023年6月6日
    0133
  • 程序包javax.persistence不存在解决办法

    只需添加以下包即可 javax.persistence persistence-api 1.0.2 Original: https://www.cnblogs.com/javalo…

    数据库 2023年6月11日
    0124
  • 基于PHP7.2+MySQL5.7的回收租凭系统

    likeshop回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 系统支持智能评估回收价格,后台调整最终回收价,用户同意回收后系统即刻放款,用户微信零钱提现。支持在线…

    数据库 2023年5月24日
    0161
  • harbor安装

    Harbor 简介 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registr…

    数据库 2023年6月11日
    0140
  • 视野 | KeyDB:为 Web 应用而生的高性能 Redis 分支

    王奇 顾问软件工程师目前从事 PaaS 中间件服务(Redis / MongoDB / ELK 等)开发工作,对 NoSQL 数据库有深入的研究以及丰富的二次开发经验,热衷对 No…

    数据库 2023年5月24日
    0136
  • 同时运行两个版本相同的tomcat

    由于项目需要,代理集群和一个节点都部署在本地,那么就需要有两个tomcat,一个部署集群,一个部署项目,我都用了7.0.34版本的tomcat 当启动代理的tomcat成功时,再启…

    数据库 2023年6月11日
    0151
  • clash TUN模式

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月14日
    0123
  • Java中如何数组进行反转呢?

    下文笔者将讲述java代码数组反转的方法分享,如下所示: 数组是我们日常开发中常用过的一种数据结构,那么我们如何将一个数组反转操作呢? 下文笔者借助栈对象的先进后出的特性, 首先将…

    数据库 2023年6月11日
    0117
  • [spring]spring注入属性值的两种方式以及作用域

    4.IOC创建对象的过程 使用无参构造创造 设定为有参后,就会报错! 对象在被注册进去的时候,就被实例化了,直接使用就好。 5.IO注入 (1)前面的构造器注入 (2)set注入 …

    数据库 2023年6月16日
    0156
  • liquibase新增字段注释导致表格注释同时变更bug记录

    liquibase是一个用于数据库变更跟踪、版本管理和自动部署的开源工具。它的使用方式方法可以参考官方文档或者其他人的博客,这里不做过多介绍。 1. 问题复现 在使用过程中发现了一…

    数据库 2023年6月14日
    0142
  • 雷军传-怀揣梦想,砥砺前行

    最近几天看完了一本书,是一本个人传记–《雷军传-站在风口上》,我总结为”怀揣梦想,砥砺前行”。 其实在我高中时期就已经把雷军视为偶像,只不过当时…

    数据库 2023年6月11日
    0127
  • 实验:非GTID 级联复制架构变为一主多从

    个个原创文章 欢迎讨论https://www.cnblogs.com/konggg/欢迎转载收藏,转载请注明来源,谢谢支持! Original: https://www.cnblo…

    数据库 2023年6月16日
    0150
  • vue部署在nginx后刷新404,nginx.conf一行代码解决掉

    直接 vim conf/nginx.conf文件 server {listen 8081;server_name localhost; charset koi8-r; access…

    数据库 2023年6月14日
    0165
  • DistSQL 深度解析:打造动态化的分布式数据库

    一、背景 自 ShardingSphere 5.0.0 版本发布以来,DistSQL 为 ShardingSphere 生态带来了强大的动态管理能力,通过 DistSQL,用户可以…

    数据库 2023年6月16日
    0104
  • 整理记录一些好用的随机图API

    最近自己博客使用的随机图API有些不稳定,自己又去搜集了一些有意思的随机图API,这里做一个整理记录 注意!!!本文链接最后测试时间—-2021年11月21日 主题作者…

    数据库 2023年6月11日
    0119
  • Android Studio的初次认识

    Android的初试 一、认识Android Studio 在我们新建项目的时候,会遇到这样的一个窗口,首先我们认识一下这些都是什么,这样我们才能够更好的进行下一步的学习! 这里的…

    数据库 2023年6月11日
    0170
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球