MySQL下载、配置与卸载
安装完成后,在cmd中连接MySQL
mysql -u用户名 -p密码 [-h数据库服务器的IP地址 -P端口号]
-h 参数不加,默认连接的是本地 127.0.0.1 的MySQL服务器
-P 参数不加,默认连接的端口号是 3306
上述指令,可以有两种形式:
密码直接在-p参数之后直接指定 (这种方式不安全,密码直接以明文形式出现在命令行)
密码在-p回车之后,在命令行中输入密码,然后回车,密文形式,提高安全性
1.打开IDEA自带的Database
英文为 DataBase,简称DB,它是存储和管理数据的仓库。
英文为 DataBase Management System,简称DBMS,是操作和管理数据库的大型软件。
使用表存储数据,格式统一,便于维护
使用SQL语言操作,标准统一,使用方便,可用于复杂查询
概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。
MySQL、Oracle、DB2、SQLServer基于二维表存储数据的数据库就成为关系型数据库,Redis不是基于二维表存储数据的数据库,就是非关系型数据库。
MySQL是关系型数据库,是基于二维表进行数据存储的,具体的结构图下:
Structured Query Language,简称SQL:结构化查询语言,它是一门操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准,告诉DBMS这个软件如何去操作数据库。
1.SQL语句可以单行或多行书写,以分号结尾。
2.SQL语句可以使用空格/缩进来增强语句的可读性。
3.MySQL数据库的SQL语句不区分大小写。
4.注释:
SQL语句根据其功能被分为四大类:DDL、DML、DQL、DCL
DDL:数据定义,定义数据库对象(数据库,表,字段)
DML:数据操作,对数据库表中的数据进行增删改
DQL:数据查询,查询数据库中表的记录
DCL:数据控制,创建数据库用户、控制数据库的访问权限
DDL英文全称是Data Definition Language(数据定义语言),用来定义数据库对象(数据库、表)。
DDL中数据库的常见操作:查询、创建、使用、删除。
show databases;
create database [ if not exists ] 数据库名;
注意:在同一个数据库服务器中,不能创建两个名称相同的数据库,否则将会报错。
use 数据库名;
drop database [ if exists ] 数据库名 ;
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
alter table 表名 modify 字段名 新数据类型(长度);
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
alter table 表名 drop 字段名;
rename table 表名 to 新表名;
create table 表名(
字段1 字段1类型 [约束] [comment 字段1注释 ],
字段2 字段2类型 [约束] [comment 字段2注释 ],
......
字段n 字段n类型 [约束] [comment 字段n注释 ]
) [ comment 表注释 ] ;
注意: [ ] 中的内容为可选参数; 最后一个字段后面没有逗号。
主键自增:auto_increment
,每次插入新的行记录时,数据库自动生成id字段(主键)下的值,具有auto_increment的数据列是一个正数序列开始增长(从1开始自增)
创建表结构的时候,id这个字段没有起到唯一标识的作用,那如何限制字段存储的数据?
概念:所谓约束就是作用在表中字段上的规则,用于限制存储在表中的数据。
作用:就是来保证数据库当中数据的正确性、有效性和完整性。
在MySQL数据库当中,提供了以下5种约束:
not null
unique
primary key
default
foreign key
注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。
MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。
char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性能会更高些。
DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。
insert into 表名 (字段名1, 字段名2) values (值1, 值2);
insert into 表名 values (值1, 值2, ...);
insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2);
insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);
注意事项:
insert操作插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
字符串和日期型数据应该包含在引号中。
插入的数据大小,应该在字段的规定范围内。
update语法:
update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , .... [where 条件] ;
注意事项:
修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
在修改数据时,一般需要同时修改公共字段update_time,将其修改为当前操作时间。
delete语法:
delete from 表名 [where 条件] ;
注意事项:
1. DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
2. DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即可)。
3. 当进行删除全部数据操作时,会提示询问是否确认删除所有数据,直接点击Execute即可。
drop table [ if exists ] 表名;
DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。
SELECT 字段列表
FROM 表名列表
WHERE 条件列表
GROUP BY 分组字段列表
HAVING 分组后条件列表
ORDER BY 排序字段列表
LIMIT 分页参数
show tables;
desc 表名 ; #可以查看指定表的字段、字段的类型、是否可以为NULL、是否存在默认值等信息
show create table 表名 ;
select 字段1, 字段2, 字段3 from 表名;
select * from 表名;
select 字段1 [ as 别名1 ] , 字段2 [ as 别名2 ] from 表名;
select distinct 字段列表 from 表名;
select 字段列表 from 表名 where 条件列表 ;
SQL语句当中构造条件的运算符分为两类:
常用的比较运算符
如下:
大于 : >
大于等于 : >=
小于 : <
小于等于 : <=
等于 : =
不等于 : <> 或 !=
在某个范围之内(含最小、最大值) : between … and …
在in之后的列表中的值,多选一 : in(…)
模糊匹配(_匹配单个字符, %匹配任意个字符) : like 占位符
是null : is null
常用的逻辑运算符
如下:
and 或 && : 并且 (多个条件同时成立)
or 或 || : 或者 (多个条件任意一个成立)
not 或 ! : 非 , 不是
select 聚合函数(字段列表) from 表名 ;
注意 : 聚合函数会忽略空值,对NULL值不作为统计。
常用聚合函数:
count : 统计数量,按照列统计有多少行数据,如果这一列中有null的行,该行不会被统计在其中。
max : 最大值,计算指定列的最大值
min : 最小值,计算指定列的最小值
avg : 平均值,计算指定列的平均值
sum : 求和,计算指定列的数值和,如果不是数值类型,那么计算结果为0
分组: 按照某一列或者某几列,把相同的数据进行合并输出。
分组其实就是按列进行分类(指定列下相同的数据归为一类),然后可以对分类完的数据进行合并计算。
分组查询通常会使用聚合函数进行计算。
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
有升序排序,也有降序排序。
select 字段列表
from 表名
[where 条件列表]
[group by 分组字段 ]
order by 字段1 排序方式1 , 字段2 排序方式2 … ;
排序方式:
ASC :升序(默认值)
DESC:降序
日常我们在网站中看到的各种各样的分页条,后台也都需要借助于数据库的分页操作。
select 字段列表 from 表名 limit 起始索引, 查询记录数 ;
注意事项:
起始索引从0开始。 计算公式 : 起始索引 = (查询页码 - 1)* 每页显示记录数
分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 条数
各个表结构之间也存在着各种联系,基本上分为三种:
一对一
一对多(多对一)
多对多
一对一关系表在实际开发中应用起来比较简单,通常是用来做单表的拆分,也就是将一张大表拆分成两张小表,将大表中的一些基础字段放在一张表当中,将其他的字段放在另外一张表当中,以此来提高数据的操作效率。
在数据库表中多的一方,添加字段,来关联属于一这方的主键。在现在的企业开发中,很少会使用物理外键,都是使用逻辑外键。 甚至在一些数据库开发规范中,会明确指出禁止使用物理外键 foreign key
多对多的关系在开发中属于也比较常见的。比如:学生和老师的关系,一个学生可以有多个授课老师,一个授课老师也可以有多个学生。在比如:学生和课程的关系,一个学生可以选修多门课程,一个课程也可以供多个学生选修。