【数据库】

1.关系型数据库:

MYSQL、Oracle、Sqlserver、DB2、SQLlite 。。。通过表和表之间,行和列之间的关系进行数据的存储。

2.非关系型数据库 ((NoSQL) Not Only)

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

  1. 假设设置为 not null,如果不给赋值,就会报错!

  2. NULL,如果不填写值,默认就是null.

    拓展

    /* 每一个表,都必须存在以下九个字段! 未来做项目用的,表示一个记录存在意义!
    id 主键
    version 乐观锁
    is_delete 未删除(逻辑删除)
    create_time 创建时间
    create_id
    create_name
    update_time  修改时间
    update_id
    update_name
    
    */
    

    数据表的类型

    --关于数据引擎
    /**
    INNODB 默认使用~
    MYISAM  早些年使用的
    **/
    
MYISAM INNODB
事务支持 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间的大小 较小 较大,约为2倍

常规使用操作:

  1. MYISAM节约空间速度较快

  2. INNODB安全性较高,事务的处理,夺标多用户操作

    在物理空间存在的位置

  3. 所有的数据库文件都存在data目录下,一个文件夹就对应一个数据库

  4. 本质还是文件的存储!

MYSQL引擎在物理文件上的区别

外键:以上的操作都是物理外键,数据库级别的外键,我们不建议使用!阿里巴巴规范手册中明确规定不建议使用外键;

【强制】 不得使用外键级联,一切外键概念不虚在应用层解决。

Mysql 语法语句:

show create database school --查看创建数据库的语句

show create table student --查看student数据表的定义语句

desc student --显示表的结构

truncate命令 作用:完全清空一个数据库表,表的结构和索引约束不会变!

truncate ‘student’

delete 的truncate 区别

相同点:都能删除数据,都不会删除表结构

不同:truncate 重新设置自增列 计数器会归零

​ truncate 不会影响事务

DQL查询数据(最重点)

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 子句可以让我们筛选分组后的各组数据

MySQL函数

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 查询小结

select 查询的字段 from 表名

xxxx join 连接的表 on 等值判断

where

group by

Having (过滤分组后的信息)

Order by

limit

数据库级别的MD5加密(扩展)

什么是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 备份文件

你可能感兴趣的:(数据库,mysql,sql,学习)