12
一、什么是数据库
数据库是按照数据的结构来组织,存储,和管理数据的仓库,简而言之,就是存放数据的仓库
二、数据库和SQL是什么关系?
数据库里面放着数据,而SQL是用来操作数据库里数据的语言(工具)。
三、数据库的分类
(1)关系型数据库
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,
对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算
来实现数据库的管理。主要是以下几个:
Oracle,mysql,SQLServer,SQLite
介绍:
Oracle
是一个关系型数据库管理系统是最挣钱的数据库,出自甲骨文公司,市场占有率非常高,功能非常强
大,被一些大型企业,电信,银行,证券公司所使用。
MySQL
是一个关系型数据库管理系统
,MySQL
目前最流行的开源数据库。
SQLServer
,
微软开发的数据库,仅支持
Windows
操作系统,号称是
windows
上最好用的数据库。
SQLite
,最流行的嵌入式数据库,占领手机行业的绝对领导者地位,
Android
和
IOS
两大手机系统,都内嵌
了
SQLite
数据库,
SQLite
是一个完整的关系型数据库,支持标准
SQL
,支持事务操作,程序包非常小,是嵌
入式设备的最佳选择。
(2)非关系型数据库
NoSQL
,泛指非关系型的数据库
,NoSql
数据库在特定的场景下可以发挥出难以想象的高效率和高性能,它是
作为对传统关系型数据库的一个有效的补充。比较有名的有:
MongoDB,Redis
介绍:
MongoDB
,最好用的文档型数据库,是
NOSQL
类型数据库的领导者之一,也是当前最成功的
NoSQL
类型数据
库,数据存储格式采用
JSON
形式,非常灵活。
Redis
,最好的内存级数据库,查询效率极高,并且在
Redis 3.0
之后,支持多种数据类型,
String
,
四、MySQL
的安装配置
(1)安装配置
(2)安装问题说明
五、sql
语句的分类
DQL:
数据查询语言,用于对数据的查询,
select
DML:
数据操作语句,用于修改数据库中的数据,包括插入
(INSERT)
、更新
(UPDATE)
和删除
(DELETE)
DDL:
数据定义语言,用于创建、修改、和删除数据库内的数据结构
DCL:
数据控制语言,用于对数据库的访问,如:
1
:给用户授予访问权限(
GRANT
)
;2
:取消用户访问权限
(
REVOKE
)
5.1:表字段数据类型
MySQL
支持多种类型,大致可以分为三类:数值、日期
/
时间和字符串
(
字符
)
类型
5.1.1:整型
5.1.2:浮点型(float 和 double)
设一个字段定义为
float(5,3)
,如果插入一个数
23.45678,
实际数据库里存的是
23.457
,但总个数还以实际为准,即 5
位。
5.1.3:字符串(char,varchar,text)
char
和
varchar
:
VARCHAR
与
CHAR
两种字符型数据类型相比,最大的差异就是前者是可变长度,而后者则是固定长度。在存储时,前者会根据实际存储的数据来分配最终的存储空间。而后者则不管实际存储数据的长度,都是根据CHAR
规定的长度来分配存储空间
5.1.4:时间/日期
若定义一个字段为
timestamp
,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。
5.2:数据类型的属性
如果你不想字段为
NULL
可以设置字段的属性为
NOT NULL
, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT
定义列为自增的属性,一般用于主键,数值会自动加
1
。
PRIMARY KEY
关键字用于定义列为主键。为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,
主键也是一个特殊索引。 您可以使用多列来定义主键,列间以逗号分隔。
UNIQUE KEY
的用途:主要是用来防止数据插入的时候重复的
CHARSET
设置编码
5.3: DDL
(database defination language)
数据库定义语言
(1)
创建数据库
在登陆
MySQL
服务后,使用
create
命令创建数据库,
create database
数据库名
;
create database
数据库名
character set utf8;
(2)
选择数据库
在你连接到
MySQL
数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库
use
数据库名
;
(3)
查询建立数据
查看数据库创建细节
show create database
数据库
;
(4)
删除数据库
删除创建的数据库
drop database
数据库
;
(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;
5.4:
DML
(1)
新增数据
单条
:insert into
表名
values(
字段值
,
字段值
,
字段值
.....)
例子:insert into student values(1,'
张三
','
男
',18,389.10,'1999-10-10');
多条:
insert into
表名 values(字段值
,
字段值
,
字段值
.....),(
字段值
,
字段值
,
字段值
.....);
例子:
insert into student values(2,'
李四
','
男
',19,1389.10,'2000-10-10'),(3,'
王
五
','
女
',20,3389.10,'2001-10-10');
(2)
添加表字段
在原有的学生基础上添加
address
列
alter table student add address varchar(20);
(3)
修改数据
UPDATE
表名
SET
字段
1=
值
1,
字段
2=
值
2,…,
字段
n=
值
n [WHERE 条件
];
例子:
update student
set
name
=
'
马超
'
,
salery
=
3456
,
birthday
=
"2003-02-12"
where
id
=
2
;
(4)
删除数据
单条:
delete from
表名
where
条件
;
全部:
delete from
表名
例子:delete from student where id=1;
5.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 ‘%
匹配数据
%’;
(5)
排序查询(默认是正序)
select * from
表名
order by
字段
;
(6)
分组查询
select * from
表明
group by
字段
;
select * from
表明
group by
字段
having
条件
;
(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)一对一
1个表对另一个表有关联关系。
(2)一对多
指的是一个实体的某个数据与另外一个实体的多个数据有关联关系, 一对多的关系在设计的时候,需要设计
表的外键
(3)多对多
创建一个中间表,链接多个表,专门用来维护多表之间的对应关系,通常是能够唯一标识出数据的字段(主键) 。
六、连接查询
内连接(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 条件