目录
一. 必备SQL语句
1.条件
在之后使用where+条件,条件可以为:
where id>1
where id between 2 and 4;
这里是指子搜索,条件为另一个表的条件
where exits可以等同于C语言中的if
将从info提取出来的满足条件的数据临时整理成一张表名为T,并显示T中age大于10的数 据,而T只是个临时数据,只是个载体,并没有进入数据库的表列表中
2.通配符
一般用于模糊搜索
select * from info where name like "%佩%";
%表示可以为任意一个字符,只要中间存在佩即可
3.映射
select id,name from info;
select id,name,123 as age from info
(select max(id) from depart) as min; --注意:该语句只能是一个值
4.排序
desc是倒序排列,从大到小排列
5.取部分
select * from info limit 3 offset 2; 表示从位置2开始,向后获取前3数据
6.分组
select age,max(id) from info group by age;
表示把age和id按照age进行分组,且id只显示最大的那一个
select age,max(id),min(id),count(id),count(id),sum(id),avg(id) from info group by age;
表示的是通过
到目前为止SQL执行顺序:
where
group by
having
order by
limit
e.g. select age,count(id) from info where id>2 group by age having count(id)>1 order by age desc limit 1;
7.左右连表
多个表可以连接起来进行查询
比如:
select * from info left outer join depart on info.depart_id=depart_id;
--是指以info表为主表,最终结果为:
那么何为主从表?
这里就需要引入外键的定义了
7.1 外键
定义:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一 个关系的外键
作用:保持数据一致性
那么如何创建外键?
如果是刚刚创建表:
如果表结构已经创建好了,额外想要增加外键:
e.g.多对多
7.2 主从表
当主表中没有对应的记录时,不能将记录添加到子表
不能更改主表中的值而导致子表中的记录孤立
子表存在与主表对应的记录,不能从主表中删除该行
删除主表前,先删子表
8.内连接:表 inner join 表 on 条件
表内部内容进行自匹配
9.上下连表——union
性质:
自动去重
保留所有——union all
二.用户授权
在MySQL中支持创建账户,并给账户分配权限,例如:只拥有数据库A操作的权限,只拥有数据库B中某些表的权限,只拥有数据库B中某些表的读权限
创建和删除账户
create user '用户名'@‘连接者的IP地址' identified by '密码';