数据库(DataBase)
保存数据,保存到一个文件中,对数据进行持久化。
使用简单的命令就可以实现增删改查。
数据库管理系统
可以操作数据库的应用程序
常用的数据库
mysql数据库,中小型数据库。
DDL数据库定义语言(定义库、表、列)
CREATE ALTER DROP
DML数据库操作语言(定义表中数据)
INSERT UPDATE DELETE
DQL数据库查询语言(查询表中数据)
SELECT
注意:
SQL语句不区分大小写;
SQL语句以;结束。
DDL指令:
查询现有数据库:
show database;
创建一个数据库:
create database 数据库名;
创建数据库并指定字符集(一般使用utf8)
create database 数据库名 character set 字符集名;
指定查询一个创建好的数据库(查询该数据库的编码格式)
windows 默认的数据库编码格式 utf8
mac 初始默认数据库编码格式 latin1(不能插入中文)
show create database 数据库名;
修改数据库创建时的默认字符集:修改my.cnf文件(有数据库的默认配置文件)。
查看字符集的所有校验规则:
每一个编码格式 都有一个对应的校验规则。
show character set;
创建数据库 指定字符集和校验规则(collate 校验):
create database 数据库名 character set 字符集名 collate 校验规则;
注意:校验规则要对应上。
修改数据库(Alter)
1.修改编码格式
alter database 数据库名 character set 字符集;
删除数据库(Drop 删除)
drop database 数据库名;
表的操作
创建一张表:
create table 表名(
字段1 字段类型,
字段2 字段类型,
...
字段n 字段类型
);
字段类型常用类型
int:整型;
double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char:固定长度字符串类型; char(10) 'abc ';
varchar:可变长度字符串类型;varchar(10) 'abc' (也是存10个字符但是会自动去除空格 常用但效率比char低);
text:字符串类型; 大数据文本,最大4M;
blob:字节类型;
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss;
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss。会自动赋值当前系统时间,可以直接插入null;
'2018-06-11' 不想使用默认系统时间 可以直接用字符串插入;
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss。
DMl
查看表结构
desc 表名
查看整张表内容
select * from 表名;
表中插入数据
方式一:只要字段与值相对应,没填的字段,默认是null。
格式:
insert into 表名 (字段1,字段2,....) values (值1,值2,....);
注意:字段与值得顺序和类型要一一对应。
如果该字段没值,使用null代替。
方式二:批量插入
insert into 表名 values
(值1,值2,....),
(值1,值2,....),
(值1,值2,....);
需要填全所有字段。
修改表 DDL
添加一列
alter table 表名 add 字段名 类型;
修改一个字段的长度
alter table 表名 modify 字段名 类型;
删除一个字段
alter table 表名 drop 字段名;
alter table 表名 drop 字段名;
修改表名
rename table 原表名 to 新表名;
查看表格的创建细节
show create table 表名;
修改列名
alter table 表名 change 原字段 新字段 新字段类型;
修改(更新)表数据
多个值用逗号隔开。
update 表名 set 字段名1 = 字段值1,字段名2 = 字段值2,... where 字段 = 值;
删除操作(删除一条数据)
delete from 表名 where 字段 = 字段值;
删除表中的所有数据
delete from 表名;
delete删除时 是一条记录一条记录删除,并且如果删除错误,数据可以回滚,但是一条一条删效率不高。
truncate table 表名;
直接删除表,再重新建立一张表,字段相同,效率高,但是不能找回。
字段控制查询
去除重复数据
select distinct 字段 from 表名;查询数据和
select 字段1 + 字段2 from 表名;
注意:一个值和null相加,得到的值一定是null。可以使用ifnull(字段,0)来解决。
给字段起别名
select 字段1 + 字段2 as 别名 from 表名;
as可以省略。
排序
select * from 表名 order by 字段;
根据字段数据进行排序,默认升序排序(ASC)
select * from 表名 order by 字段 DESC;
可以使用DESC进行降序排序。
模糊查询
模糊查询
使用like 关键字, like '%%' '__'
select * from 表名 where 字段 like '%%';
聚合函数 对列数据进行操作
可以自动过滤空值,count是计算总数,sum是求和,avg求平均数,max 最大,min最小
select count(字段) from 表名;
select sum(字段) from 表名;
select avg(字段) from 表名;
select max(字段),min(字段) from 表名;