MySQL 知识点归纳总结(一)
本文主要是整理 mysql数据库的基础知识点以及主要的 mysql操作命令。主要内容包括:
1.数据库字段类型介绍
2.数据库字段约束介绍
3.数据库相关操作命令
4.数据库表相关操作命令
5.数据库表中数据操作
6.数据库数据备份和恢复
一、数据库字段类型介绍
数据库中支持很多字段类型,目前比较常用的几个分别为:
· 数字类型:int(整数)、decimal(可指定小数长度)
· 字符串类型:char(不可变字符)、varchar(可变字符)、text(长文本)
· 日期:datetime
· 布尔:bit
注:为了减少数据库的开销问题,可以将具有两个状态的(或多个状态)数据使用 bit类型来将其存储为0和1。
二、数据库字段约束
在创建数据库的表中对应的字段时还可以对某些字段进行相应的约束,保证其数据的准确性。
主要的字段约束包括:
· 主键:primary key
· 非空:not null
· 唯一:unique
· 默认:default
· 外键:foreign key
三、数据库相关操作命令
创建数据库
创建数据库的命令如下,可以在创建数据库的时候为其指定字符集。
create database 数据库名 charset=utf8;
切换数据库
切换数据库就是在登陆到mysql之后需要选择要操作的数据库,这时便需要使用切换数据库的命令:
use 数据库名;
显示所有的数据库
show databases;
查看正在操作的数据库:
select database();
删除数据库
drop database 数据库名;
四、数据库表相关操作命令
创建表
create table 表名(
id int auto_increment primary key not null,
字段1 类型 约束条件 默认值,
字段2 类型 约束条件 默认值,
...
foreign key(外键字段) references 表名1(关联表字段(一般为id字段))
);
注意:在创建varchar类型的字段时得指定大小。
查看创建的表结构
desc 表名;
查看表的创建语句
show create table 表名;
修改表结构
修改表结构主要包括增加列,修改列以及删除列。修改列的时候并不能够修改列的名字,只是修改列的类型。
-- 增加列
alter table 表名 add (字段 类型 约束条件 默认值);
-- 修改列
alter table 表名 change (字段 类型 约束条件 默认值);
-- 删除列
alter table 表名 delete 字段;
删除表
drop table 表名;
五、数据库表中数据操作
数据库中的数据操作就是主要的 增删改查,其中数据的查询是重点。
添加数据
向数据库表中加入数据可以一次一条的进行添加还可以一次添加很多条,还可以执行脚本从文件中进行添加。
数据库插入数据可以分为:全列插入、缺省插入以及一次插入多条数据(mysql特有)
-- 全列插入(其中的一些具有默认值的字段可以使用占位符来代替)
insert into 表名 values(对应表中字段的值);
-- 缺省插入,可以指定插入的字段
insert into 表名(字段1,字段2,...) values(字段1对应的值,字段2对应的值,...);
-- 一次插入多条数据(mysql特有)
insert into students(字段1,字段2,...) values(字段1对应的值,字段2对应的值,...),(字段1对应的值,字段2对应的值,...),...;
修改数据
修改数据使用如下命令:
update 表名 set 字段1=值1,字段2=值2,... where 查询条件;
可以修改一个字段的数据也可以修改多个字段的数据,根据条件还可以修改满足条件的所有数据,不设置条件的话则修改所有数据。
删除数据
删除数据可以使用delete命令来进行:
delete 表名 where 条件;
这样会删除符合条件的记录。
但这是对于一般的不重要的数据信息可以将其直接删除,但是对于重要的信息,比如注册的用户信息则使用 逻辑删除来进行。(数据是最珍贵的)
逻辑删除:其实就是在表中额外添加一个字段名为 isDelete(可以自定义),将其设置为 bit类型的。默认值为0表示未被删除,在需要删除当前记录的时候只需要将当前记录的该字段值设置为1即可。这样,在后面进行数据库数据查询时只需要添加查找isDelete字段值为0的记录即可。
-- 物理删除
delete from 表名 where 条件;
-- 逻辑删除(其实就是修改isDelete字段的值)
update 表名 set isDelete=1 where 条件;
-- 对于逻辑删除的数据可以在查询时只查询该字段为0的记录
select * from 表名 where isDelete=0;
查询数据
数据库中基本的查询语句为:
select * from 表名;
-- 查询固定字段的数据
select 字段1,字段2 from 表名;
-- 消除重复数据
select distinct 字段1,字段2 from 表名;
除了基本的数据查询操作之外还包括一些其他的高级查询:
· 条件查询
· 聚合查询
· 分组查询
· 查询排序
· 分页查询
(一)、条件查询
使用 where关键字来设置查询条件,满足条件的记录返回。
select * from 表名 where 条件;
条件运算符中可以写:
1. 比较运算符(=;>;<;>=;<=;<>|!=)
2. 逻辑运算符(and;or;not)
上面的这些条件查询命令是有一个优先级的,优先级从高到低分别为:
小括号,not,比较运算符,逻辑运算符(and大于or)
1.范围查询
范围查询可以查询在某一个范围内的字段值:
· in 表示在某一个范围内
· between a and b 表示在从a到b一个连续的范围内(只使用与数字类型)
2.模糊查询
条件查询还可以使用 模糊查询,使用 like 关键字表示进行模糊查询
select * from 表名 where 字段 like 模糊内容;
模糊内容中的通配符包括:
· ‘%’ 表示任意多个字符
· ‘_’ 表示任意一个字符
3.空判断
注意: null 与 ’‘ 是不同的。前者是空,什么都没有,不占内存;后者是空字符串。
· 判空命令:is null
· 判非空命令 :is not null
(二)、聚合查询
为了更好的得到数据库中数据的统计结果,mysql提供了一些 聚合函数:
· count():表示计算总行数。
· max(列名):表示求此列的最大值
· min(列名):表示求此列的最小值
· sum(列名):表示求此列的总和
· avg(列名):表示求此列的平均值
语法:
selece 聚合函数 from 表名 where 条件;
(三)、分组查询
可以将查询出来的数据按照字段分组,这样此字段相同的数据都会被分到同一组中。分组后只能查询到相同的数据列,对于有差异的数据列无法出现在结果集中。
可以对分组后的数据进行统计,做 聚合运算。一般分组操作和聚合操作搭配使用。
语法:
select 字段1,字段2 from 表名 group by 字段1,字段2;
注意:在按照指定字段分组之后,select所查询到的字段只能是分组后的字段以及相应的聚合函数。
分组之后还可以进行数据筛选,使用 having关键字。
-- having之后的条件与select相同
select 字段1,字段2,聚合函数()... from 表名 group by 字段1,字段2,字段3... having 条件
注意:对比where 与 having
where:是对from之后的原始数据集进行筛选
having:是对group by的数据进行筛
(四)、查询结果排序
为了方便查看数据的顺序,可以对其进行排序操作。关键字:order by
语法:
select * from 表名 order by 字段1 asc|desc,字段2 asc|desc,...;
注意:
· 当字段1的值相同时,则按照字段2的值进行排序,以此类推。
· 使用条件查询时默认按id字段进行升序排序
· 默认是从小到大进行排序
· asc:升序排序
· desc:降序排序
(五)、分页查询
当查询到的数据比较多时,无法将所有的数据都显示出来,这时便可以使用 分页来将数据一页一页的显示出来。
分页关键字: limit
语法:
-- start表示起始位置,从0开始索引。count表示一次获取多少条数据。
select * from 表名 limit start,count;
-- 假如:一页显示m条数据,当前是第n页(从1开始),如何获取第n页的数据:
select * from 表名 limit (n-1)*m, m;
(六)、总结
现在完整的数据库数据查询语句为:
select distinct *
from 表名
where ...
group by ... having ...
order by ...
limit start count;
六、数据库数据备份和恢复
有时会需要对数据库的数据进行备份和恢复操作,这些操作可以使用 mysql 命令来直接完成。
备份操作:
#1. 使用超级管理员
$ sudo -s
#2.进入mysql库目录中去
$ cd /var/lib/mysql
#3.运行 mysqldump 命令(按提示输入密码)
$ mysqldump -uroot -p 数据库名 > 保存路径/名字.sql;
恢复操作:
首先得连接到mysql中去,创建一个数据库(备份数据库文件中并没有创建数据库命令)。
创建好数据库之后便退出数据库,执行以下命令:
$ mysql -uroot -p 数据库名 < 保存路径/名字.sql;