第二周--MySQL学习
四大基本操作
1.1 增
1.1.1 新建数据库
英文单词:
create 创建 default 默认 charset 字符集(编码)
-- 创建数据库
create database 数据库名;
-- 创建数据库,默认编码为uft8
create database 数据库名 default charset utf8;
1.1.2新建表
-- 新建数据表
create table 表名(列名 数据类型,列名2 数据类型,列名3 数据类型);
常用数据类型:
int 整型 float 浮点型 varchar 字符型 datetime 日期类型
字符型必须限制长度
1.1.3插入新数据
英文单词:
insert 插入 添加 into 到…里面 values 值
-- 添加一行数据
insert into 表名 values(值1,值2,值3...);
-- 添加多行数据
insert into 表名 values(值1,值2,值3...),(值1,值2,值3...),(值1,值2,值3...)...;
1.2 删
1.2.1 删除数据库
英文单词:
database 数据库 drop 删除
-- 删除数据库
drop database 数据库名;
1.2.2 删除数据表
drop table 表名;
1.2.3 删除数据
-- 删除某一行
delete from 表名 where 条件
-- 删除所有数据
select * from class;
1.3 改
1.3.1 更新数据
英文单词:
update 更新,修改 set 设置
-- 修改某个值
update 表名 set 列名='修改值' where 条件
-- 修改多个值
update 表名 set 列名='修改值',列名2='修改值',列名3='修改值' where 条件
1.4 查
1.4.1 基础查询
英文单词:
select 筛选、查询 from 来自
-- 查询某一列数据
select 列名 from 表名
-- 查询多列数据
select 列名,列名2,列名3 from 表名
-- 查询所有数据
select * from 表名
1.4.2 条件查询
英文单词:
where 哪里 between 在什么之间 in 在什么里面 like 像 null 空
-- 根据列名的值进行查询
select 列名 from 表名 where 列名=“值”;
-- 查询在区间数值1到数值2内的数据
select 列名 from 表名 where 列名 between 数值1 and 数值2
-- 查询值等于数值1或数值2的数据
select 列名 from 表名 where 列名 in(数值1,数值2);
-- 同时满足2个条件
select 列名 from 表名 where 条件1 and 条件2
-- 满足任一条件都要
select 列名 from 表名 where 条件1 or 条件2
-- 不满足某一条件
select 列名 from 表名 where not(条件)
-- 多个条件后面接着加and或者or
select 列名 from 表名 where 条件1 and 条件2 and 条件3
select 列名 from 表名 where 条件1 or 条件2 or 条件3
-- 查找数据包含内容二字的数据
select 列名 from 表名 where 列名 like '%内容%'
-- 查询名字为三个字的人名
select 列名 from 表名 where name like '___';
-- 列为空数据
select 列名 from 表名 where 列名 is null;
-- 列为不为空数据
select 列名 from 表名 where 列名 is not null;
-- 列为字符串空数据
select 列名 from 表名 where 列名='';
比较运算符:
=,>,<,>=,<= ,!= (!不), <> 不等于
between… and… 在什么区间
not between… and… 不在什么区间
in(数值,数值2) 在什么里面
not in(数值,数值2) 不在什么里面
逻辑运算符:
and:要同时满足多个条件,交集
or:或者,满足任一条件都要(小孩子才做选择,or全都要),没有交集,并且两个都要,用or
not:取反
模糊查询:
like 模糊
not like 模糊取反
% 代表不确定多少位数的值
_ 占位符,代表一位字符
(确定位数,使用_占位符;不确定位数,用%)
空查询:
null 空,基本任一类型都可以使用。注意不需要加引号
null和‘’ 都是代表空数据
(null:基本任一类型都可以使用,等于null得用is null;用在字符型里面,等于空数据得用=‘’)
1.4.3 限制查询
英文单词:
limit 限制
-- 查询前n行数据,limit放在sql语句的最后
select 列名 from 表名 limit n;
-- 从m+1条开始开始拿,往后拿n条数据,第一条数据m=0
select 列名 from 表名 limit m,n;
1.4.4 排序查询
英文单词:
order 顺序 by 根据 asc 升序/正序 desc 降序/倒序
-- 升序查询,asc不写,默认为升序
select 列名 from 表名 order by 列名 asc;
-- 降序查询
select 列名 from 表名 order by 列名 desc;
1.4.5 分组/去重查询
英文单词;
group 组 by 根据
-- 根据某一列去重
select 列名 from 表名 group by 列名
-- 分组后的再次过滤,where分组前过滤,having分组后过滤
select 列名 from 表名 where 条件 group by 列名 having 条件
1.4.6 子查询
-- 查询和徐蔡坤相同学号的所有名字
select name from class where id=(select id from class where name='徐蔡坤');
子查询,通过括号括起来,里面写完整的sql语句,子查询会优先执行
子查询可以当值用,也可以当表用;子查询当表用,必须要有别名;子查询当值用,一个值就用=,多个值用 in
1.4.7 多表联查
英文单词:
join 连接 on 在…之上
-- 内连接 inner join on
select 列名 from 左表 inner join 右表 on 左表.列名=右表.列名;
-- 左连接 left join on / left outer join on
select 列名 from 左表 left join 右表 on 左表.列名=右表.列名;
-- 右连接 right join on / right outer join on
select 列名 from 左表 left join 右表 on 左表.列名=右表.列名;
内连接:
两个表的交集部分,只返回两张表相同的记录
左连接(左外连接):
左表的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
右连接(右外连接):
与左(外)连接相反,右(外)连接,左表只会显示符合搜索条件的记录,而右表的记录将会全部表示出来。左表记录不足的地方均为NULL。
连接条件:
相同的列名
1.5 常用方法
1.5.1 distinct 去重
英文单词:
distinct 去重
-- 根据某一列去重,只能去重一列
select distinct(列名) from 表名
1.5.2 as 别名
英文单词:
as 作为
-- 某一个列名进行别名
select 列名 as '别名' from 表名
1.5.3 聚合函数
英文单词:
max 最大 min 最小 average 平均 sum 总和 count 总行数
-- 聚合函数基本格式,统计某一列的数据,返回一个值
select 聚合函数(列名) from 表名;
最大值:max()
最小值:min()
平均值:avg()
求和:sum()
总行数:count()