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查询语句如何执行 ...
随机推荐
- js请求解析xml
xml数据 <?xml version="1.0" encoding="utf-8"?> <table> <node name=& ...
- Ntdll.h
转自:https://www.cnblogs.com/gwsbhqt/p/5092390.html 为了能使用上Ntdll.lib库函数,从几份不完整的Ntdll.h中拼凑整理出了比较完整美观的Ntd ...
- PADS 学习资料
PADS软件: PADS9.5_3in1.7z 链接: http://pan.baidu.com/s/1epO4Y 密码: zltl 打不开程序的博友,请看你的电脑有没有安装常用软件运行库 ...
- Vagrant 手册之 Vagrantfile - 概述
原文地址 Vagrantfile 的主要用途是描述用于项目的机器类型,以及如何配置和提供这些机器. Vagrant 的每个项目运行一个 Vagrantfile,并且 Vagrantfile 应该被提交 ...
- Linear Regression and Gradient Descent
随着所学算法的增多,加之使用次数的增多,不时对之前所学的算法有新的理解.这篇博文是在2018年4月17日再次编辑,将之前的3篇博文合并为一篇. 1.Problem and Loss Function ...
- 应用安全 - Windows操作系统 - 漏洞 - 汇总
FTP弱密码 将FTP服务器的密码更改为强密码 vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO #禁止匿名登录 重启ftp服务 Windows匿名用户整改 ...
- oracle--用户区别sys和system
1.数据库的启动需要以SYSDBA/SYSOPER身份登录. 2.如果在同一主机上使用IPC连接到数据库使用操作系统授权,登录任何一个用户都可以拥有as sysdba和as sysoper. 3.sy ...
- Navicat 破解方法
一.介绍 Navicat是一套快速.可靠的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设.它的设计符合数据库管理员.开发人员及中小企业的需要.Navicat 是以直觉化的图形用户界面而建的 ...
- PHP_CodeIgniter _remap重新定义方法
如果controller定义了_remap方法, 在_remap中重新定义方法 class Test extends CI_Controller{ public function index(){ e ...
- [HDU 5293]Tree chain problem(树形dp+树链剖分)
[HDU 5293]Tree chain problem(树形dp+树链剖分) 题面 在一棵树中,给出若干条链和链的权值,求选取不相交的链使得权值和最大. 分析 考虑树形dp,dp[x]表示以x为子树 ...