mysql update语句

Python 第四十五章 MySQL 内容回顾

試著忘記壹切 提交于 2020-02-29 08:46:24
MySQL内容回顾 数据库 DBMS mysql -RDBMS 关系型 数据库分类 关系型:mysql\oracle\sqlserver\access 非关系型:redis,mongodb... 修改密码: mysql>set password for root@'127.0.0.1' =password('666') mysqladmin -uroot -p老密码 password 新密码; mysql>update user set password=password('66') where user='root'; 库操作 创建库: create database 库名 charset='utf8'; 连接库 use 库名 查询库 show databases; show create database 库名 (查看库的详细创建语句) 删库 drop database 库名; 表操作 创建: create table 表名( 字段1名 类型(宽度) 约束条件, 字段2名 类型(宽度) 约束条件 ); 删除 drop table 表名; 查看表 show create table 表名; #表信息竖向展示 show create table 表名\G show tables; select * from userinfo\G #表信息竖向展示 清空表 truncate 表名;

asp.net mvc + mysql + ef6

时光毁灭记忆、已成空白 提交于 2020-02-29 05:27:59
1.通过NuGet包管理器安装:EntityFramework6.1.3、MySql.Data.Entity6.9.9 2.添加新建项→ADO.NET实体对象模型(命名MyContext)→空CodeFirst模型。该模型会自动在app.config中添加连接字符串 <connectionStrings> <add name="MyContext" connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=CodeFirstDemo.MyContext;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" /> </connectionStrings> View Code 3.启用迁移。 在控制台中输入Enable-Migrations(启动迁移)。注意:默认项目一定要是模型所在的项目。 此时项目中会自动生成Migration文件夹 4.为迁移起个名字 在控制台输入:Add-Migration InitModel。(InitModel:为本次迁移起个名字) 此时在项目的Migration文件夹中会自动生成迁移记录文件,文件名以

MySQL binlog 格式(Mixed,Statement,Row Level)

我的未来我决定 提交于 2020-02-29 02:42:46
推荐用mixed,默认使用statement,基于上下文。 MySQL Replication复制可以是基于一条语句(Statement level),也可以是基于一条记录(Row level),可以在MySQL的配置参数中设定这个复制级别,不同复制级别的设置会影响到Master端的bin-log记录成不同的形式。 Row Level:日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改。 优点:在row level模式下,bin-log中可以不记录执行的sql语句的上下文相关的信息,仅仅只需要记录那一条记录被修改了,修改成什么样了。所以row level的日志内容会非常清楚的记录下每一行数据修改的细节,非常容易理解。而且不会出现某些特定情况下的存储过程,或function,以及trigger的调用和触发无法被正确复制的问题。 缺点:row level下,所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如有这样一条update语句:update product set owner_member_id = ‘b’ where owner_member_id = ‘a’,执行之后,日志中记录的不是这条update语句所对应额事件(MySQL以事件的形式来记录bin-log日志)

php 插入MySQL中文乱码问题

浪尽此生 提交于 2020-02-28 22:01:55
参考文章 MYSQL 插入中文乱码解决方案 在用php插入中文时在数据库看到的是乱码, $sql= "insert into login(username, password, passwordMD5, email, registerDate)values('$username','$password','$passwordMD5','$email',NOW())"; 用 show create table [table_name] 来看 默认charset 是utf8没问题,接着试着直接在终端插入中文,发现可以显示中文, 参考文章设置MySQL的设置文件 my.cnf ,发现里面没有可以设置的东西。接着尝试 2.2 设置连接编码   设置了服务器、数据库和数据表部分的编码,必须设置连接编码。连接编码设置如下:   mysql> SET character_set_client=‘gbk’;   mysql> SET character_set_connection=‘gbk’   mysql> SET character_set_results=‘gbk’   设置好连接编码,下面便可以成功插入中文了:   mysql> insert into mysqlcode values(null,‘java爱好者’);   Query OK, 0 rows affected (0.02

【MySQL】Explain详解与索引优化实战

邮差的信 提交于 2020-02-28 12:58:40
目录 1、使用的表 2、explain 中的列 2.1 id列 1)简单子查询 2)from子句中的子查询 3)union查询 2.2 select_type列 2.3 table列 2.4 type列 2.5 possible_keys列 2.6 key列 2.7 key_len列 2.8 ref列 2.9 rows列 2.10 Extra列 3、索引优化实战 2.1 使用的表 2.2 索引优化原则 EXPLAIN命令(执行计划)是查看优化器如何决定执行查询的主要方法。使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的,让我们知道 SQL 的执行计划 ,可以帮助我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用,进而分析你的查询语句或是结构的性能瓶颈。 下面是使用 explain 的例子: 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中) 1 、使用的表 DROP TABLE IF EXISTS `actor`; CREATE TABLE `actor` ( `id` int

cmd连接mysql的方法

亡梦爱人 提交于 2020-02-28 07:14:58
连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) 断开:exit (回车) 创建授权:grant select on 数据库.* to 用户名@登录主机 identified by \"密码\" 修改密码:mysqladmin -u用户名 -p旧密码 password 新密码 删除授权: revoke select,insert,update,delete om *.* fromtest2@localhost; 显示数据库:show databases; 显示数据表:show tables; 显示表结构:describe 表名; 创建库:create database 库名; 删除库:drop database 库名; 使用库:use 库名; 创建表:create table 表名 (字段设定列表); 删除表:drop table 表名; 修改表:alter table t1 rename t2 查询表:select * from 表名; 清空表:delete from 表名; 备份表: mysqlbinmysqldump -h(ip) -uroot -p(password) databasenametablename > tablename.sql 恢复表: mysqlbinmysql -h(ip) -uroot -p

mysql共享锁与排他锁

不想你离开。 提交于 2020-02-28 05:48:49
mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流。 共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。 排他锁又称为写锁,简称X锁,顾名思义,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据就行读取和修改。 对于共享锁大家可能很好理解,就是多个事务只能读数据不能改数据,对于排他锁大家的理解可能就有些差别,我当初就犯了一个错误,以为排他锁锁住一行数据后,其他事务就不能读取和修改该行数据,其实不是这样的。排他锁指的是一个事务在一行数据加上排他锁后,其他事务不能再在其上加其他的锁。mysql InnoDB引擎默认的修改数据语句,update,delete,insert都会自动给涉及到的数据加上排他锁,select语句默认不会加任何锁类型,如果加排他锁可以使用select ...for update语句,加共享锁可以使用select ... lock in share mode语句。所以加过排他锁的数据行在其他事务种是不能修改数据的,也不能通过for update和lock in share mode锁的方式查询数据,但可以直接通过select ...from.

自己动手写一个简易对象关系映射,ORM(单例版和数据库池版)

 ̄綄美尐妖づ 提交于 2020-02-28 03:22:28
准备知识 DBUtils模块 <<-----重点 DBUtils是Python的一个用于实现数据库连接池的模块 此连接池有两种连接模式: DBUtils提供两种外部接口: PersistentDB :提供线程专用的数据库连接,并自动管理连接。 PooledDB :提供线程间可共享的数据库连接,并自动管理连接。 from DBUtils.PooledDB import PooledDB import pymysql POOL = PooledDB( creator=pymysql, # 使用链接数据库的模块 maxconnections=6, # 连接池允许的最大连接数,0和None表示不限制连接数 mincached=2, # 初始化时,链接池中至少创建的空闲的链接,0表示不创建 maxcached=5, # 链接池中最多闲置的链接,0和None不限制 maxshared=3, # 链接池中最多共享的链接数量,0和None表示全部共享。PS: 无用,因为pymysql和MySQLdb等模块的 threadsafety都为1,所有值无论设置为多少,_maxcached永远为0,所以永远是所有链接都共享。 blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错 maxusage=None, # 一个链接最多被重复使用的次数

简易orm、fuckorm

一世执手 提交于 2020-02-28 03:21:13
一 前言 1 我在实例化一个user对象的时候,可以user=User(name='fixdq',password='123') 2 也可以 user=User()     user['name']='fixdq'     user['password']='123' 3 也可以 user=User()     user.name='fixdq     user.password='password' 前两种,可以通过继承字典dict来实现,第三种,用getattr和setattr __getattr__ 拦截点号运算。当对未定义的属性名称和实例进行点号运算时,就会用属性名作为字符串调用这个方法。如果继承树可以找到该属性,则不调用此方法 __setattr__会拦截所有属性的的赋值语句。如果定义了这个方法,self.arrt = value 就会变成self,__setattr__("attr", value).这个需要注意。当在__setattr__方法内对属性进行赋值是,不可使用self.attr = value,因为他会再次调用self,__setattr__("attr", value),则会形成无穷递归循环,最后导致堆栈溢出异常。应该通过对属性字典做索引运算来赋值任何实例属性,也就是使用self.__dict__['name'] = value 二 定义Model基类

简易版ORM

纵然是瞬间 提交于 2020-02-28 03:20:53
一 前言 1 我在实例化一个user对象的时候,可以user=User(name='lqz',password='123') 2 也可以 user=User()     user['name']='allen'     user['password']='123' 3 也可以 user=User()     user.name='allen'     user.password='password' 前两种,可以通过继承字典dict来实现,第三种,用getattr和setattr __getattr__ 拦截点号运算。当对未定义的属性名称和实例进行点号运算时,就会用属性名作为字符串调用这个方法。如果继承树可以找到该属性,则不调用此方法 __setattr__会拦截所有属性的的赋值语句。如果定义了这个方法,self.arrt = value 就会变成self,__setattr__("attr", value).这个需要注意。当在__setattr__方法内对属性进行赋值是,不可使用self.attr = value,因为他会再次调用self,__setattr__("attr", value),则会形成无穷递归循环,最后导致堆栈溢出异常。应该通过对属性字典做索引运算来赋值任何实例属性,也就是使用self.__dict__['name'] = value 二 定义Model基类