ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL入门基础(3)

2022-09-05 20:31:17  阅读:210  来源: 互联网

标签:入门 int create 基础 索引 key MySQL table 主键


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开始时候的数据(幻读)
  • 串行化

索引

可以在单个字段,也可以在多个字段上添加。为了缩小扫描范围。

什么情况加索引

  1. 数据量大
  2. 某个字段经常出现在where后面(经常被扫描
  3. 该字段很少进行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;

对视图对象的增删改查会导致原表被修改

标签:入门,int,create,基础,索引,key,MySQL,table,主键
来源: https://www.cnblogs.com/destinyzk/p/16659456.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有