MySQL 基础
查 (重点)
排序
order by
-
基本查询:select 列名 from 表名 —— 某列、select * from 表名 —— 全表、select distinct 列名 from 表名 —— 去重 。
-
聚合函数:COUNT ()/SUM()/AVG()/MAX()/MIN()
-
分组:GROUP BY
-
筛选:where:指定行对应条件,不可用聚合函数。
having:指定组对应条件,可用聚合函数。
-
升序:ASC。
-
降序:DESC。
-
多个排序:order by 列名1,列名2 —— 从左到右优先原则。
小例子:
-3. 查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null ) (直接在select当中查询)
SELECT
s.sid,
s.Sname,
( SELECT COUNT ( Cid ) FROM sc WHERE s.sid= sc.sid ),
( SELECT SUM ( score ) FROM SC WHERE s.sid= sc.sid )
FROM
student AS s
ORDER BY s.Sname
limit
- 从查询结果中取出指定行
- 进阶:limit N—— 返回N条记录、offset M —— 跳过M条记录,M默认为0、limit M.N —— 跳过M条记录,返回N条记录。
表合并
合并两表相同字段:union 去重合并。union all 非去重合并。
表连接
-
内连接:join / inner join
-
左连接:left join
-
右连接:right join
-
全连接:outer / full join
-
交叉连接/笛卡尔迪:cross join
小例子:
--5. 查询学过「张三」老师授课的同学的信息
SELECT
s.*
FROM
student AS s
JOIN sc ON s.Sid = sc.Sid
WHERE
sc.Cid IN (
SELECT
c.Cid
FROM
course AS c
WHERE
c.Tid = ( SELECT t.Tid FROM teacher AS t WHERE t.Tname = '张三' )
);
视图
create view 视图名称 as + select …
复杂查询
- 子查询
- 标量子查询 :返回1行1列结果的子查询。 可在select 和where 中使用。
- 关联子查询:where 中使用子查询。子查询中加入where条件。
增
创建数据:
- 创建数据库:create database 数据库名称
- 创建表:create table 表名 (列 格式 null 设置);主键设置:primary key 主键列。
- 创建新列:alter table 表名 add column 列名 格式。
- 根据查询创建新表:create table 表名 as select …
改
- 向表中插入数据 —— insert into 表名(列名):values(数据) —— 不常用
- 从其他表复制数据插入—— insert 新表 (列名) :select 列名 - from 旧表
- 修改表名 —— alter table 旧表名 rename to 新表名
- 修改列值 —— updata 表名 set 列名 = 表达式 :4.1:指定条件:* where 。4.2 :多列更新:set 列名1 = 表达式 . 列名 2= 表达式 。
删(谨慎使用)
- 删除数据库 —— drop database 数据库
- 删除数据表 —— drop table 表名
- 只是删除数据不删除表 —— delete from 表名 (指定条件:* where )