每天30分钟 一起来学习爬虫——day16(数据存储 之 MySQL 简单操作)

MySQL


什么是MySQL

MySQL是一个关系型数据库管理系统,在 WEB 应用方面,MySQL是一个好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。

我们一直说安装数据库,但是其实我们安装的是数据库管理系统,由于习惯,所以就简称数据库了

MySQL 的一些特性

E_R模型:
E:实体(表)
R: 关系()

表表的关系:
1对1,1对多,多对多

三范式:
列不可拆分
唯一标识
引用主键不重复

数据的完整性:
字段类型:int decimal,char,varchar,text,datetime,bit
约束:主键,非空,唯一,默认,外键
逻辑删除:物理删除:从硬盘真的删除,软删除:删除标识,1,0


安装Mysql

windows 安装

我用的是windows,所以这里看一下windows 的安装过程,

官网安装

每天30分钟 一起来学习爬虫——day16(数据存储 之 MySQL 简单操作)

每天30分钟 一起来学习爬虫——day16(数据存储 之 MySQL 简单操作)

之后就下一步,然后第一次使用安装就按照默认的来就好了。需要什么就点击执行让他下载

每天30分钟 一起来学习爬虫——day16(数据存储 之 MySQL 简单操作)

这之后有一个要设置用户和密码的过程

每天30分钟 一起来学习爬虫——day16(数据存储 之 MySQL 简单操作)

这个自己要记住,不然就很麻烦 ,最后安装好后,文件夹里就会有MySql Server 这个 东东,我们打开它,把bin目录添加到环境变量里面

每天30分钟 一起来学习爬虫——day16(数据存储 之 MySQL 简单操作)
这样就安装好了

数据库的启动

启动服务 mysql.server start
关闭服务 mysql.server stop
现在这个版本,按照默认安装完后,服务就自己起来了,已经添加好了,不像MongDB 要操作一波,所以上面这一步可以省略,一般直接开客户端就好了

客户端启动:
mysql -u root -p( 然后回让输入密码,u是user 的意思,p是password)

每天30分钟 一起来学习爬虫——day16(数据存储 之 MySQL 简单操作)

查看当前安装的数据库版本:select version();
显示当前有哪些数据库 show databases;
显示当前时间: select now();

注意: mysql啥都要加个封号,有点讨厌

基础操作

数据库操作

创建数据库:create database animal charset=utf8; 这里我们要告诉它使用什么编码格式
切换数据库 use <库名>;
查看当前在哪个数据库select database();
删除数据库:drop database <库名>;

每天30分钟 一起来学习爬虫——day16(数据存储 之 MySQL 简单操作)

表操作

建表:

create table dog(
id int auto_increment primary key, #设置第一个字段为id 自动编号, 设为主键)
name varchar(10) not null # 设置第二的字段为name ,字符类型,长度可变,最长10 不能为空
);

修改表:

desc <表名>; desc dog; 查看表的结构

alter table <表名> add <字段> <字段类型>;
alter table dog add birthday datetime;给 dog 这个表 添加一个 birthday的字段,是日期类型

alter table <表名> add <字段><字段类型> after <字段>; alter table dog add gender int after name; 在某个字段后添加

lter table <表名> add <字段><字段类型> first
alter table dog add age int first ;添加到第一个

alter table <表名> change <要修改的字段名> <改后的字段名> <字段类型>;alter table dog change gender sex int ; 修改表的字段

alter table <表名> drop <字段>,alter table dog drop age;删除age 这个字段

rename table <表名> to <表名>;rename table dog to cat; 修改表的名字 从 dog 改为 cat

show create table <表名>; show create table cat; 显示建表时候的设置,

drop table <表名>; drop table cat;删表后,库还在

每天30分钟 一起来学习爬虫——day16(数据存储 之 MySQL 简单操作)

每天30分钟 一起来学习爬虫——day16(数据存储 之 MySQL 简单操作)

每天30分钟 一起来学习爬虫——day16(数据存储 之 MySQL 简单操作)

数据操作

刚才把表删了,先建回来

 create table dog(
   id int auto_increment primary key,
   name varchar(20) not null,
   age int ,
   gender int ); 
 

插入数据

全列插入
insert into <表名> values(<传入的值>);insert into dog values(1,"lala",12, 1);向 dog中插入了一个 lala age 12 ,id 1,gender 0, 这个要按顺序传入,
·
缺省插入
insert into <表名>(<传入的字段>) values(<传入的值>); insert into dog(age,name) values(14,"kuku");只插入对应的字段,没穿值的按照默认的显示,比如id 我原来设置的自增,gender 默认没有默认,显示NULL;
·
一次插入多个
insert into <表名> values(<传入的值>),(<传入的值>); insert into dog values(0,"lachang",10,1),(0,"yuekex",6,0);如果id 有自增,自己记不住,可以用0占位
·
一次缺省插入多个
insert into dog(<传入的字段>) values(<传入的值>),(<传入的值>); insert into dog(name) values("taishi"),("shizi"); 注意,如果id 不是自增的必须写,不然就完了,其他没有设置默认值的是空。
·
查看表里的数据
select * from <表名>; select * from dog;

每天30分钟 一起来学习爬虫——day16(数据存储 之 MySQL 简单操作)

修改数据

update <表名> set <修改的字段>=<修改的值> where <筛选条件>; update dog set name="lllll" where id=6; 把id为6 的名字改为llllll

删除数据:

delete from <表名> where <筛选条件>;delete from dog where id=3;注意删除后,其他的id不变,物理删除,
逻辑删除是修改标记字段,alter table dog add isdeletebit dsfault 0;默认是 0,没删除,改为1 是删除

查询操作

新建一个表,刚才的数据不好

 create table stu(
    id int auto_increment primary key,
    name varchar(10) not null,
    birthday datetime,
    gender bit default 0,
    isdelete bit default 0,
    address varchar(100),
    score int
    );

insert into stu values(1,“小明”,“2008-01-01”,0,0,“北京”,90),
(2,“小红”,“2007-01-01”,1,0,“上海”,80),
(3,“小兰”,“2006-01-01”,1,0,“广州”,100),
(4,“小王”,“2005-01-01”,0,0,“深圳”,20),
(5,“老王”,“2009-01-01”,0,0,null,30),
(6,“老刘”,“2004-01-01”,0,0,null,40),
(7,“小丽”,“2003-01-01”,1,0,“东莞”,50),
(8,“小芳”,“2002-01-01”,1,0,“福建”,60),
(9,“小粒”,“2001-01-01”,0,0,“福州”,70);

条件查询:
这个就不截图了,截图太长放不下

select <查询的字段>,<查询条件> from <表名> where <查询的条件>
* 就是所有字段,也可以传入自己想看的字段,where 后面就是查询条件,> < = != >= <=
.
select name address from stu where id!=6
select * from stu where id>6;
select * from stu where id=7;
select id,name from stu where name!="老王";

逻辑运算

select <查询的字段> from <表名> where <查询条件> <and / or / not > <查询条件>
and / or / not
.
select name from stu where id>6 and gender=1;
select name from stu where id<4 or gender =0;
select name from stu where not id=4;

模糊查询;

like 后接条件 % 匹配多个 _ 匹配一个
.
select * from stu where name like '小%';名字里小这个字开头的
select * from stu where name like "%王";名字里王这个字结尾的
select * from stu where name like "%王" or name like "%丽";

范围查询;

in / not in / between / and 来描述范围
.
select * from stu where id in(1, 3, 5 ,6);
select * from stu where id not in(1, 3, 5 ,6);
select * from stu where id between 1 and 5;
select * from stu where id between 1 and 5 and gender=1;

判断是否为空

is null
.
select * from stu where address is null;

符合的优先级

  1. ()
  2. not
  3. 条件运算
  4. and
  5. or

聚合查询

统计个数:
select count(*) from stu; 所有 学生的个数
select count(id) from stu where gender=0; 看男生几个
select max(score) from stu; 成绩最大是多少
select min(score) from stu; 成绩最小是多少
select sum(score) from stu; 总成绩
select sum(score) from stu where gender=1; 男生的成绩和

分组查询

select <分的组名>,count(*) from <表名> group by <分组依据>;

select gender,count(*) from stu group by gender;按性别分组,看有男男女分别多少
.
select <分的组名> as <分组的别名>,count(*) from <表名> group by <分组依据>
select gender as gend,avg(score) from stu group by gender having gender=0; 这个分组完是男女两组,但只想显示男生的平均,所以我们加一个 having <对应的组>
.
select <分的组名> ,max(score) from <表名> group by <分组依据>;
select gender ,max(score) from stu group by gender;
注意:分的组名一定要是已有的字段,group by 后面应该写对应的分组依据

排序

order by <字段> <升序or降序>
asc 升序
select * from stu where gender =0 order by id asc;
desc 降序
select * from stu where isdelete=0 order by score desc;

分页

limit ,
select * from stu limit 0,3;从第 0 条开始,每页 3个数据

去重

distinct <去重的字段>
select distinct <去重的字段> from <表的名字>; 对哪个字段取重就写哪个
select distinct name from stu;


今天就简单讲解一些 MySql 的 增删查改操作,明天继续了解 MySql 的 E_R 模型,表与表的关系 ,


我又来要赞了,还是希望各位路过的朋友,如果觉得可以学到些什么的话,点个赞再走吧,欢迎各位路过的大佬评论,指正错误,也欢迎有问题的小伙伴评论留言,私信。每个小伙伴的关注都是我更博的动力》》》》奥里给

上一篇:王梓晨 | 京东敏捷团队看板与潜在交付物实践


下一篇:HTML学习笔记Day16