MYSQL、Oracle、Sqlserver、DB2、SQLlite 。。。通过表和表之间,行和列之间的关系进行数据的存储。
REdis(键值对存储)、MOngDB。。。对象存储,通过对象的自身的属性来决定。
flush privileges; --刷新权限
describe student; --显示数据库中所有的表的信息
date YYYY-MM-DD 日期格式
time HH:mm:ss 时间格式
datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式
timestamp 时间戳 190.1.1到现在的毫秒数
null 没有值,未知,注意:不要使用NULL 进行运算。null和‘ ’在mysql中不一样,有区别。
Unsigned:
1.无符号的整数。2.声明了该列不能为负数。
Zerofill:
1.0填充的 2.不足的位数,使用0来填充 int(3),5 …005.
自增:
1.通常理解为自增,非空 NULL not null
假设设置为 not null,如果不给赋值,就会报错!
NULL,如果不填写值,默认就是null.
/* 每一个表,都必须存在以下九个字段! 未来做项目用的,表示一个记录存在意义!
id 主键
version 乐观锁
is_delete 未删除(逻辑删除)
create_time 创建时间
create_id
create_name
update_time 修改时间
update_id
update_name
*/
--关于数据引擎
/**
INNODB 默认使用~
MYISAM 早些年使用的
**/
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为2倍 |
常规使用操作:
MYISAM节约空间速度较快
INNODB安全性较高,事务的处理,夺标多用户操作
在物理空间存在的位置
所有的数据库文件都存在data目录下,一个文件夹就对应一个数据库
本质还是文件的存储!
MYSQL引擎在物理文件上的区别
外键:以上的操作都是物理外键,数据库级别的外键,我们不建议使用!阿里巴巴规范手册中明确规定不建议使用外键;
【强制】 不得使用外键级联,一切外键概念不虚在应用层解决。
Mysql 语法语句:
show create database school --查看创建数据库的语句
show create table student --查看student数据表的定义语句
desc student --显示表的结构
truncate命令 作用:完全清空一个数据库表,表的结构和索引约束不会变!
truncate ‘student’
delete 的truncate 区别
相同点:都能删除数据,都不会删除表结构
不同:truncate 重新设置自增列 计数器会归零
? truncate 不会影响事务
1、select concat(‘姓名:’,studentName) As 新名字 from student
2、去重distinct
3、SELECT VERSION() 查询数据库当前版本
4、select @@auto_increment_increment --查询自增的步长(变量)
5、like 结合 %(代表0到任意个字符) _(一个字符)
6、innner join 、left join 、 right join
7、-- 查询父子信息:把一张表看为两个一模一样的表
select a.catName as ‘父栏目’,b.catName as ‘子栏目’ from
'category ’ as a, ‘category’ as b where a.‘categoryid’ = b.‘pid’
8、语法: limit 起始值,页面的大小
第n页 limit (n-1)*pageSize,pageSize
9.在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据
1.官网:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html
SELECT CHAR_LENGTH(“ass司法解释”)
select concat(‘我’,‘love’,‘you’)
select instr(‘kUangshen’,‘n’)
—时间和日期函数(记住)
SELECT CURRENT_DATE()
SELECT CURDATE()
SELECT NOW()
select LOCALTIME()
SELECT SYSDATE()
SELECT YEAR(now())
select MONTH(now())
SELECT SYSTEM_USER()
SELECT USER()
SELECT VERSION()
=====聚合函数
----Count(字段),会忽略所有的null值
-----Count(*),不会忽略null值,本质计算行数
-----Count(1),不会忽略null值,本质计算行数
select 查询的字段 from 表名
xxxx join 连接的表 on 等值判断
where
group by
Having (过滤分组后的信息)
Order by
limit
什么是MD5
主要是增强算法复杂度和不可逆性。
MD5不可逆,具体的值的md5是一样的
MD5破解网站的原理,别后有一个字典,MD5加密后的值,加密前的值
1.什么是事务?要么成功,要么失败。
2.博客连接:https://blog.csdn.net/dengjili/article/details/82468576
3.原子性:要么成功,要么失败。
一致性:事务前后的数据完整性要保证一致。
持久性:事务一旦提交不可逆,被持久化到数据库中!
隔离性:事务的隔离性是多个用户并发范根数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,事务之间要相互隔离。
指一个事务读取了另外一个事务未提交的数据。
在一个事务内读取表中的某一行数据,多次读取结果不同。
-- ================事务===============
-- mysql 是默认开启事务自动提交的
set autocommit =0; /*关闭*/
set autocommit =1; /*默认开启*/
-- -手动处理事务
set autocommit =0;
-- 事务开启
start TRANSACTION -- 标记一个事务的开始,从这个之后的sql都在同一个事务内
insert xx
insert xx
-- 提交:持久化(成功)
commit
--回滚:回滚到原来的样子(失败!)
ROLLBACK;
-- 事务结束
set autocommit =1; -- 开启自动提交
主键索引(Primary key) :唯一的标识,主键不可重复,只有一个列作为主键
唯一索引(UNIQUE KEY):避免重复复的列出现,唯一索引可以重复,多个列都可以表示位以标识为唯一索引
常规索引(KEY/INDEX):默认的,index,key关键字来设置
全文索引(FullText)在特定的数据引擎下才有,MySam;快速定位数据
– 显示所有的索引信息
show index from student;
– explain 分析sql执行的状况
explain select * from student; – 费全文索引
1.索引不是越多越好 2.不要对进程变动数据加索引 3.小数据量的表不需要加索引 4.所以一般加载常用来查询的字段上!
索引的数据结构:
Hash 类型的索引
Btree: InnoDB 的默认数据结构~
阅读索引的底层架构:http://blog.codinglabs.org/articles/theory-of-mysql-index.html
1.使用命令行导出 mysqldump 命令行使用
#mysqldump -h -u 用户名 -p 密码 数据库 表名 > 物理地址/文件名
#导入
#登录数据库账号下,切换到指定的数据库
#source 备份文件