(一)数据库分类
- 数据库分为关系型数据库和非关系型数据库
- 关系型数据库:比如Oracle、MySQL
- 非关系型数据库 :比如NoSQL、Redis、MongoDB
- 关系型数据库:存放的是实体和实体之间的关系(二维表)
- 非关系型数据库:存放的是对象
(二)基本命令
使用数据库可视化工具比如SQLyog查看MySQL中的数据
net start mysql //cmd中启动MySQL服务
select @@basedir as basePath from dual //在MySQL中查询MySQL的安装地址
select @@version; //查看数据库版本
set names gbk; //在使用cmd录入数据时,因为cmd采用GBK编码方式,而数据库采用utf-8编码方式,命令的含义是高速数据库录入的数据是gbk格式,需要翻译转换
(三)简单查询
(1)查询
语序 : where + 分组 + order by
- 查询语句中的模糊匹配(关键词是like)
- 字段名 like “pattern”;,pattern中%表示通配符
- pattern中%的使用: %value; //值以value结尾的
- value% //值以value开头的
- %value% //值里包含value
- where语句案例
select * from products where pname='十三香'
select * from products where price>60;
select * from products where pname like '新%'
select * from products where price=38 or price=68 or price=98
select * from products where price in(38,68)
select * from products where price between 40 and 80
(2)聚合
- 聚合函数的使用
select avg(price) from products //所有商品价格的平均数
select sum(price) from products //所有商品价格之和
select round(avg(price),2) from products //round函数保证小数精度为2
select count(*) from products; //查询表中有多少条数据
(3)条件查询
- 条件查询的时候,什么时候使用where什么时候使用having
- where是对分组前的数据进行过滤
- having是对分组后的数据进行过滤
- where之后不能使用聚合函数,having之后可以
(4)分组
- group by
(四)MySQL数据类型
数据类型 | 备注 |
---|---|
tinyint | mysql中没有boolean类型,可以使用tinyint类型替代 |
smallint | |
int | 常用 |
bigint | |
varchar | |
char | |
double(m,n) | 浮点数长度为m,小数部分有n位,也就是说m-n位.n位 |
(五)约束
(1)主键约束
- 主键
- 作用:标识一条记录,保证记录的唯一性
- 对于一个主键包含多个字段的情况,只有多个字段值都相同的时候才认为出现了重复数据
- MySQL约束:对于表的列或者行数据进行限制,确保数据的完整性和唯一性
- 主键约束(Primary Key)
- 作用:被修饰的字段唯一非空
- 属性:一张表只能有一个主键(但是这个主键可以包含多个字段,也就是联合主键)
- 主键申明方式1: 字段名 字段属性 primary key
- 主键申明方式2:(在建表的时候申明)
create table pk01(
id int,
username varchar(20),
primary key (id)
);
- 主键申明方式3(在建表成功之后添加主键):
- alter table tablename add primary key(…,…)
alter table pk02 add primary key(字段名1,字段名2)
(2)唯一约束
- 唯一约束
- 被修饰的关键词唯一
- 对NULL不起作用
- 关键词为unique,申明方式和主键约束相同
create table un(
id int unique,
username varchar(20) unique
);
(3)非空约束
- 非空约束
- 作用:保证被修饰的字段非空
- 字段名 字段属性 not null
(六)其他
(1)truncate语句
- truncate会删除一张表中的所有行,然后重新建立这张表
- truncate和delete的区别
- delete逐条删除数据,不会破坏表结构(比如AUTO_INCREMENT属性)
- truncate会破坏表结构
(2)auto_increment属性
- auto_increment
- 被修饰的字段必须支持自增运算(比如varchar不能被auto_increment修饰,int可以被修饰)
- 被修饰的字段必须是一个key,一般是primary key