mysql
Posted π+1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql相关的知识,希望对你有一定的参考价值。
一、数据库的基本概念
1.数据库包括数据库(DB)和数据库管理系统(DBMS)两个部分。DB是指数据的文件系统,用来存储数据的仓库;DBMS是操作和管理数据库的软件。
数据库:存储、维护和管理数据的集合
2.数据在数据库中是以一张二维表的形式存在的;其中,表中的列叫字段,表中的行代表一
条记录,也叫一个实例。
二、sql:结构化查询语言
sql分类:
DDL: 数据定义语言;用来操作表和数据库;
常用关键字:create/alter/drop
DML: 数据操作语言;用来操作表中的数据;
常用关键字:insert update delete
注:字符串类型在sql中用‘‘;
空值:null:不占用内存;
‘‘:占内存
(1)插入操作 insert
insert into 表名(列名1,....) values(列值1,....);
批量插入:insert into 表名 values((...),(...),(...));
(2)修改操作 update
update 表名 set 列名1=列值1,.... where 列名 = 值;
(3) 删除操作 delete
delect from 表名 where 列名=值;
注:delect删除表中的数据,表的结构还在,删除后数据可以找回
truncate:删除是直接把表Drop掉,然后再创建一个同样的表,表中的数据找不回。执行速度相对较快。
DQL:数据查询语言;
关键字:select
1.基础查询
(1) select * from stu; //查询所有列
selec id,name,age from stu; //查询指定列
from 表名 //要查询的表名称
where condition //行条件
group by //对结果分组
having condition //分组后的行条件,分组后再筛选
order by //对结果分组
limit 起始行,总行数; //结果限定
(2) 书写顺序:select from where group by having order by limit;
执行顺序:from where group by having select order by limit;
(3) having与where的区别:
a).having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
b).having后面可以使用分组函数(统计函数)
where后面不可以使用分组函数。
c).WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;
HAVING是对分组后数据的约束。
2.条件查询
(1) =,!=(获取<>),<,<=,>,>=;
(2) between...and;
(3) in(set);
(4) is null,is not null;
(5) and;
(6) or;
(7) not.
3.模糊查询
通配符:_任意一个字符
%任意0~n个字符
4.字段控制查询
(1)去除重复记录 select distinct x from emp;
(2)任何值和null相加结果为null,为了避免出现相加结果为null,使用:字段1 + ifnull(字段名2,0);
5.聚合函数:sum() avg() max() min() count()都是滤空的
注:凡和聚合函数同时出现的列名,则一定要写在group by之后,不能颠倒
DCL:数据控制语言;
三、数据的完整性
1.为了确保数据的完整性,需要在创建表的时候给表添加约束
2.分类:
1) 实体完整性(行级):
主键约束:primary key
唯一约束:unique
自动增长列:auto_increment
2) 域完整性(列级):
数据类型
not null(非空约束)
default(默认值约束)
check(mysql不支持)
3) 引用完整性:
外键约束:FOREIGN KEY
constrain XXX foreign key(id) references 表名(id);
四、表关系
一对一
一对多(多对一)
多对多
五、多表查询
1.连接查询
连接查询会产生笛卡尔积,会有很多无用信息,需要使用主外键关系来去除无用信息
(1)99查询法:
select * from 表名1 as x,表名2 as y where x.列名 = y.列名1
(2)内连接(join .. on)
select * from 表1 x join 表2 y on x.列名 = y.列名1
注:on只能用作主外键关联
(3)外连接
左连接:select * from 表1 x left join 表2 y on x.列名 = y.列名1
右连接:select * from 表1 x right join 表2 y on x.列名 = y.列名1
两张表的连接查询一定有一个主外键关系,三张表的连接查询就有两个主外键关系,N张表就一定有N-1个条件。
2.自然连接
两张表的表中的名称和类型完全一致的作为条件
select * from 表1 natural join 表2
select * from 表1 natural left join 表2
select * from 表1 natural right join 表2
3.子查询(*****)
一个select语句包含另一个完整的select,即嵌套查询。
(1)子查询出现的位置:
1)where后,作为条为被查询的一条件的一部分;可以使用关键字any、all
2)from后,作表;
(2)子查询结果集的形式:
单行单列(用于条件)
单行多列(用于条件)
多行单列(用于条件)
多行多列(用于表)
4.自连接:自己连接自己
以上是关于mysql的主要内容,如果未能解决你的问题,请参考以下文章