MySQL数据库,子查询,索引,Excel导入学习笔记(这个好难...)

子查询:

概念:从原有的查询语句中,嵌入新的查询,来得到我们想要的效果,也称为嵌套查询

注意:

所有的关联查询都可以转化为子查询,但不是所有的子查询都能转化为关联查询

一、where型

语法:

SELECT 值 FROM 表1 WHERE 值= (SELECT 值 FROM 表2 WHERE 条件)

SELECT 值 FROM 表1 WHERE 值 [NOT] IN  (SELECT 值 FROM 表2 WHERE 条件 OR 条件)(多条)

注意:

IN的元素不能超过1000个,IN的效率会较低

some times,exists 代替 IN

例:

SELECT * FROM students WHERE c_no=(SELECT c_no FROM class WHERE c_type='JAVA');

二、from型

概念:把内从的查询结果集作为临时表,供外层SQL再次查询

语法:

SELECT 值 FROM (SELECT * FROM 表1 WHERE 条件)别名,表2 WHERE 条件

SELECT 值,(SELECT 值 FROM 表2 WHERE 条件) 别名 FROM (SELECT * FROM 表1 WHERE 条件)别名;

例:

SELECT s.* FROM (SELECT * FROM students WHERE height>170) s,class WHERE c.c_no=s.c_no;

SELECT s.*,(SELECT c_type FROM class c WHERE c.c_no=s.c_no)课程名称 FROM (SELECT * FROM students WHERE height>170) s;

三、子查询与insert、update、delete

INSERT

例:

将class表中c_type为JAVA的c_no输入到student表中叶铭锋的c_no里

INSERT INTO students(s_no,s_name,c_no) VALUES (3160815037,'叶铭锋',(SELECT c_no FROM classes WHERE c_type='JAVA'));

UPDATE

例:

将学号为3160815037的c_no换成 前端 的c_no

UPDATE students SET c_no =(SELECT c_no FROM classes WHERE c_type='前端') WHERE s_id='3160815037;

DELETE

类似,就不举例了

四、关联子查询

 

五、子查询的效率

子查询的效率低于联合查询

索引

一、索引是如何工作的

概念:

数据库管理系统中的一个排序的数据结构,以协助快速查询,更新数据库表中的数据

二、为表添加索引的代价:

1、数据库的存储空间的占用

2、插入或修改数据的时候要花费较多的时间

三、使用索引的三大原则:

1、数据较少的表不需要建立索引

2、数据较多的情况下,WHERE后的条件,ORDER BY,GROUP BY 等过滤时,后面的字段最好加上索引,根据实际情况,选择PRIMARY KEY,UNIQUE INDEX,索引不是越多越好

3、联合查询,子查询等多表操作时对关键字段加索引

四、索引创建命令

CREATE INDEX 索引名 ON 表名(列名);

CREATE  UNIQUE INDEX 索引名 ON 表名(列名);

CREATE INDEX 索引名 ON 表名 (列名1,列名2);

五、索引的类型

单字段索引

如果不存在索引将会执行全表扫描

例:

CREATE INDEX index_name ON students(s_name);

SELECT * FROM WHERE s_name='叶铭锋';

唯一索引

用于改善性能和保证数据的完整性

例:

CREATE UNIQUE INDEX index_id ON students(s_no);

SELECT * FROM students WHERE s_no=3160815037 and s_name='叶铭锋';

组合索引

例:

CREATE INDEX index_name ON students(s_id,s_name);

SELECT * FROM students WHERE s_no=3160815037 and s_name='叶铭锋';

隐含索引

数据库在创建对象的时候自动创建的,如主键约束和唯一约束 会自动创建索引

六、建立索引的指导原则

1、越小的数据类型越好

2、越简单的数据类型越好

3、尽量避免使用NULL,制定列为NOT NULL 有空值的列很难使用查询优化,可以使用0,特殊值或空字符串代理

七、索引的优缺点

优点:加快查询速度

缺点:降低増改删的速度,增大了表的文件大小

八、删除索引

DROP INDEX 索引名 ON 表名

ALTER INDEX 索引名(生产系统不建议使用索引的修改,数据库执行时无法进行查询操作)

EXCEL导入

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值