数据库储存阶段:
人工管理阶段:方式:结绳、甲骨文、纸
特点:不方便管理和查询
文件系统阶段:方式:各种文件
特点:查询不是很方便
数据库阶段:方式:有组织的数据合集
特点:方便便维护管理和查询
分类:关系型数据库
非关系型数据库:Redis、Mongodb、Hbase
关系型数据库:Oracle:大型项目中使用
MySQL:主要用在Web项目,目前使用最广放的数据库
SQL Server:微软的数据库
SQLite:轻量级数据库,主要应用在移动平台
核心要素:数据行(一条记录)
数据列(字段)
数据表(数据行的集合)
数据库(数据表的集合,一个数据库中能够有n多个数据表)
MySQL特点:开源软件、稳定、性能较好
常用数据类型:整行:int
小数:decimal decimal(5,2)表示有5位数,2位小数,3位整数
字符串:varchar(char)
时间日期:datatime
枚举类型:enumerate("")
数据约束:主键:primary key 不能重复
非空:not null 不能为空
唯一:unique 可以为空,不能重复
默认值:default 自动生成
外键:foreign key 多个表关联
非负:unsigned
自增:auto_incremeng
常见数据库操作命令:
查看所有数据库:show database
使用数据库:use 数据库名
查看当前使用数据库:select database()
创建数据库:create database 数据库名 charset=utf8 collate utf8_general_ci
删除数据库:drop database 数据库名
数据表操作:
查看当前数据库所有的表:show tables
查看表结构:desc 表名
查看表的创建语句:show create table 表名
创建表:create table 表名 (字段 值,字段 值);
增:
创建库:create database 库名 character set utf8
创建表:create table 表名 (字段 属性(值))
在表中加数据:insert into 表名 values(值1,值2)
insert into 表名(字段1,字段2) values(值1,值2)
删:
删除表中的数据:
删除表中的所有数据:delete form 表名
删除满足条件的数据:delete form 表名 where 条件
删除表:drop table 表名
删除数据库:drop database 库名
改:
修改表中的数据:
修改表中所有的数据:update 表名 set 字段名=值
只修改满足条件的记录:update 表名 set 字段名=值 where 条件
简单查询:
select 字段名,... from 表名:select * from db1
where条件:select * from db1 where 字段名
group by 字段(分组)
having 条件(分组后加条件)
order by 字段(排序):选项asc:升序(默认值) desc:降序
limit 数字:只显示最上边数字行
<>或!= :不等于
between ... and ... :between 20 and 30:在20到30之间(包括20和30)
is null :字段为空 格式:where ID is null :ID为空
is not null :字段不为空 格式:where ID is not null :ID不为空
like:模糊查询:选项:%表示任意字符 _表示一个字符
聚合函数:
求和:sun()
求平均值:acg()
求最大值:max()
求最小值:min()
统计记录条数:count()
格式:select 函数(字段) from 表名
删除:
delete:删除表中数据,不会截断表(删除现有数据后,排序不会重新排列)
delete from 表名 where 条件
drop:删除整个数据库或删除整个表
drop table 删除表
drop database 删除库
truncate:删除表中全部数据,会截断表
去除重复字段distinct
select distinct age from db1:去除db1中重复的年龄
完整的查询格式(先后顺序)
select ... from ... where ... order by ... limit ... group by ... having ...
链接查询:
交叉链接:表中每一行,分别和其他表的每一行,组成一个新的行。
新表的行数是两个表的行数相乘,列数是两个表的列数相加
格式:select * from 表1,表2;
自然链接(内链接、等值链接):将多个表中符合条件的进行链接
格式:select * from 表1,表2 where 表1.字段=表2.字段;
问题:会导致数据缺失
解决方法:左外链接:左表,第一个表
右外链接:右表,第二个表
全外链接:MySQL不支持
格式:select 字段 from 左表 left join 右表 on 条件
select 字段 from 左表 right join 右表 on 条件
字段别名:给字段取一个新名字,本句话中其他位置全用新名字
格式:select 字段名 as 新名字 from 表名
表别名:select 字段 from 表名 as 表名
子查询:在查询语句中,使用另外一个语句的查询结果
格式:select 字段 from 表名 where 字段或条件=(select 字段 from 表名 where 条件)