深入浅出MySQL 第二章 SQL基础 笔记

第二章 SQL基础

SQL分类

  • DDL:数据定义语言。定义不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的create、drop、alter等
  • DML:数据操纵语句。用于添加、删除、更新和查询数据库记录,并检查数据的完整性。常用的insert、delete、update和select等
  • DCL:数据控制语句。用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等

SQL语句

show :查看数据库创建的所有的数据表

show create table

:查看全面的表定义

ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]:修改表类型

[FIRST | AFTER col_name]为MySQL的扩展可选项,作用为修改字段在表中的位置

ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name]:增加表字段

ALTER TABLE tablename DROP [COLUMN] col_name:删除表字段

ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]:字段改名

ALTER TABLE tablename RENAME [TO] new_tablename:表改名

distinct 关键字:查询不重复的记录,如select distinct deptno from emp;

DESC 和 ASC 是排序顺序关键字,DESC 表示按照字段进行降序排列,ASC 则表示升序
排列,如select * from emp order by deptno,sal desc;

SELECT ……[LIMIT offset_start,row_count]:LIMIT关键字,让只显示一部分,offset_start 表示记录的起始偏移量,row_count 表示显示的行数,如select * from emp order by sal limit 1,3(从第二条开始显示三条)

MySQL修改表结构操作命令总结 - 傻瓜乐园 - 博客园

聚合操作:

SELECT [field1,field2,……fieldn] fun_name
FROM tablename
[WHERE where_contition]
[GROUP BY field1,field2,……fieldn
[WITH ROLLUP]]
[HAVING where_contition]

  • fun_name 表示要做的聚合操作,也就是聚合函数,常用的有 sum(求和)、count(*)(记录数)、max(最大值)、min(最小值)
  • GROUP BY 关键字表示要进行分类聚合的字段,比如要按照部门分类统计员工数量,部门就应该写在 group by 后面。
  • WITH ROLLUP 是可选语法,表明是否对分类聚合后的结果进行再汇总。
  • HAVING 关键字表示对分类后的结果再进行条件的过滤。

having和where的区别

区别在于 having 是对聚合后的结果进行条件的过滤,而 where 是在聚合前就对记录进行过滤,如果逻辑允许,我们尽可能用 where 先过滤记录,这样因为结果集减小,将对聚合的效率大大提高,最后再根据逻辑看是否用 having 进行再过滤。

例子:

select deptno,count(1) from emp group by deptno with rollup:既要统计各部门人数,又要统计总人数

select deptno,count(1) from emp group by deptno having count(1)>1:统计人数大于 1 人的部门

count()函数:

关于mysql中的count()函数_数据库_wendychiang1991的博客-CSDN博客

表连接:

作用:当需要同时显示多个表中的字段

分类:内连接和外连接,它们之间的最主要区别是內连接仅选出两张表中
互相匹配的记录,而外连接会选出其他不匹配的记录。

外连接分类:

  • 左连接:包含所有的左边表中的记录和右表符合条件的记录
  • 右连接:包含所有的右边表中的记录和左表符合条件的记录

图解各种连接:

图解MySQL 内连接、外连接、左连接、右连接、全连接…太多了_数据库_plg17的专栏-CSDN博客

Mysql-- 内连接、左连接、右连接以及全连接查询_数据库_zjt980452483的博客-CSDN博客

子查询:

作用:当我们查询的时候,需要的条件是另外一个 select 语句的结果

关键字:in、not in、=、!=、exists、not exists 等

如:select * from emp where deptno in(select deptno from dept)

从 emp 表中查询出所有部门在 dept 表中的所有记录

注意:子查询和表连接之间的转换主要应用在两个方面:

  • MySQL 4.1 以前的版本不支持子查询,需要用表连接来实现子查询的功能
  • 表连接在很多情况下用于优化子查询

记录联合:

作用:将两个表的数据按照一定的查询条件查询出来后,将结果合并
到一起显示出来

关键字:union 和 union all

区别:UNION ALL 是把结果集直接合并在一起,而 UNION 是将
UNION ALL 后的结果进行一次 DISTINCT,去除重复记录后的结果

例子:

不去重: select deptno from emp union all select deptno from dept;

去重:select deptno from emp union select deptno from dept;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值