mysql update语句

mysql常用语句(基础)

人走茶凉 提交于 2020-01-26 10:33:59
Mysql常用语句(基础) #1.select语句 (语法:SELECT 列名称 FROM 表名称) #* 查询全部 select * from user ; #select distinct 语句用法 (用于返回唯一不同的值。) select distinct user_age from ` user ` ; #2.WHERE 子句 根据条件查询 (语法:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值) #between 运算符的用法 (返回在某个范围内的结果) select * from user where user_age between 21 and 22 ; #like 运算符的用法 用于在 WHERE 子句中搜索列中的指定模式 #(模糊查询,返回过滤结果,"%" 可用于定义通配符(模式中缺少的字母)) select * from user where user_name like 'tes%6' ; #and 运算符的用法 (如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。) select * from user where user_name = 'test' or user_age = 18 ; #or 运算符的用法 (如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。) select * from

mysql--对行(表中数据)的增删改查

别说谁变了你拦得住时间么 提交于 2020-01-26 01:57:55
一.插入数据(增加)insert 1.插入数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); #指定字段来插入数据,插入的值要和你前面的字段相匹配 语法二: INSERT INTO 表名 VALUES (值1,值2,值3…值n); #不指定字段的话,就按照默认的几个字段来插入数据 2.指定字段插入数据 语法: INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…); 3.插入多条记录 语法:#插入多条记录用逗号来分隔 INSERT INTO 表名 VALUES (值1,值2,值3…值n), (值1,值2,值3…值n), (值1,值2,值3…值n); 4.插入查询结果 语法: INSERT INTO 表名(字段1,字段2,字段3…字段n) SELECT (字段1,字段2,字段3…字段n) FROM 表2 WHERE …; #将从表2里面查询出来的结果来插入到我们的表中,但是注意查询出来的数据要和我们前面指定的字段要对应好    二.更新(修改)数据update 语法: UPDATE 表名 SET 字段1=值1, #注意语法,可以同时来修改多个值,用逗号分隔 字段2=值2, WHERE CONDITION; #更改哪些数据,通过where条件来定位到符合条件的数据

MySQL优化技巧【持续更新】

冷暖自知 提交于 2020-01-26 01:50:06
前言 应用程序或web网页有时慢的像蜗牛爬似的,可能是网络原因,可能是系统架构原因,还有可能是数据库原因。那么如何提高数据库SQL语句执行速度呢?下面是积累的一些优化技巧,望对君有用。 正文 1、比较运算符能用 “=”就不用“<>” //“=”增加了索引的使用几率。 2、明知只有一条查询结果,那请使用 “LIMIT 1” “LIMIT 1”可以避免全表扫描,找到对应结果就不会再继续扫描了。 3、为列选择合适的数据类型 //能用TINYINT就不用SMALLINT,能用SMALLINT就不用INT,道理你懂的,磁盘和内存消耗越小越好嘛。 4、将大的DELETE,UPDATE or INSERT 查询变成多个小查询 能写一个几十行、几百行的SQL语句是不是显得很高大上?然而,为了达到更好的性能以及更好的数据控制,你可以将他们变成多个小查询。 5、使用UNION ALL 代替 UNION,如果结果集允许重复的话 //因为 UNION ALL 不去重,效率高于 UNION。 6、为获得相同结果集的多次执行,请保持SQL语句前后一致 这样做的目的是为了充分利用查询缓冲。 7、尽量避免使用 “SELECT *” //如果不查询表中所有的列,尽量避免使用 SELECT *,因为它会进行全表扫描,不能有效利用索引,增大了数据库服务器的负担,以及它与应用程序客户端之间的网络IO开销。 8、WHERE

Mysql 的基本命令

会有一股神秘感。 提交于 2020-01-25 21:50:06
文章目录 一、数据库的概述 1.1、关系型数据库 1.2、非关系型数据库 二、数据库的基本操作命令 2.1、查看数据库结构 三、SQL语句 3.1、SQL语言分类 3.2、DDL语句 3.3、DML语句 3.4、DQL语句 3.5、DCL语句 一、数据库的概述 数据库作用:数据持久化保存,高可靠,高可用,数据的快速提取。 数据库存储类型:关系型数据库 非关系型数据库。 1.1、关系型数据库 其存储结构是二维表格,反映事物及其联系的数据是以表格形式保存的 在每个二维表中,每一行称为一条记录,用来描述一个对象的信息,每一列称为一个字段,用来描述对象的一个属性。 关系型数据库: MySQL(oracle公司),sql server(微软公司),access(微软公司),oracle,db2(IBM公司),sybase(sybase公司) 1.2、非关系型数据库 非关系型数据库存储方式 键-值方式(key–value),以键为依据存储、删、改数据 列存储(Column-oriented), 将相关的数据存储在列族中 文档的方式,数据库由-系列数据项组成,每个数据项都 有名称与对应的值 非关系型数据库(统称NOSQL): redis(内存数据库/缓存数据库): K-V键值对 key-value 变量名-值 memcache (内存数据库/缓存数据库) :K-V键值对 非关系型数据库的优点:

Mysql查询语句使用select.. for update导致的数据库死锁分析

非 Y 不嫁゛ 提交于 2020-01-25 14:51:17
近期有一个业务需求,多台机器需要同时从Mysql一个表里查询数据并做后续业务逻辑,为了防止多台机器同时拿到一样的数据,每台机器需要在获取时锁住获取数据的数据段,保证多台机器不拿到相同的数据。 我们Mysql的存储引擎是innodb,支持行锁。解决同时拿数据的方法有很多,为了更加简单,不增加其他表和服务的情况下,我们考虑采用select... for update的方式,这样X锁锁住查询的数据段,表里其他数据没有锁,其他业务逻辑还是可以操作。 这样一台服务器比如select .. for update limit 0,30时,其他服务器执行同样sql语句会自动等待释放锁,等待前一台服务器锁释放后,该台服务器就能查询下一个30条数据。如果要求更智能,oracle支持for update skip locked跳过锁区域,这样能不等待马上查询没有被锁住的下一个30条记录。 下面说下mysql for update导致的死锁。 经过分析,mysql的innodb存储引擎实务锁虽然是锁行,但它内部是锁索引的,根据where条件和select的值是否只有主键或非主键索引来判断怎么锁,比如只有主键,则锁主键索引,如果只有非主键,则锁非主键索引,如果主键非主键都有,则内部会按照顺序锁。但同样的select .. for update语句怎么就死锁了呢?同样的sql语句查询条件和结果顺序都一致

面试常考的mysql知识点

混江龙づ霸主 提交于 2020-01-25 14:44:28
秋招之后,部门又来了好多小鲜肉,其中有部分同学是没有用过MySQL的,我把自己以前做过的笔记又重新整理了一番,希望能够对新同学有帮助! 什么是DML、DDL、DCL? DML (data manipulation language): 它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是 用来对数据库里的数据进行操作的语言 DDL (data definition language):主要的命令有CREATE、ALTER、DROP等, DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用 DCL (Data Control Language):是 数据库控制功能。 是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句 。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL TCL (Transaction Control Language): 事务控制语言 ,包括:set transaction\rollback\savepoin MySQL常用命令 DDL 创建数据库 create database 数据库名; 查看数据库列表 show databases;

python Mysql 基本操作

痞子三分冷 提交于 2020-01-25 10:00:08
1、mysql常用增删查改 连接: mysql -uroot -pgloryroad mysql -uroot -p password: mysql -h39.1.1.1 -uroot -pgloryroad 默认端口:3306 mysql -h39.1.1.1 -uroot -pgloryroad -P3306 #端口号 show databases; create database test51; #查看当前使用的数据库 use jin; select database(); #使用哪个数据库 use test; #创建数据库gloryroad CREATE DATABASE IF NOT EXISTS gloryroad DEFAULT CHARSET utf8 COLLATE utf8_general_ci; #查看存在的表 show tables; #创建表 create table student( id int(11) not null auto_increment, name varchar(20) not null, age int(3), admissiondate datetime default NOW(), primary key(id) )engine=innodb default charset=utf8; #查看建表语句 show create

pymysql操作mysql数据库

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-25 09:59:35
1.建库 import pymysql # 建库 try: conn=pymysql.connect( host='127.0.0.1', port=3306, user='root', passwd='123456', ) cur=conn.cursor() create_database_sql='CREATE DATABASE IF NOT EXISTS py3_tstgr DEFAULT CHARSET utf8 COLLATE utf8_general_ci;' cur.execute(create_database_sql) cur.close() print('创建数据库 py3_tstgr 成功!') except pymysql.Error as e: print('pymysql.Error: ',e.args[0],e.args[1]) 2.建表 import pymysql # 建表 try: conn=pymysql.connect( host='127.0.0.1', port=3306, user='root', passwd='123456', db='py3_tstgr', charset='utf8' ) cur=conn.cursor() cur.execute('drop table if exists user;') create

【MySQL】项目中常用的 18 条 MySQL 优化 打造高性能 SQL 语句

微笑、不失礼 提交于 2020-01-25 06:21:28
1. 执行计划EXPLAIN 要想做MySQL优化,首先必须知道如何善用执行计划EXPLAIN。下图做个简单的示例并标注需要重点关注的数据。 type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别 key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式 key_len列,索引长度 rows列,扫描行数。该值是个预估值 Extra列,详细说明。注意常见的不太友好的值有:Using filesort, Using temporary 关于EXPLAIN的详细分析,可以阅读另一篇文章: 【MySQL】执行计划EXPLAIN详解 2. SELECT语句务必指明字段名称 SELECT *增加很多不必要的消耗(cpu、io、内存、网络带宽);增加了使用覆盖索引的可能性;当表结构发生改变时,前断也需要更新。所以要求直接在select后面接上字段名。 3. 如果排序字段没有用到索引,就尽量少排序 4. 当只需要一条数据的时候,使用LIMIT 1 这是为了使EXPLAIN中type列达到const类型 5. SQL语句中IN包含的值不应过多 MySQL对于IN做了相应的优化,即将IN中的常量全部存储在一个数组里面,而且这个数组是排好序的。但是如果数值较多,产生的消耗也是比较大的。再例如:select id from table_name

MySQL 8.0 技术详解

大兔子大兔子 提交于 2020-01-25 05:36:28
MySQL 8.0 简介 MySQL 5.7 到 8.0,Oracle 官方跳跃了 Major Version 版本号,随之而来的就是在 MySQL 8.0 上做了许多重大更新,在往企业级数据库的路上大步前行,全新 Data Dictionary 设计,支持 Atomic DDL,全新的版本升级策略,安全和账号管理加强,InnoDB 功能增强等,目前小版本已经 release 到 8.0.16,新的功能仍然在持续推出。 RDS MySQL 8.0 产品是阿里云推出的 MySQL 系列云产品之一,使用完全兼容 MySQL 8.0 的阿 里云 AliSQL 8.0 分支,除了官方在 MySQL 8.0 推出的全新功能外,AliSQL 沉淀了许多在 Alibaba 集团电商业务和云上几十万客户在使用 MySQL 过程中遇到的问题和需求,以此来加固AliSQL, 提升 AliSQL 的性能和稳定性。 下面分别对 MySQL 8.0 和 AliSQL 8.0 相关的版本和功能做简短的介绍: MySQL 8.0 版本更新 1. 数据字典 MySQL 8.0 摒弃了 Server Layer 定义的 FRM 文件和其它非事务表,使用了一组 InnoDB 表来 保存数据字典,支持事务特性。 2. Atomic DDL 在 Data Dictionary 支持事务特性的基础上,8.0 增加了一个