数据分析无法离开SQL这一重要的工具,经过十天时间的学习,并完全以MySQL工具对上一节的数据分析岗位数据进行了分析,加强了操作训练,对这一工具使用有了基本的经验。本着以输出为手段检验学习效果,以温故而知新,把MySQL基础知识系统梳理。
创建数据库
create database 数据库名;
删数据库
drop database 数据库名;
显示已有数据库
show databases;
使用数据库(打开数据库)
use 数据库名;
创建表
create table 表名
( 学号 char(10) not null primary key,
班级 char(20) null,
);
显示表
show tables;
显示表的结构
desc 表名;
或
describe 表名;
往表里添加值
insert into 表名 (`学号`,`姓名`...) --可以省略这个
values('20022','小明',....),(...);
显示表的所有内容
select * from 表名;
alter table student add name char(4); -- 添加字段和配置结构
alter table student drop name; -- 删除某个字段
alter table student modify name char(10); -- 改变字段的结构,但不改变字段名
alter table student change name names varchar(20); -- 改变字段名和字段结构
alter table student alter names set default '女'; -- 给字段设置默认值
alter table student alter names drop default; -- 删除字段的默认值
alter table student rename to student1; -- 重命名表名
插入数据
--添加数据的另一种方式
insert into kc
set 课程号 = '401',课程名 = 'Java',开课学期 = '1',学时 = '80',学分 = '10';
--主键一样的情况下替换数据
replace into kc
set 课程号 = '401',课程名 = 'PHP',开课学期 = '2',学时 = '90',学分 = '20';
修改数据
--更新数据,无条件
update kc
set 学分 = 学分+10;
--更新数据,带条件
update kc
set 学分 = 学分+100
where 课程号 = '101';
删除数据
--删除某一条数据
delete from kc
where 课程号 = '101';
--从多个表中删除行(数据)
--假设有三个表,t1、t2、t3,他们都含有ID列(字段)。请删除t1中ID值等于t2中ID值的所有行和t2中的ID值等于t3中ID值的所有行。
delete t1,t2
from t1,t2,t3
where t1.id = t2.id and t2.id = t3.id;
或
delete t1,t2
using t1,t2,t3
where t1.id = t2.id and t2.id = t3.id;
--删除指定表中的所有数据,但参与了索引和视图的表不可用它来删,应用delete
truncate table 表名
选择指定的列
select 字段名 from 表名;
select * from 表名; --*通配符查询所有字段数据
给列起别名
--给列起别名
select name as 名字 from 表名;
--当别名有空格时需用''号括起来
select student as 'student number' from 表名;
替换查询结果中的数据
--把数量这个字段起别名作为库存,根据条件替换数量字段里的内容(不是真实修改表内数据,只是查询时的修改)
select 图书编号,书名,
case
when 数量 is null then '尚未进货'
when 数量 < 5 then '需进货'
when 数量 >= 5 and 数量 <= 50 then '库存正常'
else '库存积压'
end as 库存
from book;
计算列值
select 图书编号,订购册数*订购单价 as 订购金额
from sell
where 是否发货 = '已发货';
消除结果中重复的行
--比如学生表里的专业名与总学分可能有很多相同的
select distinct 图书类别,出版社
from book;
count(*|distinct|表达式)
select count(*) as 数量 from kc;
max(*|distinct|表达式)
select max(学分) as 最大值 from xs_kc;
min(*|distinct|表达式)
select min(学分) as 最大值 from xs_kc;
sum(*|distinct|表达式) --计算某个列所有值的总和
select sum(收入) from kc;
avg(*|distinct|表达式) --计算某个列所有值的平均值
select avg(收入) from kc;
<>不等于 <=>相等或都等于空时为true,两个有一个空或不空但值不相同都为false !=不等于
and && 与 or || 或 not ! 非 xor 异或运算 xy 如果x和y不相同,则返回true,相同则返回false
_ 符号:通配任意单一字符
%符号:通配任意N个字符
例:查询members表中姓“张”的信息
select * from members
where name like '张%';
例:查询students表中学号倒数第二位是0的学生情况
select * from students
where 学号 like '%0_';
例:查询book书名包含下划线的图书
知识点补充(关键字):escape '#' 表示#后面是普通字符,即转义了,#号可以自定义
select * from book
where 书名 like '%#_%' escape '#';
select * from book
where 出版时间 between '2010-1-1' and '2010-12-31';
select * from book
where 出版社 in ('高等教育出版社','北京大学出版社','人民邮电大学出版社');
select * from sell
where 是否发货 is null;
不加条件的连接(xs表是学生表_无成绩字段,xs_kc表是课程表_无专业名字段)
select 专业名,成绩 from xs,xs_kc;
加条件的连接 理解:两个表中学号有不一样的,如果不加条件,则会把学号一样的和不一样的 学生专业名和成绩都查出来,加了条件后,只会把两个表中学号一样的学生(即同一个学生)的 专业名和成绩查出来。
select 专业名,成绩 from xs,xs_kc
where xs.学号 = xs_kc.学号;
join连接 两个表连接
select 书名,订购册数
from book inner joim sell
on book.图书编号 = sell.图书编号
where 书名 = '网页设计' and 订购册数 > 5;
多个表连接
select book.图书编号,会员名,书名,订购册数
from sell join book on book.图书编号 = sell.图书编号
join member on sell.身份证号 = member.身份证号
where 书名 = '网页程序设计' and 订购册数 > 5;
自表连接 理解:连接的两个表都是一个表,只不过给起了别名来区分 使用情况:比如查询sell表中,图书编号相同,但订单号不同的图书的订购用户
select a.订购用户 from sell as a join sell as b
on a.图书编号 = b.图书编号
where a.订单号 != b.订单号;
using子句
当连接的表中列名相同,且连接的条件就是列名相等,可以用using
select distinct 会员姓名
from members join sell using(身份证号);
在where子句里套select,用in来效验where里的select查询结果
--格式
expression [not] in (subquery)
select * frrom sell
where 身份证号 in (select 身份证号 from members where 会员姓名 = '张三');
group by子句
group by 子句用于根据字段来分组。例如根据学生专业名来分组
select count(专业名) from xs
group by 专业名;
having子句
该子句用在gruop by子句后,通常搭配聚合函数使用
--查询订购单数在2笔以上的人的身份证号
select 身份证号 from sell
group by 身份证号 having 订购单数 > 2;
order by 子句
这个子句是用来对查询结果排序的,ASC表示升序,DESC表示降序
select 成绩 from xs_kc
order by 成绩 DESC;
select 成绩 from xs_kc
order by 成绩 ASC;
limit子句
limit子句是select最后一个子句,用于限制select返回的行数
limit 5 --返回前5条记录
limit 3,5 --返回从第4条开始(包括第4条)的5条记录
以上就是MySQL基础学习总结的全部内容,欢迎伙伴们一起来讨论。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。