数据库实战:MySQL、SQL语句总结与应用案例分享
生活最大的危险在于一个空虚的心
文章目录
- MySQL
- SQL语句
- 总结
MySQL
- 数据库服务器
- 数据库 (一般来说,一个项目,都会使用一个独立的数据库)
- 数据表 (真正存储数据,和excel表差不多)
- 行与列 (每一行代表一条数据,列又叫做字段)
SQL语句
- 介绍
- SQL是一门数据库编程语言
- 使用SQL语言编写出来的代码叫做SQL语句
- SQL语言只能在关系数据库(例如 MySQL、Oracle、SQL Server)中使用。非关系型数据库(例如 Mongodb) 不支持 SQL 语言
- 用途
- 从数据库中查询数据
- 向数据库中插入新的数据
- 更新数据库中的数据
- 从数据库中删除数据
- 可以创建新数据库
- 可以在数据库中创建新表
- 可以在数据库中创建存储过程
- 查询语句
- 查询语法:
SELECT 字段1,字段2,...FROM表名
- 查询所有的字段:
SELECT * FROM 表名
- 带条件的查询:
SELECT * FROM 表名 [WHERE 条件] [ORDER BY 排序字段 [,排序字段]] LIMIT [开始位置,] 长度
- 查询语法:
- 模糊查询
%
代表任意长度 (包括0) 的任意字符_
代表长度的任意字符like
在执行模糊查询时,必须使用like来作为匹配条件
- 统计查询
max
查询最大值- 例
SELECT MAX(age) FROM heros
返回heros
表中age
列的最大值,即所有英雄中年龄最大的那个英雄的年龄
- 例
min
查询最小值- 例
SELECT MIN(age) FROM heros
返回heros
表中age
列的最小值,即所有英雄中年龄最小的那个英雄的年龄
- 例
avg
查询平均值- 例
SELECT AVG(age) FROM heros
返回heros
表中age
列的平均值,即所有英雄年龄的平均值
- 例
sum
查询总和- 例
SELECT SUM(age) FROM heros
返回heros
表中age
列的所有值的总和,即所有英雄年龄的总和
- 例
count
查询总记录数- 例
SELECT COUNT(*) AS cc FROM heros
返回heros
表中的行数,即英雄的总数。AS cc
是给结果列起一个别名
- 例
- 查询结果排序
order by
可以对查询结果按某个字段进行升序或者降序排列- 升序
asc
默认值 - 降序
desc
- 升序
- 注意:如果SQL语句中,有where和order by ,where一定要放在order by之前
- 限制查询结果
limit
限制查询结果的起始点和长度- 格式 :
limit start,length
- start:起始点,查询结果的索引,从0开始,0代表第一条数据,如果省略start,则默认表示从0开始
- length:长度
- 添加数据
- 格式:
insert into 表名 ...
- 方式一:指定字段和值,只要字段和值对应即可,和顺序无关
insert into heroes (字段, 字段, ...) values (值, 值, ...)
- 例
insert into heroes (nickname, age, name) values ('虚空恐惧', 98, '科加斯')
- 例
- 方式二:和顺序有关,因为没指定子段,所以值必须是所有的值,而且顺序和表中字段的顺序要一致
- 例
insert into heroes values (null, '拉克丝', '光辉女郎', '女', 28)
- 例
- 方式三:使用set设置新数据的值,没有顺序关系
insert into heroes set 字段=值, 字段=值, ....
- 例
insert into heroes set name='李青', nickname='盲僧'
- 例
- 格式:
- 修改数据
- 格式:
update 表名 set 字段1=值1, 字段2=值2,... where 修改条件
- 加条件修改:例
update heroes set age=28, skill='在地上打滚' where id=19
- 如果不指定条件,则会修改所有的行:例
update heroes set sex='妖'
- 加条件修改:例
- 格式:
- 删除数据
- 格式:
delect from 表名 where 删除条件
- 加条件删除:例
delete from heroes where id=19
- 如果不加条件,将删除所有的数据,危险操作
- 例
delete from heroes
- 例
- 加条件删除:例
- 注意:不指定条件将删除所有的数据
- 格式:
总结
查询id、name、age三个字段
SELECT id,name,age FROM heroes
查询所有的字段
select * from heroes
查询id大于3的英雄 (select * from heroes where 条件)
select * from heroes where id>3
查询id大于3的男英雄
select * from heroes where id>3 and sex='男'
模糊查询
查询名字中带有 “斯” 的英雄
select * from heroes where name like '%斯%'
查询名字的最后一个字是 “斯” 的英雄
select * from heroes where name like '%斯'
查询名字中带有“斯”,并且要求“斯”前面只能有一个字的英雄
select * from heroes where name like '_斯%'
统计查询
查询最大值 (查询所有英雄中年龄最大的的英雄)
select max(age) from heroes
查询最小值 (查询所有英雄中年龄最小的的英雄)
select min(age) from heroes
查询平均值 (查询所有英雄年龄的平均值)
select avg(age) from heroes
查询总和 (查询所有英雄的年龄之和)
select sum(age) from heroes
查询总记录数 (查询共计有多少个英雄)
select count(*) as cc from heroes
对查询结果进行排序 (select * from heroes order by 字段 [ASC|DESC], 字段 [ASC|DESC] .....)
查询所有的英雄,按年龄从大到小排序(降序)
select * from heroes order by age desc
查询所有的英雄,按照年龄升序排序
select * from heroes order by age asc
查询id大于3的英雄,并且按照年龄降序排序
select * from heroes where id>3 order by age desc
注意:where要放到order by前面;where和order by部分之间,不要加and
限制查询结果 (select * from heroes limit start, length)
查询前三个英雄
select * from heroes limit 0, 3
查询第4、5、6个英雄
select * from heroes limit 3, 3
查询年龄最大的女英雄
select * from heroes where sex='女' order by age desc limit 1
添加英雄
insert into 表名 (字段, 字段, 字段, ...) values (值, 值, 值, ...)
insert into 表名 values (值, 值, 值, ...) 要求值的顺序和字段的顺序一致,个数也要一致
insert into 表名 set 字段=值, 字段=值, ....
修改英雄
update heroes set name='李青', nickname='盲僧' where 条件
删除英雄
delete from heroes where 条件
删除表
drop table heroes
删除数据库
drop database abc