一、数据库的概括:
1.数据库:用来存储数据的仓库
2.数据库管理系统:专门管理数据的软件或系统
3.数据库分类:层次型:用树结构表示数据联系
网络型:用若干结点表示数据联系
关系型:用若干个二维表来表示数据联系
MySQL、Oracle
非关系型:使用键对值的方式存储数据,且结构不固定
redis、mongoDe、
4.MySQL优势:开源免费,
小巧便捷,
可以运行在各种平台
可以开发各类应用
5.结构化查询语言(SQL)
DDL(数据定义) | create、drop、alter |
DML(数据操作) | insert、update、delete |
DQL(数据查询) | select |
DCL(数据控制) | grant、commit、rollback |
第二、数据库的操作
1.创建数据库:
create database 数据库名;
2.删除数据库:
drop;
3.使用数据库:
use数据库名;
4.查看数据库:
show databases
5.创建数据表:
create table `表名`(
`字段1` 类型(长度),
`字段2` 类型(长度),
.....
)engine=myisam charset=utf8;
6.查看数据表:show tables;
7.查看数据表结构:desc 表名;
三、MySQL中数据类型:
数值类型:
类型 | 注释 |
int | 标准整数 1-10位数 |
tinyint | 非常小的数据0-255 |
float | 单精度浮点数 |
double | 双精度浮点数 |
字符串类型:
类型 | 注释 |
char | 固定长度 0-255 |
varchar | 可变长度 0-65535 |
text | 备注2^16-1 |
日期和时间类型
datetime:YY-MM-DD hh:mm:ss
区间:1000-01-01 00:00:00------9999-12-31 23:59:59
NULL:空:没有值,不参与运算0和null都为假
1.MySQL中关键字:
关键字 | 注释 |
unsigned | 无符号的 数据列不能为负数 |
zerofill | 0填充,不足的位数用0填充 如int(3) 5即005 |
auto_increment | 自增,每增加一条数据,自动在上一个基础上加1 |
default | 默认值 |
comment | 设置注释(字段,表) |
2.删除数据表:
drop table 表名;
3.数据表类型:
myisam:非事务表:经常不变动的数据;不支持事务;支持全文索引;占用空间小;效率高
innodb:事务表:支持事务,不支持全文索引,占用空间大,效率较慢 事务;不支持全文索引;占用空间大;效率较低
4.修改表名:alter table 旧表名 rename as 新表名;
5.添加字段:alter table 表名 add 字段名 类型(长度);
6.修改字段:alter table 表名 change 旧字段名 新字段 类型;
7.删除字段:alter table 表名 drop 字段名;
8.添加数据:
1.insert into 表名(字段1,字段2....)values('值1','值2'.....)
2.insert into `表名`set `字段1`=值1;
9.查看版本:
4.>version()函数:查看当前使用的MySQL版本;
eg:select version();
10.DML添加数据
1.指定字段添加数据:
insert into 表名(字段名1,字段名2.....)values(值1,值2....)
2.给全部字段添加数据
insert into 表名 values(值1,值2....)
3.批量添加数据:
insert into 表名(字段名1,字段名2,...)values(值1,值2...),(值1,值2...)
insert into 表名 values(值1,值2...),(值1,值2...)
11.修改数据:
update`表名` set `字段1`=`值1`,`字段2`=`值2`....where 修改条件
注意:修改条件必须要有,否则会将所有的数据修改
12.删除数据:
delete from `表名` where 删除条件
注意:修改条件必须要有,否则会将所有的数据删除,清除表中所有数据且恢复计数器(从1开始自增)
truncate `表名`
区别于delete恢复,不会影响事务
13.DQL:语法
SELECT 字段 FROM 表名
WHERE 条件
GROUP BY 分组字段
HAVING 分组后条件
ORDER BY 排序字段
LIMIT 分页参数
14.查询数据:
select 字段1,字段2,.... from 表名;
select*from 表名;
15.设置别名:
SELECT 字段1[as 别名1],字段2[as 别名2]...FROM 表名;
16.查询语句关键词DISTINCT;
DISTINCT:去掉select查询后的重复数据;
select distinct name from stu;
17.DQL条件查询:
SELECT 字段列表 FROM 表名 WHERE 条件列表
where之后的运算:
=:等于
<>或!= 不等于
>: 大于
>=:大于等于
between: 在范围
and: 并且
or: 或
where之后的逻辑操作符:
and:与
or: 或
not: 非
where之后的比较操作符:
between:介于范围之间(数据是连续的)
like:模糊匹配查询
注意:配合%和_使用
%:匹配多个
_:匹配单个
select name from stu name like '%l%'
select name from stu name like 'l_'
in:介于范围之间(可以不连续)
select name from stu id in (3,5,6)
18.数据排序:
order by 字段 排序方式
排序方式:desc(降序) asc(升序,默认)
注意:一般不进行排序就不排序(影响查询效率)
select * from stu order by id desc;
19.限制查询条数:
1.>:limit m,n
m:查询起始位置;n:查询数目:
起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数
select * from stu limit 3
2.>:limit n offset m;
20.子查询:
在一个查询中嵌套另外一个查询
一般结合in使用
select * from stu where id in(select id from class);
21.分组排序:
group by
asc:默认
desc:倒序
select * from stu group by sex desc;
22.分组查询:
语法:
SELECT 字段列表 FROM 表名[WHERE 条件]GROUP BY 分组字段名[HAVING 分组后过滤条件]
23.where与having区别:
1.执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而hanving是分组后对结果进行过滤
2.判断条件不同:where 不能对聚合函数进行判断,而hanving可以
注意:
执行顺序:where > 聚合函数 > hanving
24.数据库备份:
防止数据丢失或数据转移
1.数据库管理工具
2.直接拷贝
3.使用命令
清屏:cls;
格式:mysqldump -h主机地址 -u用户名 -p密码
要备份的数据库名>保存的地址和文件名
mysqldump -h127.0.0.1 -uroot -proot php50>d://php50.sql
注意:本地服务器不需要写主机地址
命令结束不需要分号
保存到本地文件名需要使用sql作为后缀
25.数据库恢复:防止数据丢失或数据转移
1>source 地址/文件名;
注意:必须是登录MySQL的状态
必须是use到要导入的数据库中
后面必须要加分号
2>MySQL -u用户名 -p密码 要导入的数据库名 (地址/文件名)
注意:必须是未登录的MySQL状态
后面不需要加分号
26.数据库的索引:为了加快查询效率而产生
作用:使查询效率大大提升
确保数据唯一
加强表与表之间的连接
分类:主索引(primary key)
注意:一个表只能有一个人
速度最快
内容不能重复(建议是数字)
唯一索引(unique)
注意:一个表可以存在多个
速度仅次于主索引
内容可重复
常规索引(index)
注意:一个表可以存在多个
速度最慢
内容可重复
全文索引(fulltext)
注意:只能用于myisam数据类型
只用在字符串数据类型列
27.创建:创建表的时候直接创建
追加索引
alter table 表名 add 索引类型(字段)
eg:alter table stu add index(name)
删除:1.drop index 索引名 on 表名
2.alter table 表名 drop index 索引名
注意:索引名若没有特别定义 则用字段名
查看:show index from 表名
准则:索引不是越多越好
不能给经常变动的数据列加索引
一般给查询条件后的字段加索引
28.检查SQL:
explain sql语句;
29.如何优化数据库:
1.结构优化:拆分数据表
2.SQL优化:
减少使用order by ,select *,group by
多使用limit
3.缓存优化
使用redis
4.工具优化
5.字段优化
30.数据库事务:
集中处理一系列事项
特性:
原子性
一致性
隔离性
持久性
31.MySQL运行的端口号:3306;
管理数据库的软件:
网页版:phpmyadmin
软件版:navicat