前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【随笔小记】MySQL基础学习

【随笔小记】MySQL基础学习

原创
作者头像
ICU
发布2022-04-24 22:38:50
8020
发布2022-04-24 22:38:50
举报
文章被收录于专栏:我和你

摘要

数据分析无法离开SQL这一重要的工具,经过十天时间的学习,并完全以MySQL工具对上一节的数据分析岗位数据进行了分析,加强了操作训练,对这一工具使用有了基本的经验。本着以输出为手段检验学习效果,以温故而知新,把MySQL基础知识系统梳理。

正文

基本命令

创建数据库

代码语言:javascript
复制
create database 数据库名;

删数据库

代码语言:javascript
复制
drop database 数据库名;

显示已有数据库

代码语言:javascript
复制
show databases;

使用数据库(打开数据库)

代码语言:javascript
复制
use 数据库名;

创建表

代码语言:javascript
复制
create table 表名

(	学号 char(10) not null primary key,

	班级 char(20) null,

);

显示表

代码语言:javascript
复制
show tables;

显示表的结构

代码语言:javascript
复制
desc 表名;
或
describe 表名;

往表里添加值

代码语言:javascript
复制
insert into 表名 (`学号`,`姓名`...) --可以省略这个

values('20022','小明',....),(...);

显示表的所有内容

代码语言:javascript
复制
select * from 表名;

Alter 相关

代码语言:javascript
复制
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; -- 重命名表名

表里的数据操纵

插入数据

代码语言:javascript
复制
--添加数据的另一种方式
insert into kc 
set 课程号 = '401',课程名 = 'Java',开课学期 = '1',学时 = '80',学分 = '10';
代码语言:javascript
复制
--主键一样的情况下替换数据
replace into kc
set 课程号 = '401',课程名 = 'PHP',开课学期 = '2',学时 = '90',学分 = '20';

修改数据

代码语言:javascript
复制
--更新数据,无条件
update kc
set 学分 = 学分+10;
代码语言:javascript
复制
--更新数据,带条件
update kc
set 学分 = 学分+100
where 课程号 = '101';

删除数据

代码语言:javascript
复制
--删除某一条数据
delete from kc
where 课程号 = '101';
代码语言:javascript
复制
--从多个表中删除行(数据)
--假设有三个表,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;
代码语言:javascript
复制
--删除指定表中的所有数据,但参与了索引和视图的表不可用它来删,应用delete
truncate table 表名

数据查询

选择指定的列

代码语言:javascript
复制
select 字段名 from 表名;
select * from 表名; --*通配符查询所有字段数据

给列起别名

代码语言:javascript
复制
--给列起别名
select name as 名字 from 表名;
--当别名有空格时需用''号括起来
select student as 'student number' from 表名;

替换查询结果中的数据

代码语言:javascript
复制
--把数量这个字段起别名作为库存,根据条件替换数量字段里的内容(不是真实修改表内数据,只是查询时的修改)
select 图书编号,书名,
case 
	when 数量 is null then '尚未进货'
	when 数量 < 5 then '需进货'
	when 数量 >= 5 and 数量 <= 50 then '库存正常'
	else '库存积压'
end as 库存
from book;

计算列值

代码语言:javascript
复制
select 图书编号,订购册数*订购单价 as 订购金额 
from sell
where 是否发货 = '已发货';

消除结果中重复的行

代码语言:javascript
复制
--比如学生表里的专业名与总学分可能有很多相同的
select distinct 图书类别,出版社
from book;

聚合函数

代码语言:javascript
复制
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

like运算符-模式匹配

代码语言:javascript
复制
_ 符号:通配任意单一字符
%符号:通配任意N个字符
例:查询members表中姓“张”的信息
select * from members
where name like '张%';
例:查询students表中学号倒数第二位是0的学生情况
select * from students
where 学号 like '%0_';
例:查询book书名包含下划线的图书
知识点补充(关键字):escape '#' 表示#后面是普通字符,即转义了,#号可以自定义
select * from book
where 书名 like '%#_%' escape '#';

范围比较(between 和 in)

代码语言:javascript
复制
select * from book
where 出版时间 between '2010-1-1' and '2010-12-31';
select * from book
where 出版社 in ('高等教育出版社','北京大学出版社','人民邮电大学出版社');

空值比较(is 和 is not)

代码语言:javascript
复制
select * from sell
where 是否发货 is null;

多表查询

不加条件的连接(xs表是学生表_无成绩字段,xs_kc表是课程表_无专业名字段)

代码语言:javascript
复制
select 专业名,成绩 from xs,xs_kc;

加条件的连接 理解:两个表中学号有不一样的,如果不加条件,则会把学号一样的和不一样的 学生专业名和成绩都查出来,加了条件后,只会把两个表中学号一样的学生(即同一个学生)的 专业名和成绩查出来。

代码语言:javascript
复制
select 专业名,成绩 from xs,xs_kc
where xs.学号 = xs_kc.学号;

join连接 两个表连接

代码语言:javascript
复制
select 书名,订购册数
from book inner joim sell 
on book.图书编号 = sell.图书编号
where 书名 = '网页设计' and 订购册数 > 5;

多个表连接

代码语言:javascript
复制
select book.图书编号,会员名,书名,订购册数
from sell join book on book.图书编号 = sell.图书编号
join member on sell.身份证号 = member.身份证号
where 书名 = '网页程序设计' and 订购册数 > 5;

自表连接 理解:连接的两个表都是一个表,只不过给起了别名来区分 使用情况:比如查询sell表中,图书编号相同,但订单号不同的图书的订购用户

代码语言:javascript
复制
select a.订购用户 from sell as a join sell as b 
on a.图书编号 = b.图书编号
where a.订单号 != b.订单号;

using子句

当连接的表中列名相同,且连接的条件就是列名相等,可以用using

代码语言:javascript
复制
select distinct 会员姓名
from members join sell using(身份证号);

子查询

在where子句里套select,用in来效验where里的select查询结果

代码语言:javascript
复制
--格式
expression [not] in (subquery)

select * frrom sell
where 身份证号 in (select 身份证号 from members where 会员姓名 = '张三');

分类汇总与排序

group by子句

group by 子句用于根据字段来分组。例如根据学生专业名来分组

代码语言:javascript
复制
select count(专业名) from xs
group by 专业名;

having子句

该子句用在gruop by子句后,通常搭配聚合函数使用

代码语言:javascript
复制
--查询订购单数在2笔以上的人的身份证号
select 身份证号 from sell
group by 身份证号 having 订购单数 > 2;

order by 子句

这个子句是用来对查询结果排序的,ASC表示升序,DESC表示降序

代码语言:javascript
复制
select 成绩 from xs_kc
order by 成绩 DESC;
select 成绩 from xs_kc
order by 成绩 ASC;

limit子句

limit子句是select最后一个子句,用于限制select返回的行数

代码语言:javascript
复制
limit 5 --返回前5条记录
limit 3,5 --返回从第4条开始(包括第4条)的5条记录

完结

以上就是MySQL基础学习总结的全部内容,欢迎伙伴们一起来讨论。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
  • 正文
    • 基本命令
      • Alter 相关
        • 表里的数据操纵
          • 数据查询
            • 聚合函数
              • 比较运算符的几个注意
                • 逻辑运算符
                  • like运算符-模式匹配
                    • 范围比较(between 和 in)
                      • 空值比较(is 和 is not)
                        • 多表查询
                          • 子查询
                            • 分类汇总与排序
                              • 完结
                              相关产品与服务
                              云数据库 SQL Server
                              腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档