MySQL笔记2

MySQL笔记
1、类型:关系型mysql oracle sqlserver sybase DB2
非关系型(列式、nosql)
2、大型 小型
注意:区别不是数据量,而是性能。
3、MySQL对于字母大小写不敏感
注意:所有的操作需要在英文半角模式下输入
4、MySQL默认的引擎的存储过程为自动进行的
InnoDB是默认的数据库存储引擎,他的主要特点有:
(1)可以通过自动增长列,方法是auto_increment。
(2)支持事务。默认的事务隔离级别为可重复度,通过MVCC(并发版本控制)来实现的。
(3)使用的锁粒度为行级锁,可以支持更高的并发;
(4)支持外键约束;外键约束其实降低了表的查询速度,但是增加了表之间的耦合度。
(5)配合一些热备工具可以支持在线热备份;
(6)在InnoDB中存在着缓冲管理,通过缓冲池,将索引和数据全部缓存起来,加快查询的速度;
(7)对于InnoDB类型的表,其数据的物理组织形式是聚簇表。所有的数据按照主键来组织。数据和索引放在一块,都位于B+数的叶子节点上;
当然InnoDB的存储表和索引也有下面两种形式:
(1)使用共享表空间存储:所有的表和索引存放在同一个表空间中。
(2)使用多表空间存储:表结构放在frm文件,数据和索引放在IBD文件中。分区表的话,每个分区对应单独的IBD文件,分区表的定义可以查看我的其他文章。使用分区表的好处在于提升查询效率。
对于InnoDB来说,最大的特点在于支持事务。但是这是以损失效率来换取的。
5、关系型数据库的范式(六种)
https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E8%8C%83%E5%BC%8F/7309898?fr=aladdin

6、MySQL数据类型
varchar:表示字符串,长度为:0~255之间
注意:如果主键为varchar类型,则长度一般给36。
int:表示数字,不需要指定长度
自动递增:每添加一条数据,则该字段的值自动加一,如果有数据被删,该字段的值不会重置,有新增数据时,根据记录的最大值继续递增。
注意:主键为当前表中添加主键约束的字段,可以有多个
主键约束(主要功能):唯一(不重复) 默认添加索引
7、SQL结构化查询语言包含6个部分
1、数据查询语言(DQL: Data Query Language)***
2、数据操纵语言(DML:Data Manipulation Language)**
3、事务处理语言(DPL)
4、数据控制语言(DCL)*
5、数据定义语言(DDL)*
6、指针控制语言(CCL)
https://blog.csdn.net/u013544734/article/details/80869135

注意:在Navicat中,所有的MySQL关键字都以蓝色显示
注意:两条语句不能同时执行。
DQL:数据查询语言(select)
1、全查:查询指定表中的全部数据
select * from yingxiong
select关键字表示查询
from关键字表示数据来源(后面跟要查询的表名称)
yingxiong表示要查询的数据所在的表
*:表示缺省,为全部字段的意思(查询全部字段)。
2、指定字段查询
select y_name,y_daZhao,y_index from yingxiong
注意:多个字段之间使用逗号(“,”)间隔
3、单条件查询
select * from yingxiong where y_sex=‘女’;
where:关键字,表示条件,后面跟条件语句(表达式)
表达式:例如:y_sex=’女’或 y_age=18
注意:使用引号可以正常查询数据,没有引号时中文为值进行查询将报错,所以,写SQL语句时,推荐统一都是用单引号对值进行包裹。
注意:数字作为值,不加引号时可以进行算数运算
4、多条件查询
select * from yingxiong where y_sex=’男’ and
y_weizhi=’上单’;
注意:and为条件连接,表示查询结果要同时满足and关键字两边的条件
条件连接:and(&&) or(||)
5、关系运算
select * from yingxiong where y_age > ‘20’;
查询年龄大于20的所有英雄的所有数据
关系运算符:= > < >= <= !=
6、逻辑运算
select * from yingxiong where !(y_age = ‘20’);
查询年龄不等于20的所有英雄的所有数据。
逻辑运算符:&&(and) ||(or) !(not)
注意:使用!时,需要将要否定的条件使用圆括号进行包裹,而not不需要,但如果在多条件查询且不加括号时,not只能否定离自己最近的条件。
7、算数运算
select * from yingxiong where (y_age % 10) = ‘6’;
查询年龄对10取余,值为6的所有英雄的所有数据。
算术运算符:+ - * / %
注意:算数运算可以使用在所有涉及字段的位置。
8、命名别名
select y_index,y_age+1 as y_age,y_weizhi from yingxiong;
将查询到的y_age+1字段名称重新命名为y_age.
as:关键字,表示命名别名,关键字前面为要命名别名的字段或查询结果,关键字后面为别名。
注意:as关键字可以省略。
9、模糊查询
select * from yingxiong where y_daZhao like ‘%穿%’
查询y_daZhao字段的值中含有“穿”字的英雄的所有数据。

select * from yingxiong where y_daZhao like ‘穿%’
查询y_daZhao字段的值中以“穿”字开头的英雄的所有数据。

select * from yingxiong where y_daZhao like ‘%穿’
查询y_daZhao字段的值中以“穿”字结尾的英雄的所有数据。

注意:%(通配符)任意多个字符,_任意单个字符
10、空值查询
select * from yingxiong where y_name is Null;
查询y_name值为默认空的数据

select * from yingxiong where y_name = ‘’;
查询y_name值为空(没有值)的数据
11、区间查询
select * from yingxiong where y_age between 20 and 50;
查询英雄表中y_age的值在20-50(包含20和50)之间的数据。

等价于:select * from yingxiong where y_age >= 20 and y_age <= 50;
12、以集合方式查询
select * from yingxiong where y_age in (20,50);
查询yingxiong表中y_age字段值为20或50的所有数据。

等价于:select * from yingxiong where y_age = 20 or y_age = 50;
13、排序
select * from yingxiong order by y_age
将查询结果按照y_age字段值得升序进行排列。
order by 关键表示排序,后面跟要排序的字段,如果要根据多个字段进行排序,则字段之间使用逗号间隔。
排序方式:升序(asc 默认) 降序(desc)
注意:默认空值按照最小进行排列
14、分页查询
select * from yingxiong limit 2,5;
查询yingxiong表中,从位置2开始,共5条数据
注意:数据位置从0开始。
limit关键字表示分页查询,后面跟数字,如果为两个数字时,则第一个数字表示从位置几开始查,第二个数字表示一共查询多少条数据,如果为一个数字,则表示从位置0开始,共多少条数据。
注意:limit关键字后面的数字,不能使用引号包裹。
15、子条件查询
select * from yingxiong where y_id=(select y_boos from yingxiong where y_name=‘蛮王’);
将蛮王的y_boos字段值查询作为前部分查询语句的条件值,查询与其匹配的数据。
注意:条件使用等于号时,其子条件的结果只能有一个。
16、单一查询
select * from yingxiong where y_id=’y01’;
查询字段y_id的值为y01的数据
注意:y_id字段为主键,则本条语句只能查询到一条数据。
17、聚合函数
(1)求平均值
select avg(y_age) from yingxiong where y_age > 200;
求yingxiong表中年龄大于200的所有数据的y_age字段的平均值
avg(字段):表示求指定字段的平均值
(2)求最大值
select max(y_age) from yingxiong;
求yingxiong表中y_age字段的最大值
(3)求最小值
select min(y_age) from yingxiong;
求yingxiong表中y_age字段的最小值
(4)求总数
select count(y_age) from yingxiong;
求yingxiong表中y_age字段值得总数
注意:如果括号中为*,则结果一当前表的主键数量为准。
(5)求和
select sum(y_age) from yingxiong;
求yingxiong表中y_age字段值得和。
注意:聚合函数中,默认空值不参与。
注意:聚合函数一般与分组函数结合使用。
18、分组函数
select * from yingxiong group by y_weizhi;
根据y_weizhi字段的值对yingxiong表中的数据进行分组
注意:分组函数中,字段位置不适用*,一般与聚合函数结合使用。

select y_weizhi,count(y_age) from yingxiong group by y_weizhi;
查询以y_weizhi进行分组时,每组中y_age出现的总次数。
19、分组函数加条件过滤
select y_weizhi,count(*) from yingxiong group by y_weizhi having y_weizhi in (‘中单’,‘上单’);
查询以y_weizhi字段进行分组时,y_weizhi的值为中单或上单的组名及组中数据总数。
having:关键字表示条件,常用于分组函数中,后面跟条件语句,写法同where。
注意:having在过滤时,需要先在当前语句的字段部分对要过滤的字段进行查询。
注意:条件关键字的过滤时机:where为查询前,having为在查询到的结果基础上进行过滤,on为两表结合前。
20、多表联合查询
Select * from yingxiong,wanjia;
查询yingxiong和wanjia两表数据一一对应的结果。
未经条件过滤的多表查询,称为笛卡尔乘积。
select * from yingxiong,wanjia where yingxiong.y_weizhi = wanjia.w_like;
查询yingxiong表中y_weizhi字段值与wanjia表中w_like字段值相同的数据
select wanjia.w_name,wanjia.w_like,yingxiong.y_name,yingxiong.y_daZhao from yingxiong,wanjia where yingxiong.y_weizhi = wanjia.w_like;
21、左连接查询
select * from yingxiong left join wanjia on yingxiong.y_weizhi = wanjia.w_like;
查询以yingxiong表为准wanjia表匹配,同时yingxiong表的y_weizhi字段值与wanjia表的w_like字段值相同的数据。
注意:格式为:表1 left join 表2 on 条件
注意:left join … on 为一个整体,不能单独使用。
方式:以左表(表1)为准,右表(表2)匹配,左表数据全部保留,右表数据进行匹配,如果满足条件,则保留,否则过滤,如果没有与左表匹配的数据,则以默认空填充。
22、右连接查询
select * from yingxiong right join wanjia on yingxiong.y_weizhi = wanjia.w_like;
查询以wanjia表为准yingxiong表匹配,同时yingxiong表的y_weizhi字段值与wanjia表的w_like字段值相同的数据。
注意:格式为:表1 right join 表2 on 条件
注意:right join … on 为一个整体,不能单独使用。
方式:以右表(表2)为准,左表(表1)匹配,右表数据全部保留,左表数据进行匹配,如果满足条件,则保留,否则过滤,如果没有与右表匹配的数据,则以默认空填充。
23、内连接查询
select * from yingxiong inner join wanjia on yingxiong.y_weizhi = wanjia.w_like;
查询wanjia表和yingxiong表,同时yingxiong表的y_weizhi字段值与wanjia表的w_like字段值相同的数据。
注意:格式为:表1 inner join 表2 on 条件
注意:inner join … on 为一个整体,不能单独使用。
方式:两表之间互相匹配,如果满足条件,则保留,否则过滤。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值