MySQL数据库
数据库和SQL的关系:
数据库里面放着数据,而
SQL
是用来操作数据库里数据的语言(工具)。
数据库的分类:
1.关系型数据库:
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,
对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算
来实现数据库的管理。
2.非关系型数据库:
NoSQL
,泛指非关系型的数据库
,NoSql
数据库在特定的场景下可以发挥出难以想象的高效率和高性能,它是
作为对传统关系型数据库的一个有效的补充 。
sql语句的分类:
DQL:
数据查询语言,用于对数据的查询,
select
DML:
数据操作语句,用于修改数据库中的数据,包括插入
(INSERT)
、更新
(UPDATE)
和删除
(DELETE)
DDL:
数据定义语言,用于创建、修改、和删除数据库内的数据结构
DCL:
数据控制语言,用于对数据库的访问,如:
1
:给用户授予访问权限(
GRANT
)
;2
:取消用户访问权限
(
REVOKE
)
表字段数据类型:
MySQL
支持多种类型,大致可以分为三类:数值、日期
/
时间和字符串
(
字符
)
类型
数据类型的属性:
如果你不想字段为
NULL
可以设置字段的属性为
NOT NULL
, 在操作数据库时如果输入该字段的数据为
NULL
,就会报错。
AUTO_INCREMENT
定义列为自增的属性,一般用于主键,数值会自动加
1
。
PRIMARY KEY
关键字用于定义列为主键。为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,
主键也是一个特殊索引。 您可以使用多列来定义主键,列间以逗号分隔。
UNIQUE KEY
的用途:主要是用来防止数据插入的时候重复的
CHARSET
设置编码 。
DDL
(database defination language)
数据库定义语言
1
.创建数据库
在登陆
MySQL
服务后,使用
create
命令创建数据库,语法如下
语句
create database
数据库名
;
create database
数据库名
character set utf8;
操作
create database 2006C CHARACTER set utf8;
2.选择数据库
在你连接到
MySQL
数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库
语句
use 数据库;
操作
use 2006C;
3.查询建立数据
查看数据库创建细节
语句
show create database 数据库;
操作
show create database 2006c;
4.删除数据库
删除创建的数据库
语句
drop database 数据库;
操作
drop database 2006c;
5.创建表
语句
create table 表名(字段 类型,字段 类型……)
操作
create table student
(
id int
PRIMARY key auto_increment
,
name varchar
(
20
),
sex varchar
(
20
),
age
int
,
salery
float
(
6
,
2
),
birthday date
)
6.查看表的创建细节
show create table student;
7.展示表结构
desc student;
8.添加表字段
在原有的学生基础上添加address列
alter table student add address varchar(20);
9.修改表字段
在原有的学生基础上修改address列
alter table student MODIFY address varchar(125);
10.删除表字段
在原有的学生基础上删除address列
alter table student drop address;
DML
1.新增数据
语句
单条
:insert into
表名
values(
字段值
,
字段值
,
字段值
.....)
多条:
insert into
表名
values(
字段值
,
字段值
,
字段值
.....),(
字段值
,
字段值
,
字段值
.....);
操作单条
insert into student values(1,'
张三
','
男
',18,389.10,'1999-10-10');
操作多条
insert into student values(2,'
李四
','
男
',19,1389.10,'2000-10-10'),(3,'
王
五
','
女
',20,3389.10,'2001-10-10');
2.修改数据
语句
UPDATE
表名
SET
字段
1=
值
1,
字段
2=
值
2,…,
字段
n=
值
n
[WHERE
条件
];
操作
update student
set
name
=
'
马超
'
,
salery
=
3456
,
birthday
=
"2003-02-12"
where
id
=
2
;
3.删除数据
语句
单条:
delete from
表名
where
条件
;
全部:
delete from
表名
操作
delete from student where id=1;
DQL
1.查询表中的具体字段数据
SELECT
字段
1,
字段
2..
字段
n FROM
表名
;
2.查询表中的全部数据
SELECT * FROM
表名
;
3.条件查询
SELECT * FROM
表名
where
条件
;
3.1.按关系运算符筛选
等于
=
大于
>
大于等于
>=
小于
<
小于等于
<=
不等于
!=
3.2.逻辑运算符筛选
and
or
not
3.3 in的使用
4.模糊查询
select * from
表
where
字段
like ‘%
匹配数据
%’;
select * from
表
where
字段
like ‘
匹配数据
%’;
select * from
表
where
字段
like ‘%
匹配数据
’;
5.排序查询(默认是正序)
select * from
表名
order by
字段
;
6.分组查询
select * from
表明
group by
字段
;
select * from
表明
group by
字段
having
条件
;
having
条件表达式:用来分组查询后指定一些条件来输出查询结果
having
作用和
where
一样,但
having
只能用于
group by
7.分页查询
select * from table limit m,n
其中
m
是指记录从
m+1
开始
,N
代表取
n
条记录
select * from student limit 2,4
即取出第
3
条至第
6
条,
4
条记录
8.聚合函数
count(个数)、sum(求和)、avg(平均)、max(最大)、min(最小)等
多表设计
1.一对一
有时候,为了业务,或者避免一张表中数据量过大,过复杂,在开发中会进行一对一方式来设计表。
2.一对多
(
1
方建主表
(id
为主键字段
),
多方建外键字段)
指的是一个实体的某个数据与另外一个实体的多个数据有关联关系, 一对多的关系在设计的时候,需要设计
表的外键
3.多对多
一个实体的数据对应另外一个实体的多个数据,另外实体的数据也同样对应当前实体的多个数据。
比如:一个学生可以有多个老师,一个老师可以教多个学生
解决方案:创建一个中间表,专门用来维护多表之间的对应关系,通常是能够唯一标识出数据的字段(主键)
连接查询
1.内连接(inner join)/外连接(left join / right join)
语句
select
表
1.
字段,表
2.
字段
from
表
1 inner/left/right join
表
2 on
表
1.
字段
=
表
2.
字段
where
条件
select
表
1.
字段,表
2.
字段
,
表
3.
字段
from
表
1 inner/left/right join
表
2 on
表
1.
字段
=
表
2.
字段
inner/left/right join
表
3 on
表
1.
字段
=
表
3.
字段
where
条件