MySQL后记

这篇博客的目的是记录一些容易被忽略的MySQL的知识点,以及部分pymysql模块的注意点。

MySQL中的DDL与DML

  • DDL:数据定义语言(Data Definition Language),主要为create、alter、drop、truncate语句。
  • DML:数据操控语言(Data Manipulation Language),包括:insert、update、delete。注意,select语句属于DQL(Data Query Language)。

这两个是我们接触最多的sql语言,除此之外还有数据控制语言(DCL)和事务控制语言(TCL),对于事务来说,DDL语句是立刻执行、无法回滚(rollback)的,DML只有提交(commit)了才会生效。


被忽略的“if not exists”

现在有一个sql脚本,里面的部分建表语句我们已经执行过了该怎么办呢?

# 可以使用以下语句忽略已经建好的表
create table `tablename` if not exists (fields) ; # 若是已经存在,会有一条warning
show warnings;

不过这样的语句在pymysql模块中会抛错。


处理重复数据

在我们实际项目中很可能会遇到很多的重复数据,那么我们如何处理这些重复数据呢?

  • 忽略:

    insert ignore into `tablename` values(...);
  • 替换:

    raplace into ...;
    
    """
    这样做实际上会有两条记录受影响
    1: 先删除原有数据
    2:再插入后来的数据
    """
  • 更新:

    insert into t1 (a,b,c) values (1,2,3) on duplicate key update c=c+1;
    
    # 等同于
    update t1 set c=c+1 where a=1;
    # 如果b也是唯一的
    update t1 set c=c+1 where a=1 or b=2 limit 1;

mysql8的更新

  1. 无法在赋与权限的同时创建用户了!

    # 8.0之前:
    grant 权限们 on 数据库名.表名 to 用户名@主机名 identified by '密码'; # 8.0后 无法一步完成了
    create user 用户名@主机名 identified by '密码';
    grant 权限们 on 数据库名.表名 to 用户名@主机名 with grant option;
  2. 以后将取消float(M,D)以及double(M,D)语法。

  3. 以后将取消浮点型的auto_incremen设置。

  4. 不推荐使用zerofill

补充rlike等同于regexp

MySQL后记的更多相关文章

  1. MySql新版本安装配置

    版本:mysql-5.7.16-winx64 平台Windows 7 x64 1.进入mysql主目录(建议将其移到C或D盘的根目录,并改名为mysql) 2.配置path环境变量(如D:\JAVA\ ...

  2. MYSQL注入天书之后记

    后记 对于工具的看法: 我之所以在每个例子中只写了几个示例,是因为我希望你能通过这一两个示例举一反三将其他的列出来.如果让我来完成每一次完整的注入,应该在知道原理的情况下,必然使用工具或者自己写代码实 ...

  3. 连接数从异常到 300 到 5(RDS MySQL 的一个大坑•后记)

    在 <记 RDS MySQL 的一个大坑> 中,我提到遇到 User juxxxxxxxxxx already has more than 'max_user_connections' a ...

  4. mysql join 和left join 对于索引的问题

    今天遇到一个left join优化的问题,搞了一下午,中间查了不少资料,对MySQL的查询计划还有查询优化有了更进一步的了解,做一个简单的记录: select c.* from hotel_info_ ...

  5. MySQL 常用命令总结

    http://blog.csdn.net/hanxin1987216/article/details/5976860 一.总结 1.Linux系统下启动MySQL的命令: mysqladmin sta ...

  6. 【转】MySQL索引背后的数据结构及算法原理

    摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...

  7. [转]MySQL索引背后的数据结构及算法原理

    摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...

  8. mysql添加索引命令

    创建脚本 1.PRIMARY  KEY(主键索引)mysql>ALTER  TABLE  `table_name`  ADD  PRIMARY  KEY (  `column`  ) 2.UNI ...

  9. mysql 性能优化方案

    网 上有不少MySQL 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果 ...

随机推荐

  1. 树莓派配置文档config.txt说明

    原文连接:http://elinux.org/RPi_config.txt 由于树莓派并没有传统意义上的BIOS, 所以现在各种系统配置参数通常被存在"config.txt"这个文 ...

  2. Linux 和 Vim 常用命令整理

    Sftp常用命令: lcd f:本地切换到 F盘 lpwd本地 当前目录 lls本地 文件列表 put 本地 上传文件到服务器(put输入后,回车会有弹窗,选择上传文件) get下载文件到本地 Lin ...

  3. 浏览器端如何使用VConsole.js调试代码?

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. @codeforces - 506C@ Mr. Kitayuta vs. Bamboos

    目录 @description@ @solution@ @accepted code@ @details@ @description@ n 个竹子,第 i 个竹子初始高度 hi,在每天结束时将长高 a ...

  5. 解决mysql不是内部或外部命令(win10)

    1.原因:cmd当前所在路径为c盘下的system32,由于mysql安装位置不在该目录下,所以会报错. 2.解决方法:配置环境变量 step1:右击此电脑->属性 step2:选择高级系统设置 ...

  6. Head_First_Python(中文版)完整版PDF免费下载_百度云盘

    Head_First_Python(中文版)完整版PDF免费下载_百度云盘 提取码:bjbg 本书特色 根据认知科学和学习理论的最新研究成果,这本书采用一种适合大脑的丰富格式娓娓道来,而不是长篇累牍地 ...

  7. java 基础 流程控制

    鄙人不才,基础不好,趁着闲时简单学习一下,仅作学习分享,如有不正确地方还请各位看客不吝指出. Java流程主要可以分为: 顺序(可以按照正常顺序一步步往下运行的) 选择(三元操作符[?:];if el ...

  8. Python3-socketserver模块-网络服务器框架

    Python3中的socketserver模块简化了编写网络服务器的任务 在实际的开发中,特别是多并发的情况下,socket模块显然对我们的用处不大,因为如果你要通过socket模块来实现并发的soc ...

  9. Python3-设计模式-迭代器模式

    Python3中的迭代器 迭代器模式主要是访问集合元素的一中方式,迭代器不会把整个集合对象加载到内存,而是按照顺序将集合中的元素一个一个的进行迭代,这样每次迭代的时候只取少量的元素,比较省内存 注: ...

  10. Python对文本读写的操作方法【源码】

    Dear ALL 今天给大家分享的是 TXT文本读写方式,也是文件操作最常用的一种方式,主要内容有: 文件写方法 文件读方法 with open() as f 方法 话不多说,码上见: ''' 标题: ...