MySQL学习记录

SQL基础使用

DDL 语句

创建数据库

CREATE DATABASE dbname;

查询已有数据库

show database;

使用数据库

use dbname;

查看数据库中的表

show tables;

删除数据库

drop database dbname;

创建表

CREATE TABLE 表名称 (
列名称1 数据类型 约束,
........
);

删除表

 // 可以通过日志恢复.
drop table job;
// 删除后,不可恢复.
tuncate table 表名; 

修改表

// 将job 表中的 name 由 varchar(20) 改为 varchar(25).
alter table job modify name varchar(25);
// 对表结构进行修改,增加一个字段.
alter table job add home varchar(30);
// 删除 home 字段.
alter table job drop column home;
// 对表中的字段名称进行修改,把 wage 改为 salary. 
alter table job change wage salary decimal(10,2);
// 对表名进行修改,将 job 表改为 worker.
alter table job rename worker;
DML 语句 (增、删、改)

插入语句

INSERT INTO tablename (column1,column2,...) values(value1,value2,...);
insert into tablename values(value1,value2,...);

更新记录

update tablename set column1 = value1,column2 = value2,....;

删除记录

delete from tablename [where condition]
// 清除表中的所有的数据
delete from tablename;
DQL 语句

SELECT 语句

// 从表中查询所有的数据
select * from tablename;
// 从表中查询指定的字段
select column1,column2,column3,column4,... from tablename;

DISTINCT 去重

// 对指定的列名进行去重操作
select distinct column from tablename;

WHERE 条件查询

// 单条件查询
select * from tablename where column = #{value};
// 比较运算符 
><>=<= 、 !=
// 多条件查询
select * from tablename where column1 = #{value1} and column2 = #{value2};

排序

// DESC按照字段进行降序排列,ASC按照字段进行升序排列,默认使用 DESC 排列,order by 后面可以跟多个排序字段,且每个排序字段可以有不同的排序顺序.
select * from tablename where condition order by column1 desc | ASC;

限制

// 只取前三条记录
select * from tablename limit 3;
// 取排序后的前三条记录
select * from tablename order by column limit 3;
// 从指定记录开始取,比如从第二条开始取,取三条记录. limit 和 order by 语法一起实现分页查询.
select * from tablename order by column desc limit 2,3;

聚合
对记录进行汇总的操作主要有
1、汇总函数,比如 sum 求和、count 统计数量、max最大值、min最小值等。
2、group by,关键字表示对分类聚合的字段进行分组,比如按照部门统计员工的数量,那么 group by 后面就应该跟上部门。
3、with 是可选的语法,它表示对汇总之后的记录进行再次汇总。
4、having 关键字表示对分类后的结果再进行条件的过滤。where 是使用在统计之前,对统计前的记录进行过滤,having 是用在统计之后,是对聚合之后的结果进行过滤。也就是说,where 永远用在 having 之前,我们应该先对筛选的记录进行过滤,然后再对分组的记录进行过滤。

// 可以对 job 表中员工薪水进行统计,这个表示总共的薪水。
select sum(salary) from job;
// 最大薪水和最小薪水
select max(salary),min(salary) from job;
// 统计 job 表中人员的数量。
select count(1) from job;
// 按照 job 表中的年龄来进行对应的统计.
select age,count(1) from job group by age;
// 既统计各年龄段的人数,又要统计总人数。
select age,count(1) from job group by age with rollup;
// 统计数量大于1的记录.
select age,count(1) from job group by age with rollup having count(1) > 1;

表连接

表连接一般体现在表之间的关系上,当需要同时显示多个表中的字段时,就可以用表连接来实现。

// 内连接
// 查询出 job 表中的 type 和 job_type 表中的 type 匹配的姓名和工作类型。
select job.name,job_type.name from job,job_type where job.type = job_type.type;

内连接:选出两张表中互相匹配的记录。
外连接:不仅选出匹配的记录,也会选出不匹配的记录。

外连接分为两种:
左外连接:筛选出包含左表的记录并且右表没有和它匹配的记录。
右外连接:筛选出包含右表的记录并且左表没有和它匹配的记录。

// 查询出 job 表中的 type 和 job_type 表中的 type 匹配的姓名和工作类型。左外连接查询
select job.name,job_type.name from job left join job_type on job.type = job_type.type;
// 右外连接查询
select job.name,job_type.name from job right on job.type = job_type.type;

子查询

有一些情况,我们需要的查询条件是另一个SQL语句的查询结果,这种查询方式就是子查询,子查询有一些关键字比如 【in,not in,= 、!= 、exists 、 not exists】等。

// 通过子查询查询出每个人的工作类型。
select job.* from job where type in (select type from job_type);
// 如果子查询数量唯一的话,可以用 = 代替 in.
select * from job where type = (select type from job_type);
// 子查询不唯一,我们使用 limit 限制一下返回的记录数. 
select * from job where type = (select type from job_type limit 1,1);

联合查询

将两表的数据单独查询出来之后,将结果合并到一起进行显示,这个时候就需要 UNION 和 UNION ALL 这个两个关键字来实现这样的功能,UNION 和 UNION ALL 的主要区别是 UNION ALL 是把结果集直接合并在一起,而 UNION 是将 UNION ALL 后的结果进行一次 DISTINCT 去除掉重复数据。

// 将显示 job 表和 job_type 表的所有的 type 字段的值.
select type from job union all select type from job_type;
// UNION 是对 UNION ALL 使用了 DISTINCT 去重处理.
select type from job union select type from job_type;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值