
MySQL
Z小繁
这个作者很懒,什么都没留下…
展开
-
Mysql读书笔记
最近在看《疯狂Java讲义》的数据库篇,较为系统的复习一下数据库知识,相关笔记首写与个人有道云笔记,现发于博客,希望和大家一起分享交流。本分类暂只包含MySQL的相关基础知识,后期会逐渐添加数据库优化相关知识。如发现文章有任何问题或你有任何想法,欢迎交流探讨。 注:涉及到的书中观点,版权归原作者所有。欢迎个人转载,但须在文章页面明显位置给出原文连接;未经作者同意原创 2016-01-23 15:16:54 · 465 阅读 · 0 评论 -
11. 集合运算
select查询结果是一个包含一或多条数据的结果集,类似数学里的集合,可进行交(intersect)、并(union)、差(minus)运算。被操作的结果集需满足:两结果集所含数据列的数量相等。两结果集所含数据列的类型必须一一对应。# 集合运算-练习# 必须保证作集合运算的两个结果集的列数、数据类型一一对应## 1、union并运算# 重复的数据只保留一原创 2016-01-23 15:44:14 · 1928 阅读 · 0 评论 -
MySQL查询缓存 --《高性能MySQL》读书笔记
Query Cache(QC) 缓存完整的Select结果,当查询命中该缓存,MySQL会立刻返回结果,跳过解析、优化和执行阶段。1、如何判断缓存命中 缓存存放在一个引用表中,通过哈希值引用。哈希值包括查询本身、待查数据库、客户端协议版本等可能影响返回结果的信息。注:当表被lock tables锁住时,仍可以通过查询缓存返回数据。任何字符不同原创 2016-02-05 11:13:37 · 1963 阅读 · 0 评论 -
Navicat新建函数
如果想在数据库里插入大量数据,或者更新多个字段,一条条处理,无疑是噩梦。好在Navicat提供了相关的函数。例:从【指定OrderId开始】将【loop_times个】BuyTradeNO字段更新为OrderId字段的值方法:1、数据库里选择函数,右键【新建函数】;2、函数向导中选择【过程】,模式选择【IN】,点击完成;3、在定义一栏添加函数体BEGIN原创 2016-02-05 11:16:37 · 15458 阅读 · 0 评论 -
MySQL实现函数调用
需求: 利用函数生成学生成绩表,成绩随机生成。要求: 成绩调用函数实现(避免函数主体内多次执行相同方法,rand比较简单,遇到复杂的,还是采用调用比较好)实现:新建函数-函数(init_grade)BEGIN DECLARE core DOUBLE; # 50=<core<=100 set core原创 2016-02-05 11:18:29 · 5227 阅读 · 0 评论 -
LIMIT
① Select * from table LIMIT m; # 从0开始,m条记录② Select * from table LIMIT m,n; # 从m+1条记录开始,n条记录【查询语句偏移量offset很大的时候,效率较低】③ Select * from table LIMIT rows OFFECT offset; 第一个自变量指定:返回的第一行的偏移量原创 2016-02-05 12:00:34 · 1917 阅读 · 0 评论 -
group by
SELECT expr,... FROM table [WHERE where_definition] [GROUP BY~[ASC|DESC],...] [HAVING where_definition] [ORDER BY~[ASC|DESC],...] [LIMIT~]每个分组只返回一行数据;欲返回所有数据用order by。where指定范围;havin原创 2016-02-05 12:01:40 · 1862 阅读 · 0 评论 -
MySQL远程连接
MySQL默认情况下用户只允许在本地登录,如果需要远程登录该如何操作呢?1、创建新用户格式: grant 权限 on 数据库名.表名 用户@登录主机 identified by "用户密码";grant select,update,insert,delete on *.* to name@IP identified by "password"; 创原创 2016-02-05 17:59:30 · 1805 阅读 · 0 评论 -
MySQL之grant、revoke用法
grant 权限 on 数据库名.表名 用户@‘登录主机’ identified by "用户密码";Note: 登陆主机、密码必须加引号,单双皆可。1、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利grant select, insert, update, delete on testdb.* to common_user@'%';原创 2016-02-05 18:04:49 · 5161 阅读 · 0 评论 -
MySQL性能优化实战
一、MySQL优化原则:where子句哪些操作将导致MySQL引擎放弃索引而进行全表扫描?对字段进行where num is null判断。【给num设置默认值0】使用!=或使用or连接条件,如:where num=10 or num=20【select……union all select……替代】使用in或not in,如:where num in(1,2,3)【连续数值可用原创 2016-02-05 11:11:31 · 2278 阅读 · 0 评论 -
10. 子查询
子查询就是在查询语句中嵌套另一个查询,子查询支持多层嵌套。子查询出现位置:form语句后当成数据表(实质是一个临时视图,so这种方法也被称为内视图);where条件后作为过滤条件的值。Note:子查询要用括号括起来;把子查询作为数据表时(出现在from后),可为其起别名,作为前缀来限定数据列时,必须起别名【临时视图】。作为过滤条件where时,将子查询放在比较运原创 2016-01-23 15:43:36 · 1847 阅读 · 0 评论 -
9. 多表连接查询
多表查询可理解为一个嵌套循环遍历。多表连接查询有两种规范,较早的SQL92规范支持:等值连接:连接条件要求两列值相等非等值连接广义笛卡尔积:没有任何连接条件(n*m条记录)外连接 【MySQL 不支持 92规范的外连接】 外连接就是在外连接符所在的表中增加一个”万能行“,这行记录的所有数据都是null,而且该行可以与另一个表中所有不满足条件的记录匹配。即可以把另一原创 2016-01-23 15:42:58 · 1842 阅读 · 0 评论 -
8. 分组和组函数
组函数即《数据库函数》中提到的多行函数。每组记录作为整体计算,并返回一个结果,而不是每条记录返回一个结果。常用的5个组函数:(以下expr均可以是变量、常量、数据列,无特别说明则数据类型可为任意类型)AVG([DISTINCT|all] expr):计算多行expr的平均值,数据类型:数值型。DISTINCT:不计算重复值;all(省略时效果相同):需要计算重复值。原创 2016-01-23 15:42:06 · 1908 阅读 · 0 评论 -
Mysql存储引擎
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。查看方法:show engines; MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表。 若要修改默认引擎,可以修改配置文件中的defaul原创 2016-01-23 15:20:56 · 394 阅读 · 0 评论 -
1.SQL语句基础之DDL
SQL(Structured Query Language 结构化查询语言)标准SQL语句类型查询语句select关键字,SQL语句中最复杂但功能最丰富DML数据操作语言insert、update、deleteDDL数据定义语言create(创建)、alt原创 2016-01-23 15:30:52 · 518 阅读 · 0 评论 -
2.数据库约束
约束: 在表上强制执行的数据校验规则,保证数据库里数据的完整性。当表中数据相互依赖时,保证相关数据不被删除。 也是数据库对象,也有自己的名字。 约束通常无法修改。大部分数据库支持一下5种约束:NOT NULL:非空约束,指定某列不能为空;UNIQUE:唯一约束,指定某列或几列组合的数据不能重复;PRIMARY KEY:主键,指定原创 2016-01-23 15:32:11 · 763 阅读 · 0 评论 -
1.5 MySql建表
create table [模式名]表名(# 列定义)例:向study数据库中插入表personCREATE TABLEIF NOT EXISTS study.person ( id INT(11)NOTNULL AUTO_INCREMENT, username VARCHAR(20)NOTNULL,原创 2016-01-23 15:33:26 · 551 阅读 · 0 评论 -
3.MySQL索引
索引(Index)是帮助MySQL高效获取数据的数据结构。是对数据库表中一列或多列的值进行排序的一种结构。索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。(图书目录) 索引是存放在模式(schema)中的数据库对象,在数据字典中独立存放,必须从属于某个数据表,和数据表一样属于数据库对象。优点:加原创 2016-01-23 15:38:03 · 632 阅读 · 0 评论 -
4.视图
计算机数据库中的视图是一个虚拟表,其内容由查询定义;不是数据表,因为它不能存储数据;只是一个或多个数据表中数据的逻辑显示。本质:一条被命名的SQL语句。视图好处:对机密数据提供安全保护,限制对数据的访问;简化复杂的查询;提供数据的独立性;分解复杂的查询需求,创建多个视图获取数据。将视图联合起来就能得到需要的结果了。提供对相同数据的不同显示。语法:CREATE OR原创 2016-01-23 15:39:04 · 508 阅读 · 0 评论 -
5.DML语句
DML语句用于操作数据表的数据,如:插入、修改、删除。insert into、update和delete from三个命令组成。1、insert intoINSERT INTO `grade` (`id`, `math`)VALUES('1','83'); 若省略表名后的括号及括号内的列名列表,默认将为所有列插入值。若某列值不确定,则为该列分配一个null值。INSERT原创 2016-01-23 15:39:49 · 1532 阅读 · 0 评论 -
6.单表查询
1、语法格式 select语句的功能就是查询数据,在SQL语句中功能最丰富,可单表查询、多表连接查询、子查询。SELECT NAME, gradeFROM studentWHERE grade >80;数据源student可以是表、视图等;select后列表用于确定选择哪些列(* 即所有列),where确定选择哪些行(无则选出所有行)。selec原创 2016-01-23 15:40:38 · 1699 阅读 · 0 评论 -
7. 数据库函数
每个数据库都会在标准的SQL基础上扩展一些函数。函数一般会有一或多个输入(即参数),最终只返回一个值作为返回值。 SQL中的函数是独立的程序单元。调用时无需使用任何类、对象作为调用者。多行函数(也称 聚集函数、分组函数) 对多行输入整体计算,最后只得到一个结果。主要完成一些统计功能,在大部分数据库中基本相同。单行函数原创 2016-01-23 15:41:20 · 1712 阅读 · 0 评论 -
MySQL运行外部脚本的那些坑
今天从cmd命令行运行MySQL脚本.sql,参照网上教程,大致如下两种方法:未登录:D:\mysql\bin\mysql –uroot –p123456 -Dtest登陆:Mysql>source d:\test\ss.sql各种不要引号、单引号、双引号均报错,ERROR:Failed to open file ''E:\t_user.sql'', error: 22原创 2016-02-15 17:25:06 · 2301 阅读 · 0 评论