什么是数据库:
数据库(DataBase):存储和管理数据的一个仓库。
数据库类型分为:关系型数据库和非关系型数据库。
关系型数据库(SQL):存储的数据以行和列为格式,类似于excel表格,一张二维表。例如:MySQL、Oracle等。
非关系型数据库:数据是以对象类型存储。例如:redis、mongdb等。
几个概念介绍:
- DB:DataBase数据库。
- DBMS:DataBase Management System数据库管理系统。
- DBS:DataBase System数据库系统。
- DBA:DataBase Administrator数据库管理员。
MySQL介绍:
开源免费、属于Oracle公司旗下。体积小、速度快。
常用版本:5.7和8.0两个版本。
MySQL安装
请参考:百度
MySQL可视化工具:
常见的MySQL可视化管理工具有:Navicat、sqlyog、DBeaver等。
五种SQL类型:
- DDL:Data Definition Language,数据定义语言。例如:create、alter、drop等,主要用于操作表结构。
- DML:Data Manipulation Language,数据操纵语言。例如:select、insert、delete、update,主要用于操作表中数据。
- DCL:Data Control Language,数据控制语言。例如:grant、deny、revoke,主要用于控制数据访问权限。
- DTL:Data Transaction Language,数据事务语言。例如:commit、rollback,主要用于事务控制。
- DQL:Data Query Language,数据查询语言。例如:select,主要用于查询数据表中的数据。
操作数据库命令:
创建数据库
create database 数据库名称;
指定数据库字符集
create database 数据库名称 default character set utf8;
指定数据库引擎
create database 数据库名称 engine = innodb
删除数据库
drop database 数据库名称;
使用数据库
use 数据库名称;
查看已有数据库
show databases; -- 有s
查看某个数据库的信息
show create database 数据库名称;
数据表操作:
创建数据表
create table 表名称(字段名称 类型 [属性] [索引] [注释],字段名称 类型 [属性] [索引] [注释],字段名称 类型 [属性] [索引] [注释]
);CREATE TABLE USER (id INT PRIMARY KEY auto_increment,username VARCHAR (20) NOT NULL,password VARCHAR (20) NOT NULL
);
数据表字段类型:
数值类型
- tinyint:占用1字节。
- int:占用4字节。这是常用类型。
- bigint:占用8字节。
- float:4字节。
- double:8字节。
- decimal:高精度浮点类型,字符串类型的浮点类型。
字符串类型
- char:固定长度的字符串类型。0到255长度。
- varchar:可变长度的字符串类型。0到65536长度。这是常用类型。
- tingtext:微型文本。2^8-1长度,博客文章可以使用该类型足以。
- text:文本串。2^16-1长度。
日期类型
- date:日期类型,格式:yyyy-MM-dd。
- time:时间类型,格式:HH:mm:ss。
- datetime:日期时间类型,格式:yyyy-MM-dd HH:mm:ss。这是常用类型。
- timestamp:时间戳类型,格式:毫秒数。
myisam和innodb区别
myisam | innodb | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持(默认是表锁) | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约是myisam的2倍 |
mysiam优点:节约空间、存储速度快。
innodb优点:安全性高,支持事务,支持多用户多表操作。
数据表操作
添加数据
insert into 表名称 (字段1,字段2...) values (值1,值2...);
更新数据
update 表名称 set 字段1=值1,字段2=值2... where 条件;
删除数据
delete from 表名称; -- 全表删除delete from 表名称 where 条件; -- 指定数据删除
清空数据
truncate 表名称;
truncate作用是清空一张数据表中的所有数据,表的结构和索引约束不会改变。
delete和truncate区别
- delete和truncate都可以用于清空一张数据表的所有数据。
- delete清空数据后,数据的自增值不会从1开始。
- truncate清空数据后,数据的自增会从1开始。
- delete删除问题,对于innodb引擎,重启数据库后,自增值会从1开始,因为innodb引擎下,自增数据存储在内存中。
- 对于myisam引擎,delete删除问题,重启数据库后,自增值不会从1开始,因为myisam引擎下,自增数据存储在文件中。
数据库查询
基本查询语句格式
select 字段 from 表名称 where 条件 order by 排序字段 group by 分组字段 Asc/Desc;
去重查询
select distinct 字段 from 表名称 where 条件;
使用关键字distinct去除重复的数据,只保留一条。
like模糊查询
select 字段 from 表名称 where 字段 like '%内容%';
- %百分号表示任意字符,下划线_表示一个字符。
IN范围查询
select 字段 from 表名称 where 字段 in(值1,值2,值3);
- 表示字段是值1、值2、值3其中的一个即可。
数据联表查询
- inner join内连接
select 字段
from A
inner join B
on A.x = B.x
where 条件;
- left join 左连接(不含交集情况)
select 字段
from A
left join B
on A.x = B.x
where B.x is null;
- right join 右连接(不含交集情况)
select 字段
from A
right join B
on A.x = B.x
where A.x is null;
- left join 左连接(含交集情况)
select 字段
from A
left join B
on A.x = B.x
- right join 右连接(含交集情况)
select 字段
from A
right join B
on A.x = B.x
- full outer join 全外连接(含交集情况)
select 字段
from A
full outer join B
on A.x = B.x
- full outer join 全外连接(不含交集情况)
select 字段
from A
full outer join B
on A.x = B.x
where A.x is null or B.x is null;
数据库聚合函数
count()函数:统计数量。
-- 指定列计数
select count(指定列) from 表名称;-- *
select count(*) from 表名称;-- 1
select count(1) from 表名称;
三者区别:
- count(指定列):只统计该列的数量,如果该列的值为null,则不统计该列。
- count(*):统计所有列,相当于按行计数,如果为null,则也会就行统计。
- count(1):和count(*)类似。
max()函数:求最大值。
select max(指定列) from 表名称;
min()函数:求最小值。
select min(指定列) from 表名称;
avg()函数:求平均值。
select avg(指定列) from 表名称;
sum()函数:求数据总和。
select sum(指定列) from 表名称;