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)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球