create database [if not exists] `abc` charset=‘utf8mb4‘;
1. 如果多次创建会报错
2. 字符编码不指定默认 utf8mb4
3. 给数据库命名?定要习惯性加上反引号, 防?和关键字冲突
2.查看数据库
show databases;
3.选择数据库
use `数据库名称`;
4.修改数据库
alter database `数据库名称` charset=‘字符集‘;
只能修改字符集
5.删除数据库
drop database [if exists] `数据库名称`;
6.数据库查询语句关键字
1.select:字段表达式
SELECT 既可以做查询, 也可以做输出
select rand(); -- 随机数
select unix_timestamp(); -- 显示Unix时间戳
select id, name from student;
2. FROM ?句
-
-
select 字段 from 表名;
from 后面是数据源,数据源可以写多个,数据源一般是表名,也可以是一个查询结果
SELECT student.name, score.math FROM student, score;
select a.name,a.city,a.math from v_math as a where (city,math) in (select city,min(math) from v_math group by city);
-
3. where和having?句: 按指定条件过滤
-
-
语法: select 字段 from 表名 where /having条件;
-
WHERE 是做条件查询, 只返回结果为 True 的数据
-
空值判断: is null | is not null
-
范围判断:
-
between ... and ... (闭区间)
-
not between ... and ...
-
-
having和where差别:
having where 从select后筛选的字段再筛选,(如果having后的判断字段在select后的字段里没有,则报错),having后面可以跟聚合函数 如:select name from users having age> 15 //报错!!!因为前面并没有筛选出age字段 where后跟的是数据表里存在的字段 如:select id , avg(price) as ag from users where ag>100 group by city //报错!!因为from users 这张数据表里面没有ag这个字段 where 后面要跟的是数据表里的字段,如果我把ag换成avg(price)也是错误的!因为表里没有该字段。而having只是根据前面查询出来的是什么就可以后面接什么。
-
4. GROUP BY : 分组查询
按照某?字段进?分组, 会把该字段中值相同的归为?组, 将查询的结果分类显示, ?便统计。
如果有 WHERE 要放在 WHERE 的后?
语法: select 字段 from 表名 group by 分组字段;
select sex, count(id) from student group by sex;
-- 在group将需要的结果通过 “聚合函数” 拼接
select sex, group_concat(name) from student group by sex;
-- 添加where语句
-- 按性别分组, 将上海地区的男???姓名连接起来
select sex, group_concat(name) from student where city=‘上海‘ group by sex;
6. ORDER BY : 按字段排序
语法: select 字段 from 表名 order by 排序字段 asc|desc; (默认asc升序)
7. LIMIT : 限制取出数量
语法 :
select 字段 from 表名 limit m; -- 从第 1 ?到第 m ?
select 字段 from 表名 limit m, n; -- 从第 m ?开始,往下取 n ?
select 字段 from 表名 limit m offset n; -- 跳过前 n ?, 取后?的 m ?
8. DISTINCT : 去重
select distinct city from student;
9. dual表
dual 是?个虚拟表, 仅仅为了保证 select ... from ... 语句的完整性
select now() from dual;