MySQL 数据库基础学习

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/awpc21/article/details/98781627

1.1 MySQL 数据库基础

1.2 MySQL 基础 (一)- 查询语句

#学习内容#

\1. 导入示例数据库,教程 https://www.yiibai.com/mysql/how-to-load-sample-database-into-mysql-database-server.html

\2. SQL是什么?MySQL是什么?

数据库只是一个结构化的数据集合。数据本质上相互关联,例如,产品属于产品类别并与多个标签相关联。这就是为什么要使用关系数据库。

在关系数据库中,我们使用表对产品,类别,标签等数据进行建模。 表包含列和行。它就像一个电子表格(Excel)。表可以涉及的使用有:一对一,一对多,多对一关系等关系。

因为我们要处理大量的数据,所以需要一种方法来定义数据库,表等,并更有效地处理数据。 另外,我们可以将数据转换成数据信息。

SQL代表结构化查询语言(Structured Query Language)。SQL是用于访问数据库的标准化语言。

SQL包含三个部分:

SQL语句主要分为:
DQL:数据查询语⾔,⽤于对数据进⾏查询,如select
DML:数据操作语⾔,对数据进⾏增加、修改、删除,如insert、udpate、delete

TPL:事务处理语⾔,对事务进⾏处理,包括begin transaction、commit、rollback
DCL:数据控制语⾔,进⾏授权与权限回收,如grant、revoke
DDL:数据定义语⾔,进⾏数据库、表的管理等,如create、drop
CCL:指针控制语⾔,通过控制指针完成表的操作,如declare cursor

对于web程序员来讲,重点是数据的crud(增删改查),必须熟练编写DQL、DML,
能够编写DDL完成数据库、表的操作,其它语⾔如TPL、DCL、CCL了解即可

MySQL是一个数据库管理系统,也是一个关系数据库。

当前主要使⽤两种类型的数据库:关系型数据库、⾮关系型数据库。

Mysql、SQL Sever中关键字语句不区分大小写。

  1. 查询语句 SELECT FROM (select from)

SELECT语句从表或视图获取数据。表由行和列组成,如电子表格。 通常,我们只希望看到子集行,列的子集或两者的组合。SELECT语句的结果称为结果集,它是行列表,每行由相同数量的列组成。

​ 语句解释

SELECT语句的语法:

SELECT 
    column_1, column_2, ...
FROM
    table_1
[INNER | LEFT |RIGHT] JOIN table_2 ON conditions
WHERE
    conditions
GROUP BY column_1
HAVING group_conditions
ORDER BY column_1
LIMIT offset, length;

SELECT(select)语句由以下列表中所述的几个子句组成:

  • SELECT之后是逗号分隔列或星号(*)的列表,表示要返回所有列。
  • FROM指定要查询数据的表或视图。
  • JOIN根据某些连接条件从其他表中获取数据。
  • WHERE过滤结果集中的行。
  • GROUP BY将一组行组合成小分组,并对每个小分组应用聚合函数。
  • HAVING过滤器基于GROUP BY子句定义的小分组。
  • ORDER BY指定用于排序的列的列表。
  • LIMIT限制返回行的数量。

语句中的SELECTFROM语句是必须的,其他部分是可选的。

如果要获取表中所有列的数据,可以列出SELECT子句中的所有列名,或者只需使用星号(*)表示您想要从表的所有列获取数据。

​ 前N个语句

​ CASE…END判断语句

\4. 筛选语句 WHERE

​ 语句解释:如果使用SELECT语句但不使用WHERE子句在表中查询数据,则会获取表中的所有行记录,这些行记录中大部分是不想要的行记录。

WHERE子句允许根据指定的过滤表达式或条件来指定要选择的行。

​ 运算符/通配符/操作符

下表列出了可用于在WHERE子句中形成过滤表达式的比较运算符。

操作符 描述
= 等于,几乎任何数据类型都可以使用它。
<>!= 不等于
< 小于,通常使用数字和日期/时间数据类型。
> 大于,
<= 小于或等于
>= 大于或等于

还有一些有用的运算符可以在WHERE子句中使用来形成复杂的条件,例如:

  • BETWEEN选择在给定范围值内的值。
  • LIKE匹配基于模式匹配的值。
  • IN指定值是否匹配列表中的任何值。
  • IS NULL检查该值是否为NULL

通配符:查询包含某些内容的语句
操作符:就是给语句加条件的特殊字符

\5. 分组语句 GROUP BY

​ 聚集函数

​ 语句解释

​ HAVING子句

\6. 排序语句 ORDER BY

​ 语句解释

​ 正序、逆序

\7. 函数

​ 时间函数

​ 数值函数

​ 字符串函数

8,SQL注释:
– 用于单行注释,格式:–注释内容。
/* 内容*/,"/“用于注释文字的开头,”/"用于注释文字的结尾,可在程序中标识多行文字为注释。

\9. SQL代码规范

​ [SQL编程格式的优化建议] https://zhuanlan.zhihu.com/p/27466166

​ [SQL Style Guide] https://www.sqlstyle.guide/

#作业#

项目一:查找重复的电子邮箱(难度:简单)

创建 email表,并插入如下三行数据

±—±--------+

| Id | Email |

±—±--------+

| 1 | [email protected] |

| 2 | [email protected] |

| 3 | [email protected] |

±—±--------+

编写一个 SQL 查询,查找 Email 表中所有重复的电子邮箱。

根据以上输入,你的查询应返回以下结果:

±--------+

| Email |

±--------+

| [email protected] |

±--------+

说明:所有电子邮箱都是小写字母。

-- 创建表

CREATE TABLE email (

ID INT NOT NULL PRIMARY KEY,

Email VARCHAR(255)

);

-- 插入数据

INSERT INTO email VALUES('1','[email protected]');

INSERT INTO email VALUES('2','[email protected]');

INSERT INTO email VALUES('3','[email protected]');


项目二:查找大国(难度:简单)

创建如下 World 表

±----------------±-----------±-----------±-------------±--------------+

| name | continent | area | population | gdp |

±----------------±-----------±-----------±-------------±--------------+

| Afghanistan | Asia | 652230 | 25500100 | 20343000 |

| Albania | Europe | 28748 | 2831741 | 12960000 |

| Algeria | Africa | 2381741 | 37100000 | 188681000 |

| Andorra | Europe | 468 | 78115 | 3712000 |

| Angola | Africa | 1246700 | 20609294 | 100990000 |

±----------------±-----------±-----------±-------------±--------------+

如果一个国家的面积超过300万平方公里,或者(人口超过2500万并且gdp超过2000万),那么这个国家就是大国家。

编写一个SQL查询,输出表中所有大国家的名称、人口和面积。

例如,根据上表,我们应该输出:

±-------------±------------±-------------+

| name | population | area |

±-------------±------------±-------------+

| Afghanistan | 25500100 | 652230 |

| Algeria | 37100000 | 2381741 |

±-------------±------------±-------------+

-- 创建表

CREATE TABLE World (

name VARCHAR(50) NOT NULL,

continent VARCHAR(50) NOT NULL,

area INT NOT NULL,

population INT NOT NULL,

gdp INT NOT NULL

);

-- 插入数据

INSERT INTO World

  VALUES('Afghanistan','Asia',652230,25500100,20343000);

INSERT INTO World 

  VALUES('Albania','Europe',28748,2831741,12960000);

INSERT INTO World 

  VALUES('Algeria','Africa',2381741,37100000,188681000);

INSERT INTO World

  VALUES('Andorra','Europe',468,78115,3712000);

INSERT INTO World

  VALUES('Angola','Africa',1246700,20609294,100990000);

猜你喜欢

转载自blog.csdn.net/awpc21/article/details/98781627
今日推荐