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]