Mysql总结-2

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:

1、乐观所和悲观锁策略

悲观锁:在读取数据时锁住那几行,其他对这几行的更新需要等到悲观锁结束时才能继续 
乐观所:读取数据时不锁,更新时检查是否数据已经被更新过,如果是则取消当前更新 
一般在悲观锁的等待时间过长而不能接受时我们才会选择乐观锁 

2、spin方式

spin方式就是字面意思,轮询需要的锁,获得锁以后再操作,否则等待重试,那么就是SELECT .. FOR UPDATE方式,先轮询到锁,然后在UPDATE,一定不会死锁,只会等待

3、MySQL自动提交问题
MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过 去设置
set autocommit=0  禁止自动提交
set autocommit=1 开启自动提交
mysql>   select  @@autocommit;
+ --------------+
| @@autocommit |
+ --------------+
|                        1 |
+ --------------+

4、修改数据库表名

修改表名语法: ALTER   TABLE   `原表名`   RENAME   TO   `新表名`;
 例子:alter table user rename to tdd_user;

5、主键、自增、外键

主键、自增:eid  bigint   not   null   primary   key  auto_increment
外键:masterId  bigint   references  employee(employeeid)
 
 
  1. create table Employee(eid bigint not null primary key auto_increment, employeeId bigint,employeeName char(10), employeeType char(20), salary float, addressId bigint references address(id) , telePhone char(15), masterId bigint references employee(employeeid)); 

6、 MySql唯一性约束 

唯一性约束
1) 唯一性约束所在的 列允许空值,但是 主键约束所在的列不允许空值
(2) 可以把唯一性约束放在一个或者多个列上,这些列或列的组合必须有唯一的只。但是,唯一性约束所在的列并不是表的主键列。
(3) 唯一性约束强制在指定的列上创建一个唯一性索引。在默认情况下,创建唯一性的非聚簇索引,但是,也可以指定所创建的索引是聚簇索引。

主键: 
1) 用于标识某行而且与之相关. 
2) 是不可能(或很难)更新. 
3) 不应该允许空(NULL). 
唯一域/字段: 
1) 用于作为访问某行的可选手段.
2) 只要唯一就可以更新. 
3) 可以为空(NULLs). 

注意唯一和主键的区别,它们都是创建一个唯一的索引,一个表格仅含有一个主键约束列,但是,它有可能在其他列中含有许多的唯一约束。

 

例如,user表中有user_id,user_name两个字段,如果不希望有两条一摸一样的的user_id和user_name,我们可以给user表添加两个字段的联合唯一索引:

alter table user add unique index(user_id,user_name);





这样当向表中添加相同记录的时候,会返回1062的添加失败信息。



但是有一种情况是表中已经有n个重复的记录,这时候我们才想起来要添加唯一索引,再执行上面的操作时,数据库会告诉你已经有重复的记录了,建立索引失败,这时候,我们可以用下面的操作:
alter ignore table user add unique index(user_id,user_name);



它会删除重复的记录(别怕,会保留一条),然后建立唯一索引,高效而且人性化。尤其是绿色的那条sql,在建立索引的同时删除了重复数据,相当有用。

 


2.给表中 你不想重复出现的字段,如:userid, 则给userid加上 唯一索引(unique)



  再执行 replace into  table (***) values (***),即OK
 
实例:
 
  1. mysql> alter table employee add unique index(employeeid); 
  2. Query OK, 1000001 rows affected (8.95 sec) 
  3. Records: 1000001  Duplicates: 0  Warnings: 0 

 
  1. mysql> alter table employee add unique index myindex(employeeid); 
  2. Query OK, 1000001 rows affected (9.70 sec) 
  3. Records: 1000001  Duplicates: 0  Warnings: 0 

7、查询数据库中的存储过程

 方法一:

       select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE'

 方法二:

          show procedure status; 
 
8、SQL中的‘或者’选择
eg:选择id=2或者id=3或者id=4的记录,使用‘ ||
 select * from machines where id=2 || id=3 || id=4; 
 
 
 本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/368461,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 SQL JSON
MySQL技能树学习总结
MySQL技能树学习总结
454 113
MySQL技能树学习总结
|
SQL 搜索推荐 关系型数据库
MySQL 入门教程:全网最全,MySQL 增删改查高级命令硬核总结
MySQL 入门教程:全网最全,MySQL 增删改查高级命令硬核总结
188 0
MySQL 入门教程:全网最全,MySQL 增删改查高级命令硬核总结
|
SQL 存储 Oracle
(一)MySQL_数据库概述技术总结
简介:MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,2008年被Sun公司收购,2009年Sun 被Oracle收购。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
293 6
(一)MySQL_数据库概述技术总结
Kam
|
SQL 存储 关系型数据库
|
SQL 存储 Oracle
MySQL总结
一.SQL语句简介 1.什么是SQL? SQL(Structured Query Language):结构化查询语言 其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”
185 0
MySQL总结
|
SQL 存储 前端开发
|
关系型数据库 MySQL 数据库
【MySQL】MySQL命令总结 | 数据库与数据表的创建删除与查询
【MySQL】MySQL命令总结 | 数据库与数据表的创建删除与查询
242 0
|
存储 SQL 关系型数据库
MYSQL约束的总结和小练习
约束笔记: 1:主键约束默认是唯一且非空的 2:AUTO_INCREMENT在MYSQL8.0中会将自增主键保存到重做日志中,即使关闭后重启,存储引擎innoDB仍然会根据重做日志初始化计数器内存值。 3:设置了外键约束后,如果要删除主表的内容,则需要先把从表的相关内容给删除。 4:建表时一般设置not null default '' 或default 0,因为nul这个特殊值不好比较,而且查找效率低。 5:外键约束不能跨引擎使用,且mysql中其有一定成本,不适合大并发SQL操作,开发中一般在.
250 0
MYSQL约束的总结和小练习
|
SQL 存储 数据可视化
|
存储 关系型数据库 MySQL

推荐镜像

更多