MySQL-其它整理
一:基本操作
插入
INSERT INTO 表名称 VALUES (值1, 值2,....);
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....);
更新
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值;
删除
DELETE FROM 表名称 WHERE 列名称 = 值;
TRUNCATE TABLE 表名称 ; #清空表
二:FOREIGN KEY 约束
一个表中的外键指向另一个表中的主键。用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。Persons 表中的 "Id_P" 列是 Persons表中的 主键,Orders表中的 "Id_P" 列是Orders表中的 外键。
CREATE TABLE `Orders` (
`Id_O` INT(11) NOT NULL,
`OrderNo` INT(11) NOT NULL,
`Id_P` INT(11) DEFAULT NULL,
PRIMARY KEY (`Id_O`),
KEY `Id_P` (`Id_P`),
FOREIGN KEY (`Id_P`) REFERENCES `Persons` (`Id_P`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 CREATE TABLE `Persons` (
`Id_P` INT(11) NOT NULL,
`LastName` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (`Id_P`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
三:UNIQUE 约束,用来约束列的唯一性,每个表可以有多个 UNIQUE 约束,但只能有一个 PRIMARY KEY 约束。
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (Id_P)
)
四:创建索引
本例会创建一个简单的索引,名为 "PersonIndex",在 Person 表的LastName 列:
CREATE INDEX PersonIndexON Person (LastName) ;
如果您希望以降序索引某个列中的值,您可以在列名称之后添加保留字DESC:
CREATE INDEX PersonIndexON Person (LastName DESC) ;
假如您希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开:
CREATE INDEX PersonIndexON Person (LastName, FirstName)
五:将表的主键值插入到其它列
UPDATE
`coupon` c1,
`coupon` c2
SET c1.`sequence_num` = c2.`coupon_id` WHERE c1.coupon_id = c2.coupon_id
六:将查出来的数据插入导指定表
INSERT INTO `activity_publicity_cust`(
`match_cust_id`,`is_delete`,`create_time`,`update_time`
)
SELECT
`match_cust_id`,
(SELECT 1) is_delete,
NOW() ce,
NOW() up
FROM `activity_match_cust` WHERE `match_id` IS NULL AND `customer_id` IS NULL
七:select查询执行顺序
(7) SELECT
(8) DISTINCT <select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) HAVING <having_condition>
(9) ORDER BY <order_by_condition>
(10) LIMIT <limit_number> SELECT执行顺序一共分为10步,最先执行FROM操作,最后执行LIMIT操作。其中每一次操作都会产生一张虚拟表作为下一个处理的输入,只是这些虚拟的表对用户来说是透明的,只有最后一个虚拟的表才会被作为结果返回。
#过程分析
1、FORM: 对FROM左表和右表计算笛卡尔积,产生虚表VT1。
2、ON: 对虚表VT1进行ON过滤,只有那些符合<JOIN-CONDITION>的行才会被记录在虚表VT2中。
3、JOIN: 如果指定了OUTER JOIN(比如left join、 RIGHT join),只有匹配的行才会被插入到虚拟表VT3中。
4、WHERE: 对虚拟表VT3进行WHERE条件过滤。只有符合<WHERE-CONDITION>的记录才会被插入到虚拟表VT4中。
5、GROUP BY: 根据group by子句中的列,对VT4中的记录进行分组操作,产生VT5。
6、HAVING: 对虚拟表VT5应用having过滤,只有符合<HAVING-CONDITION>的记录才会被 插入到虚拟表VT6中。
7、SELECT: 执行select操作,选择指定的列,插入到虚拟表VT7中。
8、DISTINCT: 对VT7中的记录进行去重。产生虚拟表VT8.
9、ORDER BY: 将虚拟表VT8中的记录按照<order_by_list>进行排序操作,产生虚拟表VT9.
10、LIMIT:取出指定行的记录,产生虚拟表VT10, 并将结果返回。
八:select case查询
SELECT
CASE counterType
WHEN 1 THEN 'CTP'
WHEN 2 THEN 'NULL'
WHEN 3 THEN '飞鼠'
ELSE 'default'
END AS counterName
FROM urls
九:SQL执行时间
#查询版本5.0之后支持
SELECT VERSION();
#查看profile是否开启
SHOW VARIABLES LIKE "%pro%" SET profiling =1;
SELECT 1;
SET profiling =1;
SELECT 2;
SHOW PROFILES; -- 语法:SHOW PROFILE FOR QUERY QUERY_ID 查询ID对应SQL执行时各个操作耗时
SHOW PROFILE FOR QUERY 497
-- 语法:SHOW PROFILE type FOR QUERY QUERY_ID, 可以查看SQL语句执行各种资源耗时
SHOW PROFILE ALL FOR QUERY 497 其中type:
ALL: 显示所有的开销信息
BLOCK IO : 显示块IO相关开销
CPU : 显示cpu 相关开销
IPC: 显示发送和接收相关开销
MEMORY: 显示内存相关开销
PAGE FAULTS:显示页面错误相关开销信息
SOURCE : 显示和Source_function ,Source_file,Source_line 相关的开销信息
SWAPS :显示交换次数相关的开销信息
十:开启自定义函数功能
-- 查看是否开启创建函数的功能
show variables like '%func%';
-- 开启创建函数的功能
set global log_bin_trust_function_creators = 1;
十一:tinyint类型
tinyint 型的字段如果设置为UNSIGNED类型,只能存储从0到255的整数,不能用来储存负数。
tinyint 型的字段如果不设置UNSIGNED类型,存储-128到127的整数。
1个tinyint型数据只占用一个字节;一个INT型数据占用四个字节。
MySQL-其它整理的更多相关文章
- MySQL基础整理(一)之SQL基础(未完成)
大家好,我是浅墨竹染,以下是MySQL基础整理(一)之SQL基础 1.SQL简介 SQL(Structure Query Language)是一种结构化查询语言,是使用关系模型的数据库应用语言. 2. ...
- MySQL 安全整理
MySQL 安全整理 关闭外网的端口访问. 使用高位的端口号. 如果需要外网访问不给最高的权限. 如果需要外网访问也是绑定客户端. To be continued
- PHP调用mysql函数整理
mysql函数整理 名称:mysql_connect() 用途:打开非持久的 MySQL 连接.如果成功,则返回一个 MySQL 连接标识,失败则返回 FALSE. 语法:mysql_connect( ...
- MySQL 语句整理 2019-5-3
MySQL 语句整理 在整理完Oracle的一些常见用语句后,由于MySQL的语法跟Oracle略有不同,随跟PN的MySQL视频进行了间接整理. 查询薪水大于1800, 并且部门编号为20或30的员 ...
- 最全mysql笔记整理
mysql笔记整理 作者:python技术人 博客:https://www.cnblogs.com/lpdeboke Windows服务 -- 启动MySQL net start mysql -- 创 ...
- Centos7搭建php+mysql环境(整理篇)
终于将mysql+php环境搭建成功,将之前的整理一下,环境:centos7,本机IP:192.168.1.24,数据库用户名及密码都设为root,测试文件路径:/var/www/html 1.取消c ...
- Mysql基本操作整理
1.登录数据库 格式: mysql -h主机地址 -u用户名 -p用户密码 –P端口 –D数据库 –e “SQL 内容”>mysql -uroot -p 数据库名称~~~~~~~~~~~~~~~ ...
- MysqL碎片整理优化
先来说一下什么是碎片,怎么知道碎片有多大! 简单的说,删除数据必然会在数据文件中造成不连续的空白空间,而当插入数据时,这些空白空间则会被利用起来.于是造成了数据的存储位置不连续,以及物理存储顺序与理论 ...
- MySQL 笔记整理(16) --“order by”是怎么工作的?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 16) --“order by”是怎么工作的? 在林老师的课程中,第15 ...
- MySQL 笔记整理(1) --基础架构,一条SQL查询语句如何执行
最近在学习林晓斌(丁奇)老师的<MySQL实战45讲>,受益匪浅,做一些笔记整理一下,帮助学习.如果有小伙伴感兴趣的话推荐原版课程,很不错. 1) --基础架构,一条SQL查询语句如何执行 ...
随机推荐
- 服务器在没有request请求时是什么状态
服务器,例如web服务器,在没有接受到request请求时,它是一种什么状态? 是监听状态,就像电灯泡在没通电的时候,没法光,灯泡不会不停的问电线有电吗?有电吗?而是电来了,状态就发生了改变! 服务器 ...
- selenuim&PhantomJS&Beautifulsoup练习经典实例
# coding = utf-8__autor__ = 'litao' from selenium import webdriverfrom selenium.webdriver.common.by ...
- Note:目录2
ylbtech-Note:目录2 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 作者:ylbtech出处:http://ylbtech ...
- jenkins持续集成、插件以及凭据
Jenkins介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins功能包括: ...
- 关于Vue+iview的简单下拉框滚动加载
话不多说,直接上代码,作用是下拉框内容无限滚动加载: Html: <FormItem style="position:relative" label="用户名:&q ...
- 队列问题非STL解决方案
队列问题非STL解决方案 常年使用STL解决队列问题,以至于严重生疏队列的根本原理... 直到今日 被老师被迫 使用算法原理解决问题,方才意识到我对队列一窍不通... ...直到 经过一系列的坑蒙拐骗 ...
- 排序算法二:归并排序(Merge sort)
归并排序(Merge sort)用到了分治思想,即分-治-合三步,算法平均时间复杂度是O(nlgn). (一)算法实现 private void merge_sort(int[] array, int ...
- 爬虫(六)——存储库(一)MongoDB存储库
目录 存储库--MongoDB 一.安装MongoDB 4.0 1.安装 2.修改数据库文件和日志保存位置设置(可不改) 3.账户管理.远程服务 三.MongoDB数据库操作 1.对库操作 2.对集合 ...
- Yii框架怎么寻找对应视图
render()内容; public function render($view,$data=null,$return=false) { if($this->beforeRender($view ...
- 关于分布式唯一ID,snowflake的一些思考及改进(完美解决时钟回拨问题)
1.写唯一ID生成器的原由 在阅读工程源码的时候,发现有一个工具职责生成一个消息ID,方便进行全链路的查询,实现方式特别简单,核心源码不过两行,根据时间戳以及随机数生成一个ID,这种算法ID在分布式系 ...