我们都知道数据库又分为关系型数据库和非关系型数据库;
- 关系型数据库指采用了关系模型来组织数据的数据库,指的就是二维表格模型。可以先初步理解为Excel表格。
- 非关系型数据库又被称为NoSQL,对NoSQL 最普遍的定义是“非关联型的”,强调 Key-Value 的方式存储数据。
Key-Value结构存储: Key-value数据库是一种以键值对存储数据的一种数据库,类似Java中的map。可以将整个数据库理解为一个大的map,每个键都会对应一个唯一的值。
关系型数据库:
非关系型数据库:
MySQL是一个关系型数据库管理系统,目前属于 Oracle 旗下产品,MySQL 是最流行的关系型数据库管理系统中的一个。
下载
MySQL是开源免费的,可以直接去官网下载最新版MySQLMySQL :: Download MySQL Community Server
添加环境变量
添加环境变量的目的是输入终端命令时,可以搜索对应的可执行文件。
首先找到mysql的安装目录,并且定位到mysql文件,将地址栏内容进行复制。
默认安装地址:
找到系统变量中的path变量,点击编辑,选择新建,将刚才的赋值的mysql文件的地址粘贴到文本框中,点击确定,完成环境变量配置。
搜索栏输入cmd,按Enter键唤出终端窗口
输出如下内容则配置成功。
MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录:
mysql -uroot –p密码
SQL语句
结构化查询语言(Structured Query Language)简称SQL,是关系型数据库管理系统都需要遵循的规范,是数据库认识的语句。
SQL语句分类:数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)、数据控制语言(DCL)
select * from students;
SQL常用数据类型
日期和时间类型
类型 | 大小( bytes) | 范围 | 格式 | 用途 |
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901/2155 | YYYY | 年份值 |
DATETIME | 8 | '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' | YYYY-MM-DD hh:mm:ss | 混合日期和时间值 |
字符串类型
- CHAR(n) 和 VARCHAR(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。
创建数据库
create database 数据库名; use 数据库名;
表的创建
create table if not exists 表名(
字段名1 类型(长度) [约束],
字段名2 类型(长度) [约束],...
);
修改表结构
alter table 表名 add 列名 类型(长度) [约束];
alter table category add `desc` varchar(20);alter table 表名 drop 列名;
alter table category drop description;
数据查询语言
CREATE TABLE product
(pid INT PRIMARY KEY,pname VARCHAR(20),price DOUBLE,category_id VARCHAR(32)
);
插入数据:
INSERT INTO product(pid,pname,price,category_id) VALUES(1,'联想',5000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(2,'海尔',3000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(3,'雷神',5000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(4,'杰克琼斯',800,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(5,'真维斯',200,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(6,'花花公子',440,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(7,'劲霸',2000,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(8,'香奈儿',800,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(9,'相宜本草',200,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(10,'面霸',5,'c003');
查询:
# 查询所有的商品.
select * from product;
# 查询商品名和商品价格.
select pname,price from product;
# 查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.
select pname,price+10 from product;
# 查询商品名称为“花花公子”的商品所有信息:
SELECT * FROM product WHERE pname = '花花公子';
# 查询价格为800商品
SELECT * FROM product WHERE price = 800;
# 查询价格不是800的所有商品
SELECT * FROM product WHERE price != 800;
模糊查询:
# 查询以'香'开头的所有商品
SELECT * FROM product WHERE pname LIKE '香%’;
# 查询第二个字为'想'的所有商品
SELECT * FROM product WHERE pname LIKE '_想%’;
聚合查询:
# 查询商品的总条数
SELECT COUNT(*) FROM product;
# 查询价格大于200商品的总条数
SELECT COUNT(*) FROM product WHERE price > 200;
分组查询:分组查询是指使用group by字句对查询信息进行分组。
having与where的区别:
- having是在分组后对数据进行过滤,where是在分组前对数据进行过滤
- having后面可以使用分组函数(统计函数),where后面不可以使用分组函数。
#统计各个分类商品的个数
SELECT category_id ,COUNT(*) FROM product GROUP BY category_id ;#统计各个分类商品的个数,且只显示个数大于1的信息
SELECT category_id ,COUNT(*) FROM product GROUP BY category_id HAVING COUNT(*) > 1;
以上就是MySQL的安装和简单的使用了。