逻辑架构: 1.连接层 2.服务层 3.引擎层(插拔式) 4.存储层 存储引擎: 常用的有:MyISAM.InnoDB 查看命令:show variables like '%storage_engine%'; 索引:[单值.复合] 创建索引:create index idx_user_name(索引名字) on user(表名) (name)(字段名) 定义:索引是一种数据结构(帮助MySQL高效的获取数据) 目的:提高查询效率,可以类比字典[可以理解为排好序的快速查找数据结构] 但同时也会影响…
mysql左连接 右连接 内连接的区别 1.内连接,显示两个表中有联系的所有数据; 2.左链接,以左表为参照,显示所有数据,右表中没有则以null显示 3.右链接,以右表为参照显示数据,,左表中没有则以null显示 例子: ------------------------------------------------- a表     id   name     b表     id   job   parent_id 1   张3                   1     23     1…
Oracle左连接,右连接 数据表的连接有: 1.内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2.外连接: 包括 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 3.自连接(连接发生在一张基表内) select a.studentno, a.studentname, b.classname   from students a, classes b   where a.classid(+) = b.classid; S…
MySQL中concat函数 使用方法: CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意: 如果所有参数均为非二进制字符串,则结果为非二进制字符串. 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串. 一个数字参数被转化为与之相等的二进制字符串格式:若要避免这种情况,可使用显式类型 cast, 例如: 1 SELECT CONCAT(CAST(int_col AS CHAR), char_col) My…
序言 之前写到MySQL对表的增删改查(查询最为重要)后,就感觉MySQL就差不多学完了,没有想继续学下去的心态了,原因可能是由于别人的影响,觉得对于MySQL来说,知道了一些复杂的查询,就够了,但是我认为,不管有没有用,现在学着不懂的东西,说明就是自己薄弱的地方,多学才能比别人更强 --WH 一.什么是索引?为什么要建立索引? 索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有…
一.什么是索引?为什么要建立索引? 索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间. 例如:有一张person表,其中有2W条记录,记录着2W个人的信息.有一个Phone的字段记录每个人的电话号码,现在想要查询出电话号码为xxxx的人的信息. 如果没有索引,那么将从表中第一条…
序言 之前写到MySQL对表的增删改查(查询最为重要)后,就感觉MySQL就差不多学完了,没有想继续学下去的心态了,原因可能是由于别人的影响,觉得对于MySQL来说,知道了一些复杂的查询,就够了,但是我认为,不管有没有用,现在学着不懂的东西,说明就是自己薄弱的地方,多学才能比别人更强 --WH 一.什么是索引?为什么要建立索引? 索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有…
一.MySQL中的索引###<1>索引的概念 索引就是一种数据结构(高效获取数据),在mysql中以文件的方式存在.存储建立了索引列的地址或者指向. 文件 :(以某种数据 结构存放) 存放地址 指向数据 类似一本书的目录,能够提高检索效率. ###<2>特点 提高数据的获取效率,也是数据库优化的一部分. 在多表连接时,作为条件加速连接的速度 . 在分组和排序查询时,作为条件,能够减少分组和排序所消耗的时间. 创建和维护索引 会消耗时间,随着数据量的增加消耗的时间也增加 索引文件会占…
出处: 一步一步带你入门MySQL中的索引和锁 索引 索引常见的几种类型 索引常见的类型有哈希索引,有序数组索引,二叉树索引,跳表等等.本文主要探讨 MySQL 的默认存储引擎 InnoDB 的索引结构. InnoDB的索引结构 在InnoDB中是通过一种多路搜索树——B+树实现索引结构的.在B+树中是只有叶子结点会存储数据,而且所有叶子结点会形成一个链表.而在InnoDB中维护的是一个双向链表. 你可能会有一个疑问,为什么使用 B+树 而不使用二叉树或者B树? 首先,我们知道访问磁盘需要访问到…
MySQL中的SQL的常见优化策略 MySQL中的索引优化 MySQL中的索引简介 一. 索引的优点 为什么要创建索引?这是因为,创建索引可以大大提高系统的查询性能. 第一.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性. 第二.可以大大加快 数据的检索速度,这也是创建索引的最主要的原因. 第三.可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义. 第四.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间. 第五.通过使用索引,可以在查询的过程…
原文:http://www.andyqian.com/2016/04/06/database/mysqleindex/ 在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索引 ① 普通索引 1234567 create table t_dept( no int not null primary key, name varchar(20) null,…
MySQL中是索引: --.唯一索引: 一行中的内容不能一样, create t2( id int , num int, unique weiyisuiyin (id,num) ) --唯一; --约束不能重复(可以为空) --主键不能重复 --加速查找 一个表中可以有多列索引,组合起来具有唯一性;…
MySQL中的SQL的常见优化策略 MySQL中的索引优化 MySQL中的索引简介 过多的使用索引将会造成滥用.因此索引也会有它的缺点.虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT.UPDATE和DELETE次数大于查询次数时,放弃索引.因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件.建立索引会占用磁盘空间的索引文件.一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快.索引只是提高效率的一个因素,如果你的MySQL…
问题:请讲下mysql中的索引 分析:mysql中有很多索引,要对对这些索引有所掌握,还要弄清楚每种索引的本质? 回答要点: 主要从以下几点去考虑 1.索引的本质是什么 2.mysql的索引分类: 3.每种分类的依据: mysql在日常的开发中使用非常广泛,经常会提到的一句是在进行优化的时候,要对索引进行优化,那么到达什么是索引那. 索引其实是一种数据结构,建立索引的目的是为了提高查询效率.如果没有索引那么存储在磁盘中的数据(mysql中的数据归根结底是存储在磁盘中的),就需要扫描磁盘,把磁盘中…
1.MySQL中的索引 在MySQL,索引是由B+树实现的,B+是一种与B树十分类似的数据结构. 形如下面这种: 其结构特点: (1)有n课子树的结点中含有n个关键码. (2)非根节点子节点数: ceil(m/2)<= k <= m(ceil是天花板函数的意思,也就是向上取整,比如ceil(1.2)=2 ),m为该B+树的阶数.根节点最少有两个子节点,最多同样为m个. (2)叶子节点包含了全部关键码的信息,及指向含有这些关键码记录的指针.并且叶子节点根据关键码的大小自小至大的顺序链接,叶子节点…
转自 http://www.jellythink.com/archives/924,博客比价清晰 我理解上文的是SQL执行顺序 总体方案.当你加入索引了以后,其实他的执行计划是有细微的变化,比方说刚开始不再先生成笛卡尔积,而是进行SQL改写和评估,看使用哪个索引 扫描行数更少,成本更低.然后利用mysql嵌套循环的机制,找到表的执行顺序.最后确定好读取方式以后 先通过索引找到最佳左表,然后嵌套循环找到右表,然后按照SQL执行顺序进行. 这个也解释了索引 先加在WHERE 字段 然后处理GROUP…
谈起JavaScript的 事件,事件冒泡.事件捕获.阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免. DOM事件标准定义了两种事件流,这两种事件流有着显著的不同并且可能对你的应用有着相当大的影响.这两种事件流分别是捕获和冒泡.和许多Web技术一样,在它们成为标准之前,Netscape和微软各自不同地实现了它们.Netscape选择实现了捕获事件流,微软则实现了冒泡事件流.幸运的是,W3C决定组合使用这两种方法,并且大多数新浏览器都遵循这两种事件流方式. 1事件传播--冒泡与捕…
假设代码顺序书写如下:try → catch → finally → 其他代码 则: 1.正常执行顺序:try → catch → finally → 其他代码 2.try,catch和finally和其他代码的执行条件: 先执行try. 只要try中有异常,catch就会执行: finally总会执行: 其他代码: 如果finally中没有return:其他代码会执行: 如果finally中有return:其他代码不会执行: 3.方法的返回结果确定: finally 有return:(fina…
一. 初始化SQL语句 /*join 建表语句*/ drop database if exists test; create database test; use test; /* 左表t1*/ drop table if exists t1; )); ,'t1a'); ,'t1b'); ,'t1c'); ,'t1d'); ,'t1f'); /* 右表 t2*/ drop table if exists t2; )); ,'t2b'); ,'t2c'); ,'t2d'); ,'t2f'); ,'…
下面是两张表 表stu 表tech 1.右连接 当使用右连接语句查询时,返回结果如下: 1 SELECT stu.id,stu.name,stu.classe_name,tech.id,tech.name FROM stu RIGHT JOIN tech on stu.classe_name=tech.classe_name; 从结果中可以看出,tech表中被查询的字段会被全部显示出来,而stu表中,只有与表tech的classe_name相同的条目的相应字段才会被显示出来. 右连接即:返回右边…
mysql> desc student;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| ID | int(11) | NO | PRI | 0 | || NAME | varchar(16) | YES | | NULL | || A…
一般所说的左连接,右连接是指左外连接,右外连接.做个简单的测试你看吧.先说左外连接和右外连接:[TEST1@orcl#16-12月-11] SQL>select * from t1;ID NAME---------- --------------------1 aaa2 bbb[TEST1@orcl#16-12月-11] SQL>select * from t2;ID AGE---------- ----------1 203 30左外连接:[TEST1@orcl#16-12月-11] SQL…
1.外链接之左连接:优先显示左表全部记录   left join 在内连接的基础上保留左表的记录 即便左表有一条记录和右表没有关系,也把他留下 mysql> select * from employee left join department on employee.dep_id = department.id; +----+------------+--------+------+--------+------+--------------+ | id | name | sex | age…
有两张表:一张A表he一张B表 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 :right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录:inner join(等值连接) 只返回两个表中联结字段相等的行: 表A数据: 表B数据: 1.查询两张表中都有的记录: sql: SELECT a.* FROM a INNER JOIN b ON a.a_id = b.b_id; 2.查询表A中有,表B中没有的数据: sql: SELECT a.…
假设有A,B两个表.     表A记录如下:   aID     aNum   1     a20050111   2     a20050112   3     a20050113   4     a20050114   5     a20050115     表B记录如下:   bID     bName   1     2006032401   2     2006032402   3     2006032403   4     2006032404   8     2006032408…
左连右连还是内连这个其实你不需要关心.只需要根据实体的映射关系写查询,框架会自动帮你生成的. 至于linq查询语法与扩展方法的效率,应该是一样的,比如: var users=(from u in db.Users where u.UserRoleId==1 select u) .ToList();  var users2=db.Users.Where(u=>u.UserRoleId==1).ToList(); 这两句查询实际上是等效的. inner join:  var =from x in d…
SELECT * FROM Table_A GO SELECT * FROM Table_B GO --内连接 SELECT a.*, b.* FROM Table_A a JOIN Table_B b ON a.ID = b.ID SELECT a.*, b.* FROM Table_A a INNER JOIN Table_B b ON a.ID = b.ID GO --内连接等价直接多表from的形式 SELECT a.*, b.* FROM Table_A a INNER JOIN Ta…
1.左连接: var LeftJoin = from e in ListOfEmployees join d in ListOfDepartment on e.DeptID equals d.ID into JoinedEmpDept from d in JoinedEmpDept.DefaultIfEmpty() select new { EmployeeName = e.Name, DepartmentName = d!= null ? d.Name : null }; 2.右连接: var…
Mysql中两个select语句连接需要用到操作符 SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列的顺序必须相同. SQL UNION 语法 SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2 注释:默…
1.左连接 :left join 2.右连接:right join 3.内连接:inner join 4.外连接:outer join 5.全连接:full join…