MySQL的学习笔记
基础概念
数据类型
数据类型 | 范围 | 作用 |
---|---|---|
int | ||
tinyint | ||
bigint | ||
decimal | 高精度,用来记金额 | |
float | ||
double | ||
date | ||
time | ||
datetime | ||
timestamp | ||
year | ||
char | ||
varchar | ||
text | ||
longtext | ||
enum | ||
set |
属性、约束
名 | 作用 |
---|---|
if exists | 如果存在 返回True |
if not exists | 如果不存在 返回True |
on update current_timestamp | 更新为当前时间 |
character set 字符集 | 设置字符集 |
default | 默认值 |
comment | 注释 |
foreign key 列名 reference 表名(列名) | 外键 |
auto_increment | 自增长 |
not null | 不为空 |
check | 检查 |
primary key | 主键 |
unique | 唯一 |
数据库的CRUD
创建数据库:
create database my_sql_name;
使用数据库:
use my_sql_name;
查看当前使用的数据库:
select datebase();
查看当前数据库中存在的所有的数据库
show databases;
查看指定数据库的创建语句
show create database my_sql_name;
删除指定数据库
drop database my_sql_name;
数据库中表 的CRUD
创建表
create table my_table_name(id int primary key not null auto_increment);
修改表
alter table 已存在的表名 操作;
添加一个列
add 与 add column 等效,add column 指定要添加列(用来告诉解析器:“接下来要写的是列定义”)
alter table 表名 add [column] 列名 类型 约束;
删除一个列
alter table 表名 drop 列名;
重命名列名
alter table 表名 rename to 新表名;
修改表中的列
alter table 表名 change 列名 新列名 新数据类型 原约束;
alter table 表名 modify 列名 类型 约束
查看已存在的所有表
show tables;
查看指定表的所有信息
desc 表名;
删表
drop table 已存在的表名;
数据库中表中的数据的CRUD操作
添加数据
insert into 表名 values(对应列的值);
insert into 表名 set 列名=值;
insert into 表名 (列名1,列名2)values (值1,值2)
修改数据
update 表名 set 列名="值" where 条件
查找数据
select
from
where
group by
order by
limit
删除数据
delete from 表名 where 条件
进阶
视图
一张虚拟表,数据来源真实,用于存储预定SQL语句的结果。
视图不实际存储数据。
可以对视图创建的表进行UD,相当于对真实表进行对应的操作。
函数
预编译后存储在服务器上,效率高
事务
保证mysql的数据的一致性和完整性
ACID
索引
主键索引
唯一索引
普通索引
复合索引--最左前缀原则
全文索引
面试题
MySQL中的varchar 和 char 有什么区别?
MySQL中的int(11)的11表示什么?
MySQL中datetime 和 timestamp 的区别?
MySQL中varchar(100)和varchar(10)的区别?
MySQL中count(*)、count(1)、count(字段名)有什么区别?
MySQL中limit 1000000000000000,10 和limit 10 的执行速度是否相同?
MySQL中的索引类型有哪些?
在 MySQL 中建索引时需要注意哪些事项?
MySQL 索引的最左前缀匹配原则是什么?
MySQL中的事务隔离级别有哪些?
MySQL默认的事务隔离级别是什么?为什么是他?
MySQL中inner join、left join 和 right join 的区别是什么?
在MySQL中,你用过那些函数?
数据库的三大范式是什么?
MySQL中exists和in的区别?
在MySQL中存储金额数据,应该使用什么数据类型?
MySQL中的log buffer是什么?有什么作用?
什么是分库分表?有哪些策略
MySQL中的数据排序是怎么实现的?
MySQL 的 Doublewrite Buffer是什么?它有什么作用?