MySql学习笔记(二)

MySql学习

第五部分 链接查询

-- 链接是将一个或者两个以上的表按照某个条件链接起来,从中选出需要的数据
-- 5.1 内连接查询
select * from t_book,t_booktype where t_book.bookTypeId=t_booktype.id; 

-- 使用别名
select tb.bookName,tb.author,tby.bookTypeName from t_book tb,t_booktype tby where tb.bookTypeId=tby.id;

-- 5.2 外连接查询
-- 可以查询某一张表的全部数据
-- 5.2.1 左链接查询

select * from t_book LEFT JOIN t_booktype ON t_book.bookTypeId=t_booktype.id; -- 可以查询到表一的全部数据 表二匹配的记录

select * from t_book tb LEFT JOIN t_booktype  tby ON tb.bookTypeId=tby.id; -- 别名
-- 5.2.2 右链接查询
select * from t_book RIGHT JOIN t_booktype ON t_book.bookTypeId=t_booktype.id; -- 可以查询到表二的全部数据 表一匹配的记录

-- 5.3 多条件链接查询
select tb.bookName,tb.author,tby.bookTypeName,tb.price from t_book tb,t_booktype tby where tb.bookTypeId=tby.id AND tb.price>70; -- 查询价格大于70

第六部分 子查询

-- 带in关键字的子查询(一个查询语句的条件可能落在另一个查询结果中)
select * from t_book where bookTypeId in(select id from t_booktype)

-- 带比较运算符的自查询
select * from t_book where price >( select price from t_pricelevel where pricelevel=1);

-- 带Exists关键字的子查询
-- 假如子查询查询到记录,则进行外层查询,否则不进行外层查询
select * from t_book WHERE EXISTS(select * from t_booktype)

-- 带any关键字子查询
-- any 关键字表示满足其中任一条件

-- 查询图书 价格便宜的或者贵的
select *from t_book where price >= ANY (SELECT price from t_pricelevel)

-- 带all关键字的子查询
-- all 关键字表示满足所有条件
select *from t_book where price >= ALL (SELECT price from t_pricelevel) -- 只有贵的才满足所有条件

第七部分 合并结果查询

-- 7.1 UNION
-- 使用union关键字是数据库将所有的结果合并到一起,然后去掉相同的记录
select id from t_book union select id from t_booktype

-- 7.2 UNION ALL 不会去除掉系统记录
select id from t_book union ALL select id from t_booktype

-- 为表和字段取别名
 -- 7.3 为表取别名
-- 格式 : 表名 表的别名

select * from t_book tb where tb.id=1;
-- 7.4 为字段取别名

-- 格式: 属性名 【as】别名
select tb.bookName as bn from t_book tb where tb.id=1;

第八部分 更新 删除 插入

插入

-- 1.给表中所有字段插入数据
insert into t_book VALUES(NULL,'恶意',35,'东野圭吾',1)
-- 2.给指定字段插入数据
insert into t_book (id,bookName,price,author) VALUES(NULL,'人间四月天',35,'林徽因') 

-- 同时插入多条数据
inSERT INTO t_book (id,bookName,price,author,bookTypeId) VALUES(NULL,'恶意2',35,'东野圭吾',1),(NULL,'恶意3',35,'东野圭吾',1)

select * from t_book 

更新

UPDATE t_book set price=120 where bookName='java编程思想'

-- 更改多条数据
UPDATE t_book SET price=40 where bookName LIKE '%恶意%'

删除数据

delete from t_book WHERE id=7;

第九部分 索引

– 索引的引入
– 索引定义:索引是由数据库表中的一列或者多列组合而成,其作用是提高对表中数据的查询速度;

– 索引的优缺点
– 优点:提高查询数据的速度
– 缺点:创建和维护索引的事件增加了

select * from t_book where bookName='测试图书书名1' -- 未加索引前0.071s


 select * from t_book where bookName='测试图书书名1' -- 加索引后0.001s

– 索引分类
– 1.普通索引
– 这类索引可以创建在任何数据类型中
– 2.唯一性索引
– 使用unique参数可以设置,在创建唯一性索引时,限制该索引的值必须是唯一的
– 3.全文索引
– 使用fulltext参数可以设置,全文索引只能创建在char varchar text类型的字段上。主要作用就是提高较大字符串类型的速度,只有MyISAm引擎支持该索引,

Mysql默认引擎不支持
– 4.单例索引
– 在表中可以给单个字段创建索引,单例索引可以使普通索引,也可以是唯一索引,还可以是全文索引
– 5.多列索引
– 多列索引是在表的多个字段创建索引
– 6.空间索引
– 使用SPATIAL参数可以设置空间索引。空间索引只能建立在空间数据类型上,这样可以提高获取空间数据的效率。

– 创建表的时候创建索引
– 创建普通索引

CREATE table t_user(
id INT,
userName VARCHAR(20),
passWord VARCHAR(20),
INDEX(userName)

)

– 创建唯一性索引

CREATE table t_user2(
id INT,
userName VARCHAR(20),
passWord VARCHAR(20),
 UNIQUE INDEX(userName)

)

– 多列索引

CREATE table t_user3(
id INT,
userName VARCHAR(20),
passWord VARCHAR(20),
  INDEX index_userName_passWord(userName,passWord)

)
create table t_user4(
id INT,
userName VARCHAR(20),
passWord VARCHAR(20)
)

– 在已有的表上添加索引

CREATE index index_userName on  t_user4(userName) -- 普通索引

CREATE UNIQUE index index_userName on  t_user4(userName) -- 唯一性索引

CREATE  INDEX index_userName_passWord(userName,passWord) on t_user4(userName,PASSWORD) -- 多列索引

– ALTER table 语句来创建索引

alter table t_user4 add index index_userName(userName) -- 普通索引

alter table t_user4 add  unique index index_userName(userName) -- 唯一性索引

alter table t_user4 add   index index_userName_passWord(userName,PASSWORD) -- 唯一性索引

– 删除索引

drop index index_userName on t_user4

猜你喜欢

转载自blog.csdn.net/m0_37591671/article/details/78005464