MySQL数据库必知必会(一)

本文详细介绍了MySQL的安装与配置、数据库的使用,包括连接数据库、查看数据库和表、字段信息。接着,讲解了SQL的SELECT语句,如何检索单个或多个列,以及使用DISTINCT、LIMIT和ORDERBY进行数据过滤和排序。此外,还涉及了WHERE字句和各种操作符,以及LIKE操作符和通配符在数据过滤中的应用。
摘要由CSDN通过智能技术生成

本文出自博主的《如何系统复习MySQL》,堪称全网最全记录,旨在编写关于关系型数据库MySQL的使用技巧,随时记录方便以后翻阅

MySQL的使用

一、MySQL的安装与配置

学习MySQL需要本机已经完成mysql的安装和配置,本文章以介绍MySQL如何使用为主,关于MySQL的安装与配置本文不再赘述。

接下来让我们开始MySQL的学习之旅吧!!

二、数据库的使用

2.1连接数据库

  • 打开cmd,使用管理员访问,进入mysql安装的bin目录下

    cd C:\Program Files\MySQL\bin

  • 输入连接mysql的认证:用户名和密码

    mysql -uroot -p

    image-20230510100921943

  • 连接成功自动进入mysql中
    出现如下字样表示已成功进入mysql数据库中
    image-20230510101032865

2.2使用数据库命令

  • 查看本地有哪些数据库

    SHOW DATABASES;

    database就是我们的数据库标题(固定的),包括六个数据库(当然自己的数据库列表可能与这里不一样;因为emos和robot数据库都是楼主自己创建的数据库,而其他数据库为mysql系统内部的数据库)

    image-20230510101239863

  • 选择数据库

    use robot;

    知道数据库名有哪些后,我们需要选择具体操作的数据库,这里我使用robot数据库为例;

    image-20230510101826949

    出现Database changed表示数据库选择成功

  • 查看某个数据库包括那些表格数据

    SHOW TABLES; 返回当前选择的数据库内可用表的列表

    众所周知,数据库中有很多表用于存放固定数据类型的数据,这里查看robot数据库中包含那些数据表:

    在robot数据库中查询到有六个数据表

    image-20230510102144954

    这里我们利用navicat显示的查看robot中有哪些数据表:

    (可以看到navicat中显示的数据表和上面命令行查询的表列表一一对应)

    image-20230510102413572

  • 查询某个数据库中某个表格中包括那些列

    查询具体某个表中包括那些列;比如查看tb_user表中具体包括那些列(columns)

    SHOW COLUMNS FROM tb_user;

    image-20230510102847182

    可以看到上述包含5列,代表着tb_user表中的5个字段field;

    字段介绍

    其中type表示字段的类型,null表示该字段是否为空,key表示该字段是否为主键,default表示该字段的默认值,extra表示该字段的其他信息

    (auto_increment:表示该字段自增,作用:某些表列需要唯一值,比如订单编号,雇员ID。在每个行添加到表时,MySQL可以自动的为每一个行分配下一个可用编号,不用在添加时手动分配唯一值。后边会介绍create语句创建表时定义自增变量)

    DESCRIBE tb_user; 查询表中字段列的快捷方法

  • show 其他语句

命令作用
SHOW CREATE DATABASE dbname;查询创建dbname数据库的语句
SHOW CREATE TABLE tablename;查询创建tablename表的语句

1.查询robot数据库创建的语句

image-20230510104652652
2.查询tb_user表格创建的语句

在这里插入图片描述

三、检索数据

3.1 SELECT语句

SQL语句都是由简单的英文单词构成,大概最经常用的SQL语句就是SELECT语句了。用途:从一个或多个表中检索信息

3.2检索单个列

SELECT username FROM tb_user;

上述语句意思是从tb_user表中检索一个名为username的列。正常使用过程:查询表中字段,然后查询该字段作为单列;如下

3.3查询多个列

SELECT username,password,… FROM tb_user;

上述语句意思是从tb_user表中检索名为username的列和password的列,如果需要查询其他字段属性,加逗号即可

SELECT * FROM tb_user;

上述语句是查询tb_user表中所有的字段列表,给定一个通配符(*)返回列表中所有列,列的顺序是表在定义时出现的顺序。

(一般情况下,除非确实需要表格中所有的列,否则最好不用通配符,因为查询所有的字段是非常消耗应用程序性能和降低检索速度的)

3.4检索不同的行

使用关键字DISTINCT,检索不同的值

SELECT DISTINCT username FROM tb_user;

上述语句返回tb_user表格中不同的username字段(不会出现重复);

如下,我们从web表中查询country字段返回了8行,但是都是相同的,添加DISTINCT关键字返回不同值

3.5限制结果

限制返回的行数(用途:数据的分页查询)

从web表中查询不多于5条的name数据:

SELECT name FROM web LIMIT 5;

从web表中查询从第5到10条的name数据:

SELECT name FROM web LIMIT 5 ,5;

实操如下:

SELECT name FROM web LIMIT 3,3; 第一个3是查询的起始位置,第二个3是检索的行数

综上:limit一个数,总是从第一行开始,给出的数为返回的行数;limit两个数,可以指定从行号开始检索固定数量的信息。当然检索的数量可以大于实际信息数量(这是允许的)

四、排序检索数据

4.1排序数据

SQL语句查询时返回某个数据库中某个表的列,输出顺序是没有固定的,如果不排序,数据一般会以它在底层表中出现的顺序显示,这可以是数据添加到表中的顺序(但是数据更新删除后,顺序可能会收到MySQL重用回收存储空间的影响);如果不明确控制的话,不能也不应该依赖该排序顺序。

关系型数据库设计理论认为,如果不规定排序顺序,则不应该假定检索出来的数据的顺序有意义!

因此明确顺序可以在SELECT语句中使用ORDER BY字句

SELECT alexa FROM web ORDER BY alexa;

从web表中查询alexa,查询出的数据根据alexa进行排序输出

也可以用非检索的列进行排序

4.2按多个列排序

更多的使用是按照多个列进行排序,这个具体是什么意思呢?

假设我们现在要对商品进行价格排序,当商品价格相同时,我们可以再加入一个名称排序,这样查询出来的数据就会先按照商品价格排序,价格相同会按照商品名称排序,最后输出。

语句如下:

SELECT alexa FROM web ORDER BY alexa,name(,…字段);

从web表中查询alexa 字段,先对alexa 进行排序,对alexa 相同的会进行name排序,以此类推…

值得注意的是,如果alexa 列所有的值是唯一的,后续排序就不会发送

实操如下:

4.3指定排序方向

数据排序默认顺序是升序排序(从A到Z);这不是唯一的排序方式,我们在使用排序时还可以降序排序输出数据,只需要在后边加关键字DESC,如下:

SELECT name,alexa FROM web ORDER BY alexa DESC;

从web表中查询name和alexa字段,对alexa进行降序排序:

我们还可以对多个字段进行降序排序,方式就是给每个列alexa、name后边都加上DESC关键字,查询的数据会先按照alexa降序排序,对alexa相同的再按照name进行降序排序;如果name不加DESC关键字,表示对name进行升序排序

与DESC相反的是ASC,ASC关键字是升序排序,不过没多大用处,因为默认就是ASC。排序的应用非常广泛,比如我们在购物时可以根据商品价格升序或降序对商品进行排序。

使用ORDER BY和LIMIT的组合,可以查询出最高或者最低的值,如下演示如何查询出alexa最高的值

这种组合查询需要确保LIMIT的位置必须在ORDER BY 之后,如果使用字句顺序不对,会报错。

五、过滤数据

5.1使用WHERE字句

当我们检索所需数据时需要添加搜索条件,这种搜索条件也称为过滤条件。

SELECT name,url FROM web WHERE name = ‘微博’;

如上,从web表中查询微博的网址和名称

在同时使用ORDER BY和WHERE 语句时主要注意顺序:WHERE 在ORDER BY 语句之前,否则会报错

5.2WHERE字句操作符

之前介绍的是最简单的相等测试,但是SQL允许做的事情不仅仅如此,如下介绍WHERE字句的操作符

操作符说明
=等于
<>不等于
!=不等于
<小于
>大于
<=小于等于
>=大于等于
BETWEEN a AND b在指定a和b之间

如下,从web数据表中查询name和alexa字段,过滤条件是alexa小于等于3,然后对输出数据进行排序

这里需要注意,当where语句中进行数值比较不需要加单引号,如果语句内是字符类型的话需要加单引号

下边是查询alexa在0-3范围的name和alexa字段:

5.3数据过滤

上述都是单一过滤条件,现实中用到的是更高级的功能更强的搜索条件,组合的where语句

操作符说明
AND连接多个条件同时成立才会成立
OR多个条件中,一个条件成立即可
IN指定条件的范围
NOT否定它之后跟的条件

如下,web数据表中包含的数据,当我们需要查询国家是CN或者USA并且alexa小于20的网址名称,网址和alexa时,我们可以利用组合的where语句进行搜索

AND和OR搜索语句:

SELECT name,url,alexa FROM web WHERE (country = ‘CN’ OR country = ‘USA’) AND alexa < 13;

(上述语句用到了括号进行优先级确定,因为在mysql中AND操作符优先级大于OR优先级,不加括号翻译成:检索country为CN或者country为USA同时alexa小于13的数据,如下检查出的数据)可以看到下面查询的数据跟上面不同,alexa>13的部分也显示出来了

因此在使用WHERE通配符时一定要用括号确定计算次序,括号优先级>AND优先级>OR优先级

IN搜索语句:

如下:从web表中检索alexa为1或者0的数据

可以看到in操作符和OR有相同的功能,但是IN操作符查询的速度更快,语法更清楚

NOT搜索语句:

查询不在这些条件中的数据

六、用通配符进行过滤

6.1LIKE操作符

前面都是对已知值进行过滤的方法,但是这种过滤方法不是任何时候都好用,比如,怎么搜索商品名称包括APP的产品呢?

我们可以使用通配符创建特定的搜索模式。

通配符本身实际是SQL的WHERE字句中有特殊含义的字符,SQL支持几种通配符。为了在搜索子句中使用通配符,必须使用LIKE操作符。表示MYSQL后跟的搜索模式利用通配符匹配而不是相等匹配进行比较的。

6.2%通配符

最常使用的就是百分号,比如找出APP结尾的网址,可以使用SELECT语句:

SELECT name,url FROM web WHERE name LIKE ‘%APP’;

当然%看似可以匹配任何东西,但有一个例外就是null,即使 WHERE name LIKE ‘%’;也不可以匹配null

6.3_通配符

下划线通配符和%不同,下划线只能匹配单个字符,而%可以匹配多个字符,如下当我们用在web表中查询name和url字段时发现没有数据;这是因为_只匹配一个字符,但是我们并没有这种数据。

在这里插入图片描述

综述:匹配通配符看似很有用,但是日常中不可过度使用,因为匹配查询效率是非常低的,除非有必要使用,否则不用在搜索模式中

待更新…

本文章关于MySQL的各种知识参照《MySQL必知必会》

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值