MYSQL基础理论知识复习

数据库

数据库是按照数据结构来组织、存储和管理数据的仓库
数据库通常分为
层次式数据库
网络式数据库
关系式数据库

最常见的数据库模型(以及种类和区别)

关系型数据库:
SQLite、Oracle、mysql
优点:容易理解、使用方便、易于维护、支持SQL
缺点:读写性能比较差、固定的表结构、高并发读写需求
非关系型数据库:
MongoDB、redis、HBase
优点:读写性能高,无需经过sql层解析;键值对,数据没有耦合性,容易扩展
缺点:不提供sql支持,学习和使用成本较高;无事务处理,附加功能bi和报表等支持也不好

存储引擎:

MySQL存储引擎MyISAM与InnoDB的区别:
1、InnoDB支持事务,MyISAM不支持,(这一点非常重要)事务是一种高级的处理方式,如在一些列增删改查中只要哪个出错还可以回滚还原,而MyISAM就不可以
2、InnoDB支持外键,MyISAM不支持
3、MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及安全性较高的应用
4、MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能

数据类型

数据类型是指系统中所允许的数据的类型
数据类型分为:
数值类型(常用类型)
tinyint、int、bigint、decimai
字符串(文本)类型(常用类型)
char、varchar、text
时间日期类型(常用类型)
date、time、timestamp

主键、外键约束

含义:约束是一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性。

约束分为常见的六大类
主键约束(PRIMARY KEY)
外键约束(FOREIGN KEY)
唯一约束(UNIQUE)
检查约束(CHECK)
非空约束(NOT NULL)
默认值(DEFAULT)

WHERE

在执行select、delete、update命令的时候,可以使用where字句来指定查询条件,从from字句中间结果中选取适当的数据行,达到数据过滤的效果
可以使用and或者or制指定一个或者多个条件

select * from user where like '%user%'搜索用户名字含有user的所有用户

SELECT DISTINCT <字段名> FROM <表名>;

<表明>[AS]<别名>当字段名字过长了可使用

[<位置偏移量>,] <行数>
limit接受一个或两个数字参数,如果是两个的话
第一个指从哪行开始显示,第二个指返回的记录条数

ORDER BY {<列名> | <表达式> | <位置>} [ASC|DESC]

ASC/DESC desc表示按降序分组;升序asc,默认的排序是asc升序排列所以可以省略不写

join:拼表
按照功能大概分为三种
inner join(内连接):取得两个表中存在连接匹配关系的记录。

left join(左连接):取得左表完全记录,即是右并无对应匹配记录表

right join(右连接):与left join相反,取得右表完全记录,即是左表并无匹配对应记录

索引

索引:索引在mysql中也叫作"键",是存储引擎用于快速找到记录的一种数据结构

索引在mysql中分为一下5类
1、普通索引
是最基本的索引类型,唯一任务是加快对数据的访问速度,关键字通常是index或key

2、唯一索引
创建唯一性索引的目的往往不是为了提高访问速度,而是为了避免数据出现重复

3、主键索引
主键索引是一种唯一性索引,即不允许值重复或者值为空,并且每个表只能有一个主键。注意每个表只能有一个主键。

4、空间索引
空间索引主要用于地理空间数据类型GEOMETRY

5、全文索引
全文索引只能在 VARCHAR 或 TEXT 类型的列上创建,并且只能在 MyISAM 表中创建。

数据库的增删改查

select * from 表名 (查询整个表)

SELECT DISTINCT语句用于返回唯一不同的值

order by (对结果进行排序)
select * from 表名 order by 列名 asc/desc

insert into(向表中插入数据)
insert into 表名 (要添加那一列的列名)values (被插入的值)

update(用于更新——更改已存在的记录)
update 表名 set 原本的=要更改的…where 条件

delete(用于删除表中的行)
delete from 表名 where id=1;

like '%…%'模糊搜索
SELECT * from 表名 WHERE 列名 LIKE ‘%关键字%’;

where的聚合函数
avg()平均值
count()统计
max()最大值
min()最小值
sum()求和
having,where关键字无法与聚合函数一起使用
having子句可以让我们筛选分组后的各组数据
now()返回当前系统的日期和时间

MySQL数据库的连接

mysqli_connect(主机地址,mysql用户名,mysql密码,数据库);

选择数据库
mysqli_select_db(connect,数据库名)

创建数据库
mysqli_query(connect,要执行的sql语句)

mysql与mysqli的区别:

mysqli连接是永久连接,而mysql是非永久连接。
mysql连接:每当第二次使用的时候,都会重新打开一个新的进程。
mysqli连接:一直都只使用同一个进程。
好处:这样就可以很大程度的减轻服务器端压力。
当然,如果mysql也需要永久连接的话,就可以使用mysql_pconnect()这个函数

MySQL事务

MySQL事务处理主要有两种方法:
1、用begin,rollback,commit来实现
begin开始一个事务
rollback事务回滚
commit事务确认
2、直接用set来改变mysql的自动提交模式
setautocommit=0禁止自动提交
setautocommit=1开启自动提交