一.为什么不用文件存储数据,而用数据库?
存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点:
●文件的安全性问题
●文件不利于数据查询和管理
●文件不利于存储海量数据
●文件在程序中控制不方便
数据库存储介质:
●磁盘和内存
数据库, 它能更有效的管理数据。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。
二.关系型数据库和非关系型数据库
数据库大体可以分为关系型数据库和非关系型数据库。
●关系型数据库:
是指采用了关系模型来组织数据的数据库。简单来说, 关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
基于标准的SQL,只是内部一些实现有区别。常用的关系型数据库如:
Oracle:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、 OA等企业信息系统。收费。
MySQL:属于甲骨文,不适合做复杂的业务,开源免费。
SQL Server:微软的产品,安装部署在windows server.上,适用于中大型项目。收费。
●非关系型数据库:
不规定基于SQL实现。如:
基于键值对(Key-Value) : 如memcached、redis
基于文档型: 如mongodb
区别:
三.客户端连接 MySQL 服务器
MySQL默认只允许在服务器本机 使用 root 用户登录,要开启 root 用户的远程登录,在MySQL服务器本机执行:
mysql -u root -p
四.数据库操作
4.1.显示当前数据库
SHOW DATABASES;
1.2 创建数据库
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
说明:
- 大写的表示关键字
- [] 是可选项
- CHARACTER SET: 指定数据库采用的字符集
- COLLATE: 指定数据库字符集的校验规则
1.3 使用数据库
use 数据库名;
1.4 删除数据库
DROP DATABASE [IF EXISTS] db_name;
说明: 数据库删除以后,内部看不到对应的数据库,里面的表和数据全部被删除
常用数据类型:
- INT:整型
- DECIMAL(M, D):浮点数类型
- VARCHAR(SIZE):字符串类型
- TIMESTAMP:日期类型
表的基本操作:
– 查看
show 表;
– 创建
create table 表名(
字段1 类型1,
字段2 类型2,
...
);
– 删除
drop table 表名
以上基本操作会了后,可以来段简单的代码实际操作一下:
有一个商店的数据,记录客户及购物情况,有以下三个表组成:
商品goods(商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供应商provider)
客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证card_id)
购买purchase(购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)
-- 创建数据库
create database if not exists bit32mall
default character set utf8 ;
-- 选择数据库
use bit32mall;
-- 创建数据库表
-- 商品
create table if not exists goods
(
goods_id int comment '商品编号',
goods_name varchar(32) comment '商品名称',
unitprice int comment '单价,单位分',
category varchar(12) comment '商品分类',
provider varchar(64) comment '供应商名称'
);
-- 客户
create table if not exists customer
(
customer_id int comment '客户编号',
name varchar(32) comment '客户姓名',
address varchar(256) comment '客户地址',
email varchar(64) comment '电子邮箱',
sex bit comment '性别',
card_id varchar(18) comment '身份证'
);
-- 购买
create table if not exists purchase
(
order_id int comment '订单号',
customer_id int comment '客户编号',
goods_id int comment '商品编号',
nums int comment '购买数量'
);