草庐IT

01-MySQL基础

OnlyOnYourself-lzw 2023-03-28 原文

1、数据库的基本概念

1.1、文件操作数据的缺点

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

1.2、数据库的介绍

  • 存储和管理数据的仓库
  • 英文单词为Dtabase;简称DB
  • 数据库中的数据是组织的进行存储
  • MySQL由瑞典MySQL AB公司开发,后来Sun公司收购了MySQL,而Sun公司又被Oracle收购

1.3、数据库的优点

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

1.4、数据库的使用场景

  • 数据库是对大量数据进行存储和管理的高效解决方案

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服务器中可以创建多个数据库
  • 每个数据库中可以包含多张表
  • 每个表中可以存储多条数据记录
  • 客户端通过数据库管理系统来操作MySQL数据库

3.2、关系型数据库介绍

  • 关系型数据库是建立在关系模型基础上的数据库
  • 关系模型,通俗来说就是二维表模型
  • 关系型数据库是由多张能互相连接的二维表组成的数据库

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 数据库名称;
  • 创建数据库(判断,如果不存在则创建)
    • CREATE DATABASE IF NOT EXISTS 数据库名称;
  • 删除数据库
    • DROP DATABASE 数据库名称;
  • 删除数据库(判断,如果存在则删除)
    • 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');
  • 批量添加数据(一次加入多条数据)
    • 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 条件;
  • 比较运算符

    • 符号 功能
      > 大于
      < 小于
      >= 大于等于
      <= 小于等于
      = 等于
      <>或!= 不等于
  • 逻辑运算符(用于多条件查询)

    • 符号 功能
      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查询数据-复杂查询(聚合函数)

  • 上面我们做的查询都是横向查询,它们都是根据条件一行一行地进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个结果值

  • 聚合函数的使用

    • 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;(前一个排序的字段的值一样,才会进行下一个排序)

有关01-MySQL基础的更多相关文章

  1. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  2. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  3. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  4. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  5. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

  6. ruby - 如何使用 ruby​​ mysql2 执行事务 - 2

    我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi

  7. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  8. ruby-on-rails - 当我通过 rvm 使用 rails3 时,如何在 ubuntu 上安装 mysql2 gem? - 2

    我正在尝试绕过rails配置这个极其复杂的迷宫。到目前为止,我设法在ubuntu上设置了rvm(出于某种原因,ruby在ubuntu存储库中已经过时了)。我设法建立了一个Rails项目。我希望我的测试项目使用mysql而不是mysqlite。当我尝试“rakedb:migrate”时,出现错误:“!!!缺少mysql2gem。将其添加到您的Gemfile:gem'mysql2'”当我尝试“geminstallmysql”时,出现错误,告诉我需要为安装命令提供参数。但是,参数列表很大,我不知道该选择哪些。如何通过在ubuntu上运行的rvm和mysql获取rails3?谢谢。

  9. 【Elasticsearch基础】Elasticsearch索引、文档以及映射操作详解 - 2

    文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就

  10. Centos7-yum安装mysql-修改密码-无密码登录-安全配置 - 2

    目录1、yum安装mysql修改密码(1)在mysql里面修改(2)第二种方式,利用mysqladmin修改密码2、没有密码,登录mysql修改密码3、mysql的安全设置1、yum安装mysql在CentOS中默认安装有MariaDB(MySQL的一个分支),安装完成之后可以直接覆盖MariaDB。rpm-qa|grepmariadb查询是否安装了mariadbrpm-e--nodepsmariadb-libs-5.5.60-1.el7_5.x86_64卸载mariadwgethttp://dev.mysql.com/get/mysql57-community-release-el7-11.

随机推荐