MySQL入门基础(3)
2022/9/7 2:24:28
本文主要是介绍MySQL入门基础(3),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
DML和DDL补充
insert插入多条语句
insert into 表名(字段1,字段2) values(值1,值2), (值3,值4),...,()
快速创建表
将查询的结果当作成新的表
create table xx as select * from emp;
把查询结果插入到
insert into xx select * from xxx
快速删除表中的数据,不可恢复!
truncate table xxx # DDL
删除表
drop table xxx
DDL 不讲,因为不常用,create,drop,alter
约束
- 非空约束 not null
- 唯一性约束 unique
- 主键约束 primary key
- 外键约束 foreign key
create table t_vip( id int unique, name varchar(255) not null )
null不算unique
两个字段联系起来具有唯一性
create table t_vip( id int, name varchar(255), email varchar(255), unique(name, email) # 表集约束 )
not null只有列级约束,没有表级约束
如果一个字段被unique和not null 同时修饰,那么就自动成为主键(Oracle不是)
主键约束
- 主键约束
- 主键字段
- 主键值
任何一张表都应该有主键。
主键特征:不能空,不能重复
drop table if exists t_vip; create table t_vip( id int primary key, name varchar(255) )
单一主键和复合之间,建议不使用复合主键
一张表主键约束只能添加一个
主键值建议使用 int,bigint,char,一般都是定长的。
自然主键和业务主键。自然主键是一个int值,与业务没关系。业务主键是业务中的一个字段。建议使用自然主键,不要和业务挂钩。
自增
create table xxx ( int id primary key auto_increment, name varchar(255) )
外键约束
foreign key
create table t_class( classno int primary key, classname varchar(255) ) create table t_student( no int primary key, name varchar(255), cno int, foreign key(cno) references t_class(classno) )
外键值可以为null。外键不一定是父表的主键,但是一定要有unique约定
存储引擎
-
MyISAM
格式文件
数据文件
索引文件
-
InnoDB
-
Memory
添加了unique或者主键的字段,会自动创建索引
事务
事务是一个完整的业务逻辑。
和事务有关的是DML语句,update delete insert
提交事务:commit
回滚事务:callback
mysql默认自动提交,每次执行一个DML语句就提交一次!
事务特性
- A 原子性
- C 同时成功或者同时失败
- I A和B之间互不影响
- D 事务结束后,保证数据已经保存了
隔离级别
两个事务A和B
- 读未提交:A能读到B还没有提交的数据(脏读)
- 读已提交:A只能读到B已经提交的数据(不可重复读)
- 可重复读:A只能读到A开始时候的数据(幻读)
- 串行化
索引
可以在单个字段,也可以在多个字段上添加。为了缩小扫描范围。
什么情况加索引
- 数据量大
- 某个字段经常出现在where后面(经常被扫描
- 该字段很少进行DML操作
create index emp_ename_index on emp(ename); drop index emp_ename_index on emp(ename);
索引失效的情况
- 模糊匹配的时候%开头
- or两端有一个没有索引
- 左匹配法
- where中使用了函数
- 发生了类型转换
索引分类
- 单一索引
- 复合索引
- 主键索引
- 唯一性索引
- 聚簇索引
- 非聚簇索引
视图
create view dept2_view as select * from dept; drop view dept2_view;
对视图对象的增删改查会导致原表被修改
这篇关于MySQL入门基础(3)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南
- 2024-12-07MySQL慢查询入门:快速掌握性能优化技巧
- 2024-12-07MySQL入门:新手必读的简单教程
- 2024-12-07MySQL入门:从零开始学习MySQL数据库
- 2024-12-07MySQL索引入门:新手快速掌握MySQL索引技巧
- 2024-12-06BinLog学习:MySQL数据库BinLog入门教程
- 2024-12-06Binlog学习:MySQL数据库的日志管理入门教程