mysql update语句

面试官:谈谈你对mysql索引的认识?

坚强是说给别人听的谎言 提交于 2019-12-05 00:30:18
(转载)原文链接: blog.csdn.net/fujiandiyi0… 引言 大家好,我渣渣烟。我曾经写过一篇《面试官:谈谈你对表设计的认识?》于是呢,决定再来一个mysql的数据库专题,这篇我们就来谈谈关于索引方面的mysql面试题。还是老规矩,讲的是在Innodb存储引擎下的情形,毕竟我还真没用过Mysiam之类的存储引擎。ps:其实很早就想写了,一直偷懒! 其实这下面每个问题,我都可以讲一篇文章出来!而且这些问题,不是我凭空编的。如下图所示(注意看第三题) 所以我回忆了一下,索引常见考点有哪些,总结成了这篇文章! 主要题目有下面这些 (1)你一般怎么建索引的? (2)讲讲索引的分类?你知道哪些? (3)如何避免回表查询?什么是索引覆盖? (4)现在我有一个列,里头的数据都是唯一的,需要建一个索引,选唯一索引还是普通索引? (5)mysql索引是什么结构的?用红黑树可以么? (6)mysql某表建了多个单索引,查询多个条件时如何走索引的? 正文 1、你一般怎么建索引的?烟哥注:曾记得有一个粉丝来找我的时候,出现如下搞笑一幕 渣渣烟:"你这个简历上写了拥有SQL优化经验,你怎么建索引的?" 只见该粉丝嘿嘿一笑..说道:"就那样建啊…" 渣渣烟:"噢(第二声),就哪样建啊…" 粉丝:"…就网上说的那些索引规则啊" 渣渣烟:"那你怎么知道那些SQL出问题,需要建索引呢?"粉丝:"我

oralce与mysql的区别

大城市里の小女人 提交于 2019-12-04 23:38:42
1. 有些人说Oracle没有限制,实际上他们说得可能是Oracle不支持LIMIT语法.不过可以rownum虚列来实现,不过会更加麻烦.   2. Oracle不支持偏移(offset)语法. 3. Oracle的复制功能可能比MySQL更加健壮,不过也更加难以配置.   4. 对于多个Master类型的系统,大部分用户都希望你使用更加复杂也更加昂贵的Oracle RAC(虽然可能NDB更加健壮).   5. Oracle的分区功能非常健壮,但是它不是内置的,并需要专门为此付费(分区功能是在Enterprise Edition里面是内置的).   6. 在Linux/Unix上,Oracle并不象Mysql那么方便,很多Linux/Unix发行版默认就会自带Mysql.(我对这一点的理解与翻译可能都有偏差)   7. INSERT … ON DUPLICATE KEY UPDATE语法将不再可用,不过你需要学习更加复杂(但是符合SQL标准)的MERGE语法.   8. Oracle的ROLE架构与MySQL有很大差异,无法再使用root角色来完整所有工作.(不过Sys用户的权限仍然与root相差无几,只是为了安全着想,不建议这么使用了).   9. Role 帐户与特定的Schema联系在一起(反之也一样),类似于MySQL数据库中的Database概念.

mysql 复习

梦想的初衷 提交于 2019-12-04 23:27:04
SQL 什么是SQL? Structured Query Language :结构化查询语言 其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。 SQL通用语法 SQL 语句可以单行或多行书写,以分号结尾。 可使用空格和缩进来增强语句的可读性。 MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。 3 种注释 单行注释: -- 注释内容 或 # 注释内容(mysql 特有) 多行注释: /* 注释 */ SQL分类 1) DDL(Data Definition Language) 数据定义语言 用来定义数据库对象:数据库,表,列等。关键字: create , drop , alter 等 2) DML(Data Manipulation Language) 数据操作语言 用来对数据库中表的数据进行增删改。关键字: insert , delete , update 等 3) DQL(Data Query Language) 数据查询语言 用来查询数据库中表的记录(数据)。关键字: select , where 等 4) DCL(Data Control Language) 数据控制语言(了解) 用来定义数据库的访问权限和安全级别,及创建用户。关键字: GRANT , REVOKE 等 DDL: 操作数据库、表 操作数据库

mysql的分区和分表

删除回忆录丶 提交于 2019-12-04 22:09:56
1,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看 mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上 2. mysql分表。 一,先说一下为什么要分表 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。 根据个人经验,mysql执行一个sql的过程如下: 1,接收到sql;2,把sql放到排队队列中 ;3,执行sql;4,返回执行结果。在这个执行过程中最花时间在什么地方呢? 第一,是排队等待的时间,第二,sql的执行时间。其实这二个是一回事,等待的同时,肯定有sql在执行。所以我们要缩短sql的执行时间。 mysql中有一种机制是表锁定和行锁定,为什么要出现这种机制,是为了保证数据的完整性,我举个例子来说吧,如果有二个sql都要修改同一张表的同一条数据,这个时候怎么办呢,是不是二个sql都可以同时修改这条数据呢?很显然mysql对这种情况的处理是,一种是表锁定(myisam存储引擎),一个是行锁定(innodb存储引擎)。 表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行操作

MySQL InnoDB 锁

ぃ、小莉子 提交于 2019-12-04 21:12:01
MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 MySQL InnoDB 锁 MySQL InnoDB MVCC MySQL InnoDB 实现高并发原理 MySQL InnoDB 快照读在RR和RC下有何差异 数据准备: /* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.6.17 : Database - test ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE

Mysql 安全和DCL语句

杀马特。学长 韩版系。学妹 提交于 2019-12-04 21:04:29
在讨论安全时,我们考虑整个服务器主机安全(而不仅是 Mysql 服务)需要抵御攻击, 窃听, 扫描, 破解等。 Mysql 对所有连接数据库用户进行了了 ACL 访问控制,减少服务器被内部不规范操作导致故障。 Mysql 还支持客户端和服务器之间的 SSL 加密连接。 当然这里讨论的许多概念都不是特定于 Mysql 几乎所有的应用程序都适用相同的一般思路。 用户账户管理 访问权限系统 访问权限回收 toc Mysql 运行时,请遵循以下准则: 不要给用户配置超级用户权限 不要在数据库中存储明文密码 不要使用较为简单的字符密码 不允许非授信任主机使用扫描 用户账户管理 登录 Mysql , 使用 mysql -u root -p 可以连接数据库, 但这只是本地连接数据库的方式,在生产很多情况下都是连接网络中某一个主机上的数据库 -P //指定连接远程数据库端口[默认3306] -h //指定连接远程数据库地址[默认localhost] -u //指定连接远程数据库账户[默认root] -p //指定连接远程数据库密码[默认密码为空] -e //执行mysql数据库sql指令 -S //指定mysql数据库Socket ## 不安全 [root@Mysql ~]# mysql -uroot -p'mypass' ## 推荐方式 [root@Mysql ~]# mysql -uroot

MySQL数据库基础笔记

微笑、不失礼 提交于 2019-12-04 20:47:41
数据库 数据库就是存储和管理数据的仓库,用户可以对数据库中的数据进行增删改查等操作。 数据库的分类 关系型数据库(Oracle、MySQL、SQLite等) 非关系型数据库(Redis、MongoDB等) MySQL简介 MySQL是一个关系型数据库,由MySQLAB公司开发,目前属于Oracle旗下。 特点:开源、支持大型数据库、使用标准SQL、适用于多种操作系统以及提供多种编程语言接口。 安装(Ubuntu中): sudo apt-get install mysql-serversudo apt-get install mysql-client MySQL客户端连接服务端: mysql -uusername -ppassword 退出:exit、quit 常用数据类型 int、bit、decimal、varchar、char、date、time、datetime、enum、text 常用数据约束 主键primary key、非空not null、唯一unique、默认default、外键foreign key 数据库设计三范式 原子性 满足1,表必须有主键,非主键字段必须完全依赖于主键 满足2,非主键必须直接依赖于主键 E-R模型 实体-关系模型,E-R模型就是描述数据库存储数据的结构模型 一对一 一对多 多对多 常用SQL语句 基本语句 查看所有数据库 show

mysql安装及相关配置

烈酒焚心 提交于 2019-12-04 20:45:48
安装下载 第一种 安装mysql安装包 //www.jb51.net/softs/451120.html 保存root密码 打开系统偏好设置,start mysql server #配置mysql export Mysql=/usr/local/mysql export PATH=$PATH:$Mysql/bin 重置root密码 mysqladmin -u root -p password newpass 登录 mysql -u root -p 退出 exit 第二种 安装mysql brew install mysql 初始化mysql,然后按提示操作就OK mysql_secure_installation 登录 mysql -u root -p 退出 exit mysql数据库操作 命令 注释 show databases 展示所有数据库名称 use databasename 针对该数据库进行相应操作 show tables 展示该数据库所有表 show columns from tablename 展示该表的所有属性,属性类型,主键信息,是否为NULL,默认信息等 show index from tablename 展示该表的详细索引信息,包括PRIMARY KEY主键 create database databasename 创建数据库 drop database

MySQL常用命令

二次信任 提交于 2019-12-04 20:37:19
/* 启动 MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录 MySQL */ mysqld --skip-grant-tables -- 修改 root 密码 密码加密函数 password() update mysql.user set password=password('root'); SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES -- /* 数据库操作 */ ------------------ -- 查看当前数据库 select database(); -- 显示当前时间、用户名、数据库版本 select now(), user(), version(); -- 创建库 create database[ if not exists] 数据库名 数据库选项 数据库选项: CHARACTER SET charset_name COLLATE collation_name -- 查看已有库 show databases[ like 'pattern'] -- 查看当前库信息 show create database 数据库名 -- 修改库的选项信息 alter database 库名 选项信息 -- 删除库 drop

DELPHI XE MYSQL数据库操作类 MYSQLHELPER

…衆ロ難τιáo~ 提交于 2019-12-04 19:11:33
注: 无需odbc配置 {* * MySQL Helper v1.0 * 2015.6.19 * 说明: * 这是一个操作MySQL的类,该类必须和libmysql.dll,dbxmys.dll两个文件一起使用. * 安装: * 将dll拷贝到C:\Windows\System32下和项目目录下,发行的时候放到exe目录下即可. * 使用: * //使用insert,update,delete语句时请使用:TMySQLHelper.ExecSQL();返回受影响行数Integer; * //使用select语句时请使用TMySQLHelper.Query();返回数据集TSQLQuery; * 测试: * WIN7 SP1 X86 , MySQL 5.6.17 , Delphi XE 测试通过. * ========================================== * var * MySQLHelper : TMySQLHelper; * begin * MySQLHelper := TMySQLHelper.Create; * MySQLHelper.User_name := 'root'; * MySQLHelper.Password := 'root'; * MySQLHelper.Database := 'Test'; * ShowMessage(