MySQL精简速成

SQL入门和实战

为什么学python要学SQL,SQL语言是开发人人必备的技能

在大数据的实际操作中,我们需要使用SQL完成数据的存储与处理

当然SQL语言博大精深,这里就简单的掌握

#基础语法

#MySQL数据库软件的基础使用

数据分为数据的存储、数据的计算

编程是对数据的计算

数据的存储通过TXT、EXCEL,这些是日常的存储。

在开发人员眼里,是用数据库来存储数据的。

Excel存储数据的话,我们会把报名登记表和宿舍分配表两个表格放到2021年文件夹里

那么数据库的话,就是把两张表放到2021数据库里,说白了数据库就是文件夹

也就是说索引数据是按照库--表--数据的形式去调用数据的

怎么管理数据库形式的数据呢??我们要借助数据库管理系统,也就是数据库软件

比如oracle mysql sqlserver postgresql 

数据库在存储数据的过程中会用到SQL语言。

SQL语言就是一种对数据库、数据进行操作、管理、查询的工具。

我们这里使用的数据库软甲是MySQL 

MySQL是由瑞典的DataKonsultAB公司研发的,这家公司被Sun公司收购,Sun公司又被Oracle公司收购,现在MySQL是Oracle旗下的产品

MySQL分为社区版和商业版。体积小 速度快 拥有成本低,一般开发都选MySQL作为数据库

免费版:

MySQL Community Server#社区版本,免费,MySQL不提供官方支持

MySQL Cluster#集群版,开源免费,可将几个MySQL Server封装成一个Server

收费版:

MySQL Enterprise Edition#商业版,收费版本,可以试用30天,官方提供技术支持

MySQL Cluster CGE#高级集群版,需付费

我们用第一个

SQL按照功能分为

数据定义:DDL(Data Definition Language)

数据操纵:DML(Data Manipulation Language)

数据控制:DCL(Data Control Language)

数据查询:DQL(Data Query Language)

 SQL对大小写不敏感,可以单行、多行书写,最后用分号";"结尾

SQL的注释:

单行注释: -- 注释的内容(--的后面有一个空格)

单行注释:# 注释的内容

多行注释:/*    注释的内容*/

什么叫可以多行书写???

不是写一行给一个分号

分号是在写完SQL语句之后写上分号,表示我写完了

#学习DDL(Data Definition Language)

关于库-------------------------------------------

-- 库管理

show databases;

-- 使用数据库

use 数据库名;

-- 查看当前使用的数据库

select database(); #可以通过选中语句来单独运行选中的语句

-- 创建数据库

create database 数据库名[charset utf8]; #这边的中括号[ ]表示可选,也就是说中括号里的东西是可写可不写的,不是说要把中括号写上去

create database 数据库名;#这样也是可以的

create database 数据库名 charset utf8;#这样也是可以的

-- 删除数据库

drop database 数据库名;

关于表---------------------------------------------------

-- 查看库中有哪些表

show tables;

-- 创建表

create table 表名称(

                     列名称 列类型,

                     列名称 列类型,

                     列名称 列类型

);

#列类型有int float varchar(长度)  date(日期类型) timestamp(时间戳类型)

varchar(8)表示这个数据是文本类型的 限制这个数据的长度是8,长度限制最大是255

-- 删除表

drop table 表名;

drop table if exsits 表名;

#学习DML(Data Menipulation Language)

#掌握INSERT

#掌握DELETE

#掌握UPDATE

INSERT语法:

INSERT INTO 表名[(列1,列2,.......,列N)]VALUES(值1,值2,.......,值N)[,(值11,值21,.......,值N1),(值12,值22,.......,值N2),(值1N,值2N,.......,值NN)]

基本上就是insert into 表名[(这里写需要被插入的列的名称)]VALUES[(这里写被插入的列对应的插入的值)][这里是可选的,如果想插入两列数据给这一列]

#!!!!!!中括号是不写上去的,知识表达一个可选的意思

##写法

INSERT INTO 表名(列名称1,列名称2)VALUES(插入的数据,插入的数据),(插入的第二份数据,插入的第二份数据),(插入的第三份数据,插入的第二份数据);#这边如果说只选择部分列插入部分数据,别的地方的数据会用NULL补上,不会报错。

varchar型的数据,在插入的时候要用' '或" "括起来的

这边我们省略的写法可以是:

INSERT INTO 表名VALUES(值1,值2,.......,值N)#把可选都不写了 相当于位置传参了

DELETE语法:

DELETE FROM 表名[WHERE 条件]#条件是   列 判断符 值

UPDATE语法:

UPDATE 表名 SET 列名=值[WHERE 条件]

#学习DQL(Data Query Language)

#SELECT基础查询

SELECT 字段列表|*FROM 表名[WHERE 条件]

*就是全选

字段列表就是列名 可以写成列名1,列名2

如果说我想通过多个条件来筛选需要显示的数据,用&&和||来连接多个条件,&&表示且,||表示或

#GROUP BY分组聚合查询

比如说我们有一个需求,#统计班级中男生和女生的人数#

第一步,按性别分两个组

第二步,统计每个组的人数

分组聚合是两步

#分组

SELECT [列名,]聚合函数 FROM 表名[WHERE 条件] GROUP BY 列名

这个意思就是按照GROUP BY 的列名进行分组,按照聚合函数进行对值的操作

#聚合

聚合函数有

AVG(列名)#求平均值

COUNT(列名)#求数量总和

SUM(列名)#求和

MIN(列名)#求最小值

MAX(列名)#求最大值

当然我们举个例子,我们一张表有id name age

现在我通过姓名分组,求得age>35的AVG(age),我显示name,AVG(age),这样是可以的,avg是一个值,按照姓名分组后,这个组里都是一个姓名。

现在如果我SELECT name,id,AVG(age)FROM 表 WHERE age>35 GROUP BY name 是会报错的,你说这些叫oldlady的平均年龄43.5,用谁的id?id数据是没有共性的。

##归纳下,分组聚合时没有被group by的 不能被select ##

一条分组聚合语句里面可以写多个聚合函数的。

#对查询的结果进行排序ORDER BY

写在DQL语句的最后 ORDER BY 列名[ASC|DESC] #升序|降序 

#对查询结果进行分页或者限制查询的数量LIMIT

LIMIT n [ , m]

#意思就是查完的数据,我只想显示n行数据,n,m表示我要从第n条开始往后取m条 

那比如10,5 就是从第10条开始,往后取5条,那么就是第11,12,13,14,15条数据

我们的DQL语句顺序是

SELECT 列名|聚合函数|* FROM 表名

WHERE 条件

ORDER BY 列名[desc|asc]

LIMIT n [,m]

posted @ 2023-12-18 16:18  静听微风tom  阅读(4)  评论(0编辑  收藏  举报