目录
一、概述
SQL 的全称 (Structured Query Language)结构化查询语言。用来和数据库打交道,完成和数据库的通信。
MySQL由“MySQL AB”公司开发。于2008年被sun公司(Java母公司)收购,而2009年sun又被Oracle(甲骨文)公司收购。
MySQL的分类:
语言 | 含义 |
DQL | Data Query Language 数据查询语言 |
DML | Data Manipulation Language 数据操作语言 |
DDL | Data Definition Language 数据定义语言 |
TCL | Transactional Control Language 事务控制语言 |
DCL | Data Control Language 数据控制语言 |
本系列MySQL博客中的案例是基于,B站上的北京动力节点的bjpowernode数据库。信息我就不在此展示了。
二、常用命令
查看sql版本:
mysql --version
mysql -V
查看现有数据库:
show databeses;
使用数据库
use db_name
创建数据库
create database db_name;
查看当前数据库
select database();
删除数据库
drop database if exists db_name;
drop database db_name;
查看当前数据库下的表
show tables;
查看表的信息
desc t_name;
注意:中止一条语句使用 \c 。退出mysql使用 \q 。
三、简单查询
select 字段名,.... from t_name;
select * from t_name;
*号代表所有字段。
四、条件查询
条件查询需要用到 where 语句,where 必须放到 from 语句表的后面。
select 字段名,... from t_name where语句;
支持如下的运算符:
注意:表达式的优先级,如果有多个运算符记得加括号避免出错
五、排序数据
单字段排序:
select * from t_name order by 字段名;
select * from t_name where语句 order by 字段名;
系统默认排序方式为升序。
多字段排序:
select * from t_name order by 字段名1,字段名2...;
select * from t_name where语句 order by 字段名1,字段名2...;
注意:字段2在字段一相等时才起作用,以此类推。
手动指定排序顺序:asc表示升序,desc表示降序。
select * from t_name order 字段名 desc;
select * from t_name order by 字段名1 desc, 字段名2 asc;
六、数据处理函数
七、分组函数
注意:分组函数自动忽略空值,不需要手动的加where条件排除空值。并且分组函数不能直接使用在where关键字后。原因:分组函数是在分组后执行,然而在执行where语句的时候都还没有进行分组,所以不能在where后。
八、分组查询
select 参与分组的字段, 分组函数... from t_naem group by 分组的字段;
注意:在 SQL 语句中若有 group by 语句,那么在 select 语句后面只能跟分组函数+参与分组的字段。
having 的作用是对分组数据再进行过滤。
select 参与分组的字段, 分组函数... from t_name group by 分组字段 having 过滤条件;
九、去重
在select语句后面添加distinct可以将查询到的数据进行去重。
总结
DQL语句相当重要,一定要好好掌握。