展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

MySQL基础(二)

查询

简单查询

select 字段 from 表名;

限定查询

select 列名 from 表名 {where 条件}
is not null   is null
WHERE 列名 [NOT] BETWEEN 取值1 AND 取值2
WHERE {条件}  [OR|AND] {条件}     
SELECT * FROM user WHERE uid [NOT] IN (2,3,5)

模糊查询

[NOT] LIKE  '%字符串_'    // %表示任意字符,_表示单个字符,?表示单个字符
!=    >    <

排序

SELECT 列名 FROM 表名 {WHERE 条件} ORDER BY 排序字段 ASC|DESC   // 排序放在最后

分组

// 配合聚合函数使用,根据一个或多个列对结果集进行分组;例如对同一类别的字段进行求和操作
select 列名1, sum() as 数量之和 from 表名 group by 列名1
// 过滤:where 是在分组前过滤数据,where条件不能包含聚组函数   having 在分组之后过滤数据,条件中经常包含聚组函数
select  列名 from 表名 having num > 10;

多表查询

SELECT 列名1 别名1, 列名2 别名2 FROM 表名1 别名1, 表名2 别名2 {WHERE 连接条件 and 普通条件} {ORDER BY 排序字段 ASC|DESC}

// 能使用join...on 直接连接的都可以使用普通关联查询where,反之不行
select a.ename, b.deptno from emp e, dept b where e.deptno = b.deptno;
select a.ename, d.deptno from emp e join dept d on e.deptno = d.deptno;

//直接连接 join...on = 内连接 inner join...on
//交叉连接,例如查询两张表,同时保留相同字段
SELECT * FROM emp CROSS JOIN dept;
//自然连接 NATURAL JOIN去掉重列
SELECT * FROM emp NATURAL JOIN dept;
//USING用于指定两个表之间的连接字段
SELECT * FROM emp JOIN dept USING(deptno);
//不等连接
select a.ename, d.deptno from emp e inner join dept d on e.deptno <> d.deptno;


//左连接 left join...on

//右连接 right join...on

//外连接 left outer join...on      right outer join...on

//全连接:合并两张表的查询结果
  SELECT column_name(s) FROM table_name1
  UNION
  SELECT column_name(s) FROM table_name2

//自连接:将一个表当成两个表进行连接查询
SELECT e1.Name AS employee_name FROM Employee AS e1, Employee AS e2 WHERE e1.ManagerId=e2.Id AND e1.Salary>e2.Salary

子查询

// 将查询结果当作一张表作为另一张表的查询
select e.ename, e.sal, b.deptno from emp as e , (select deptno, avg(sal) as sal from emp group by deptno) as b where e.deptno = b.deptno and e.sal > b.sal;

分页

//LIMIT [位置偏移量] <行数>
SELECT * FROM students_info LIMIT 4;     //查询前四条数据
SELECT * FROM students_info LIMIT 3,5;   //从第四条开始查询5条数据

分组函数

Count():计数
Max():求最大值
Min():求最小值
Avg():求平均值
Sum():求和

SELECT avg(sal),sum(sal) FROM emp WHERE deptno=20 // 例如查询部门编号为20的平均薪资及求和

执行过程

select from where group by having union order by limit

其他

alter table 表名 change id id int primary key auto_increment;   // id设置为自动增长

ALTER TABLE `table_name` MODIFY COLUMN  `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ;   // 插入数据时自动填充时间

ALTER TABLE `table_name` MODIFY COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ;   // 更新数据时自动填充时间
posted @ 2021-06-15 14:18  DogLeftover  阅读(40)  评论(0编辑  收藏  举报