MySQL的基础部分
SQL基础知识汇总
https://mp.weixin.qq.com/s/RCoROHY7C4oFVq0lUhzPwg
SQL Server高级知识点
https://mp.weixin.qq.com/s/OF7-FG6zrnF653nZa5elhA
MYSQL 入门全套
https://mp.weixin.qq.com/s/NdXgXeygrrujzOYsl7AnSQ
Navicat Premium 15 软件下载及安装教程
https://mp.weixin.qq.com/s/XsRCEnRdh3-35j7SNjSuCQ
数据库的安装
https://mp.weixin.qq.com/s/Bk_KVtiiD6ByjpgMBc4QFQ
SQL Server安装包
https://mp.weixin.qq.com/s/xsiHl5-33Em5ukkhwNTZ6A
数据库的备份和还原
-
数据类型与约束
-
常用数据类型
整数
小数
字符串
日期时间
-
约束
主键
默认值
非空
唯一
外键
-
MySQL的基础操作
Navicat使用MySQL注释
创建表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-so6YlBt2-1685180322240)(null)]
create table goods(
goodsName varchar(20),
price decimal(4,2)
);
常见错误:如果表已经被创建,再执行语句,会提示表已经存在
--优化
--如果表存在,执行删除操作
drop table if exists goods;
create table goods(
goodsName varchar(20),
price decimal(4,2)
);
插入数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qqgbZwHq-1685180322278)(null)]
insert into 表名 values(…),(…)…
insert into student(name) values(‘老夫子’)
直接插入多条数据
insert into students(name) values(‘老夫子5’),(‘老夫子6’)
数据之间用英文逗号隔开
更新数据
uptate 表名 set 更新的内容(字段名=更新的数据) where 条件
uptate 表名 set 字段名name=‘火灵邪神’,age=25 where id=5;
删除表数据
delete from 表名 where 条件
delete from students where id=6;
查数据
查询表(>,<,=,<>,!=,>=,and,or,in,between,not)
select * from 表名;
模糊查询
模糊查询
开头的话就把%放结尾,需要结尾的话就把%放前面,理解为占位符,替代这个空间的位置。
开头
select * from students where name like ‘孙%’;
结尾
select * from students where name like ‘%巧’;
包含
select * from students where name like ‘%巧%’;
NOT LIKE | Case insensitive exact string inequality comparison 没有用通配符等价于 != | col_nameNOT LIKE"ABCD" |
% | Used anywhere in a string to match a sequence of zero or more characters (only with LIKE or NOT LIKE) 通配符,代表匹配0个以上的字符 | col_name LIKE “%AT%”(matches “AT”, “ATTIC”, “CAT” or even “BATS”) “%AT%” 代表AT 前后可以有任意字符 |
_ | Used anywhere in a string to match a single character (only with LIKE or NOT LIKE) 和% 相似,代表1个字符 | col_name LIKE “AN_”(matches “AND”, but not “AN”) |
IN (…) | String exists in a list 在列表 | col_name IN (“A”, “B”, “C”) |
NOT IN (…) | String does not exist in a list 不在列表 | col_nameNOT IN(“D”, “E”, “F”) |
排序数据
排序(默认的话就是从小到大,升序,所以可以省略不写)
select * from 表名 order by 字段a;
asc升序(从小到大)
select * from 表名 order by 字段a asc;
desc降序(从大到小)
select * from 表名 order by 字段a desc;
a字段升序,a字段相同时,b字段降序
select * from movie order by a desc,b asc;
显示数据(分页)
当数据量很大的时候,可以使用 limit
关键字来分页显示数据,例如:
显示前三行的数据:
select * from students limit 0,3;
显示4到6行的数据:
select * from students limit 4,6;
显示前十行的数据:
select * from student limit 10;
数据结果过滤可以使用 where
关键字进行筛选,例如:
select * from student as s where s.id=100;
起别名
为表名和字段起别名可以提高 SQL 语句的可读性和易用性,例如:
给学生表起别名:
select s.name,s.sex,s.age from students as s;
MySQL的高级操作
多表查询
https://mp.weixin.qq.com/s/Q_uiKoNZW5Dgc7XFmM_8Qg
多表查询是指一次查询涉及到多个表,可以使用三种不同类型的连接(联接)操作:内连接、左连接和右连接。
内连接:只返回两个表中共同匹配的行。
select * from 表1 inner join 表2 on 表1.id=表2.id;
左连接:返回左表中所有的行,以及右表中匹配的行。
select * from 表1 left join 表2 on 表1.id=表2.id;
右连接:返回右表中所有的行,以及左表中匹配的行。
select * from 表1 right join 表2 on 表1.id=表2.id;
SQL 函数
SQL 函数可以对数据进行处理和计算,常用的函数包括:
SQL聚合函数
select avg(*) from pdd where id=0;
avg(字段名)
:求平均值。
select count(字段名) from student where gender=1;
count(*)
:查看数据共多少条。
select max(字段名) from student where gender=1;
max(字段名)
:查看最大值。
select min(字段名) from student where gender=1;
min(字段名)
:查看最小值。
select sum(字段名) from student where gender=1;
sum(字段名)
:求每一列数值的和。
分组操作
分组操作可以使用 group by
关键字实现,例如:
select name, count(*) from students group by name;
以上查询会统计每个学生名字出现的次数。
分组后的数据筛选—having
这个你需要注意下!!!
having
select name, count(*) from students group by name having name!=‘张三’
where 与 having 的区别:
注意:where 是对原始数据集的筛选,having 是对分组后的结果数据进行筛选。
注意:having 的运算符与 where 相同,像“逻辑运算符”、“比较运算符”
数据不重复
就是有多条相同的数据上消除保留一条
select distinct 字段名 from 表名;
Python 的 Flask
Python 的 Flask 应用经常需要使用 SQL 数据库,因此以上的 SQL 高级应用对于 Flask 开发也非常有用。
@2023/05/27 15:14
暂时更新这么多了,后续如果用到其他的就马上补上去。
https://flowus.cn/qazxx/share/78c47539-4bfd-4baf-894d-ea04c439a8c0
【FlowUs 息流】MySQL