一、MySQL概述
MySQL数据库相关概念
数据库:database,简称DB。按照一定的数据结构来组织 、存储和管理数据的仓库。
数据库管理系统:database management system,简称DBMS。一种操纵和管理数据库的大型软件,用于创建、使用和维护数据库。
>关系型数据库(RDBMS):关系型数据库,是建立在关系模型基础上,由多张相互连接的二维表组成的数据库。
>>特点:1. 使用表存储数据,格式统一,便于维护;
2. 使用SQL语句操作,标准统一,使用方便;
3. 数据存储在磁盘中,安全。
>非关系型数据库:Not-Only SQL,泛指非关系型数据库,是对关系型数据库的补充。
>>特点:1. 数据结构灵活
2. 伸缩性强
SQL
>结构化查询语句(Structured Query Language),简称SQL。
>是一种操作关系数据库的编程语言,定义了一套操作关系数据库统一标准。
MySQL数据库
版本:
>社区版(MySQL Community Server):免费,MySQL不提供任何技术支持。
>商业版(MySQL Enterprise Edition):收费,试用30天,官方提供技术支持。
二、SQL
(一)mysql相关安装配置
1.下载:官网
2.卸载:
(1)停止mysql服务
win+R→输入services.msc→服务→找到mysql并停止。
(2)卸载mysql程序,mysql免安装版的删除安装目录即可
win+R→输入control→控制面板→卸载程序→找到mysql并卸载。
(3)彻底删除mysql配置文件和数据目录
确保安装目录已删除干净,我的安装目录是C:\Program Files\MySQL\MySQL Server 5.5\;
找到隐藏的数据目录并删除,默认安装位置在C:\ProgramData\MySQL\目录下,删除其中对应旧版本的mysql的目录,我的数据目录是C:\ProgramData\MySQL\MySQL Server 5.5/。
3.清理注册表:
win+R→输入regedit→注册表编辑器
4.安装:
运行mysql-installer-community-8.0.26.0.msi
参照:https://blog.csdn.net/rainbow19931121/article/details/116807859
5.启动
进入服务——》services.msc——》找到mysql服务启动、停止
6.客户端连接
方式一:mysql提供的客户端命令行工具(第二个),然后输入密码就可以连接MySQL了
方式二:win+R打开命令窗口,然后输入mysql -u root -p,然后输入密码就可以连接MySQL。
7.数据模型
============================================================
(二)MySQL相关语法以及基本内容
SQL通用语法
SQL分类
3.DDL(数据库定义语言)——》数据库操作
(1)查询数据库
》查询所有数据库
show databases;
》查询当前数据库
select database();
(2)创建数据库
Create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
create database test;
create database if not exists test default charset utf8mb4;
(3)删除数据库
drop database [if exists]数据库名;
drop database test;
drop database if exists test;
(4)使用
user 数据库名;
use test;
(5)查询当前数据库所有表
show tables;
(6)查询表结构
desc tb_user;
(7)查询指定表的建表语句
show create table 表名;
(8)表操作——创建表
create table tb_user(
id int comment ‘编号’,
name varchar(50) comment ‘名字’,
age int comment ‘年龄’,
gender varchar(1) comment ‘性别’
)comment ‘用户表’;
(9)数据类型
MySQL中数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。
数值类型 大小 有符号(singned)范围 无符号(unsigned)范围 描述
tinyint 1 byte (-128,127) (0,255) 小整数值
smallint 2 byte (-32768,32767) (0,65535) 大整数值
mediumint 3 byte (-8388608,8388607) (0,16777215) 大整数值
int或integer 4 byte (-2147483648,2147483647) (0,4294967295) 大整数值
bigint 8 byte (-263,263-1) (0,2^64-1) 极大整数值
float 4 byte (-3.402823466 E+38,3.402823466351 E+38) 0和 单精度浮点数值
double 8 byte (-1.7976931348623157E+308,1.7976931348623157E+308) 0和 双精度浮点数值
decimal 依赖于M(精度)和D(标度)的值 依赖于M(精度)和D(标度)的值 小数值(精确定点数)
* 视频、音频属于二进制,使用blob
案例:
create table emp(
id int comment ‘编号’,
workno varchar(10) comment ‘工号’,
name varchar(10) comment ‘姓名’,
gender char(1) comment ‘性别’,
age tinyint unsigned comment ‘年龄’,
idcard char(18) comment ‘身份证号’,
entrydate date comment ‘入职时间’
)comment ‘员工表’;
(10)表操作——修改
—添加字段(列)
alter table 表名 add 字段名 类型{长度} [comment 注释][约束];
–案例:为emp表增加一个新的学段”昵称”为nickname,类型为varchar(20)
alter table emp add nickname varchar(20) comment ‘昵称’;
–修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);
–修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释][约束];
–案例:将emp表的nickname字段修改为username,类型为varchar(30)
alter table emp change nickname username varchar(30) comment ‘用户名’;
–删除字段
alter table 表名 drop 字段名;
–案例:将emp表字段username删除
alter table emp drop username;
–修改表名
alter table 表名 rename to 新表名;
–案例:将emp的表名修改为employee
alter table emp rename to employee;
(11)表操作——删除(在删除表时,表中的数据全部会删除)
–删除表
drop table [if exists] 表名;
–案例:删除tb_user表
drop table if exists tb_user;
–删除指定表,并重新创建该表
truncate table 表名;
–案例:删除重新创建表employee
truncate table employee;
(1)插入insert
–向表中插入某些列
insert into 表(列名1,列名2,…) values(值1,值2,…);
–向表中插入所有列
insert into 表 values(值1,值2,…);
–例1:
INSERT INTO student(sid,NAME,gender,age,birth,address,score)
VALUES(1001,‘张三’,‘男’,10,DATE(‘1996-12-23’),‘北京’,‘83.6’);
–例2:
INSERT INTO student VALUE(1002,‘张’,‘男’,12,DATE(‘1996-12-23’),‘南京’,‘82.6’);
–例3;
insert into student(sid,name,gander,age,birth,address,score)
values(1001,‘张三’,‘男’,10,‘1996-12-23’,‘北京’,‘83.6’),
(1002,‘李四’,‘男’,11,‘1995-12-23’,‘南京’,‘83.5’);
(2)删除delete
delete from 表名 [where 条件];
truncate table 表名; 或者 truncate 表名;
–例1:删除id为1004的学生数据
DELETE FROM student WHERE id=1004;
–例2:删除所有数据
delete from student;
–例3:清空表数据
truncate student;
–delete只删除内容,不涉及表,truncate相当于把表删了重新建
(3)更新update
update 表名 set 字段名=值,字段名=值,。。。;
update 表名 set 字段名=值,字段名=值,。。。where 条件;
–例1:将所有学生的地址修改为重庆
UPDATE student SET address=‘重庆’;
–例2:将id为1002的学生的地址修改为北京
UPDATE student SET address=‘北京’ where id=1002;
–例3:将id为1004的学生地址修改为北京,成绩修改为100
UPDATE student SET address=‘北京’,score=100 where id=1004;
5.DQL——数据查询语言(select)
select
字段列表
from
表名列表
where
条件列表
group by
分组字段列表
having
分组后条件列表
order by
排序字段列表
limit
分页参数
(1)基本查询
–1.查询多个字段
select 字段1,字段2,。。。 from 表名;
select * from 表名;
–2.设置别名
select 字段1 [as 别名1],字段2 [as 别名2],。。。from 表名;
–3.去除重复记录
select distinct 字段列表 from 表名;
(2)条件查询(where)
–1.语法
select 字段列表 from 表名 where 条件列表;
–2.条件
------比较运算符
<、>、<=、>=、<>(不等于!=)、between … and …(范围内)、in(多选一)、like(模糊匹配)、is null
------逻辑运算符
and && (多个条件同时成立)
or || (多个条件任意一个成立)
not !(不是)
(3)聚合函数(count、max、min、avg、sum)
–1.介绍
将一列数据作为一个整体,进行纵向计算。
–2.常见聚合函数
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和
–3.语法
select 聚合函数(字段列表) from 表名;
(4)分组查询(group by)
–1.语法
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
–2.where与having区别
执行时机不同:where是分组之前进行过滤,having是分组后过滤。
判断条件不同:where不能对聚合函数进行判断,having可以。
(5)排序查询(order by)
–1.语法1
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
–2.排序方式
asc:升序
desc:降序
–注意:如果多个字段排序,第一个字段值相同,会根据第二个字段排序。
(6)分页查询(limit)
–1.语法
select * from 表名 limit 起始索引,查询记录数;
–2.注意
起始索引从0开始。起始索引=(查询页码-1)*每页显示记录数。
分页查询是数据库的方言,不同数据库不同。
如果查询为第一页,起始索引可以省略,直接limit 10。
(7)案例
–1.查询年龄为20,21,22,23岁的员工信息
select * from emp where gender=‘女’ and age in(20,22,21,23);
–2.性别为男,年龄在20-40,姓名是三个字
select * from emp where gender=‘男’ and age between 20 and 40 and name like ‘___’;
–3.统计年龄小于60岁的,男性和女性人数
select gender,count(1) ‘总数’ from emp where age <60 group by gender ;
–4.年龄小于等于35员工姓名年龄,按年龄升序,年龄相同按入职时间降序
select name,age from emp order by age asc ,entrydate desc;
–5.查询性别为男,年龄在20-30岁以内的前5个员工信息,查询结果按照年龄升序年龄相同按入职时间升序
select * from emp where age between 20 and 30 order by age asc,entrydate asc limit 5;
(8)执行顺序
1、from
2、where
3、group by
4、
6.DCL
三、函数
四、约束
概念:约束(constraint),实际就是表中数据的限制条件。
作用:保证表中数据的有效性和完整性,例如手机号不能为空,身份证不能重复。
分类:
主键约束
》概念:
》》MySQL主键约束是一个列或者多个列的组合,其值能唯一标识表中的一行数据。
》》主键约束相当于唯一约束+非空约束的组合,不允许重复和空值。
》》每个表最多只有一个主键。
》》主键约束关键字:primary key。
》》当创建主键约束时,系统默认会在所在的列和列组合上建立唯一索引。
》操作:
》》添加单列主键
》》添加多列联合主键
》》删除主键
–方式1
create table 表名(
<字段名> <数据类型> primary key
);
–方式2
create table 表名(
<字段名> <数据类型> ,
。。。
[constraint <约束名>] primary key [字段名]
);
create table emp2(
eid int,
name varchar(10),
deptID int,
salary double,
constraint pk1 primary key(eid)–pk1可以省略
);
–联合主键
create table emp2(
eid int,
name varchar(10),
deptID int,
salary double,
primary kay(name,deptID)–任意一个键都不能为null
);
自增长约束
非空约束
唯一性约束
默认约束
零填充约束
外键约束
五、多表查询
六、事务