本节主要内容为,
1,标题库管理(创建,查看,进入/切换,删除)
2.标题表管理(创建,查看,查看表结构)
3.标题表记录管理(插入记录,查询记录,)
主要内容:
- 数据库的相关概念
- MySQL安装、配置
- 库管理
- 表管理
- 结构化查询语言(SQL)
- 数据约束:数据要遵循的规则
- 数据导入、导出
- 权限管理
- 数据库事务
- 存储引擎
- E-R概念模型(设计相关)
- Python访问数据库
特点:
- 入门容易,提高难
- 知识点多,小,零散
- 看不见内部实现
总体目标
- 理解、掌握关系数据库的理论、概念
- 熟练掌握SQL语言
- 熟练掌握MySQL日常使用
- 掌握权限、备份、恢复日常管理工作
- E-R概念模型
- 熟练应用Python访问MySQl数据库
为什么要学数据库
- 数据库是软件人员必备技能
- 软件离开数据库没法实现(数据高速存取)
- 数据库管理可以作为长期职业发展方向(DBA,数据库专家)
今天的内容
- 什么是数据库(Database):根据一定模型(理论依据),集中对数据进行管理的仓库
- 数据库管理系统(Database Management System, 简写DBMS):专门用于数据管理的软件系统,位于操作系统和用户之间的数据管理系统
- 数据库系统:DBMS,硬件/软件,应用程序,用户
DBMS应用场合
- 1)银行中客户,账户,交易信息存储
- 2)电商系统中商品、订单、客户信息存储
- 3)仓库关系统中的数据存储
- …
重要概念(重点)
- 1)关系:规范的二维表
- 2)关系型数据库:使用关系模型的数据库,二维表表示数据、数据之间的联系,关系型数据库用来处理结构化数据
- 3)实体:现实中可以区分的事物
- 4)元组:二维表中的一行,描述一个实体信息
- 5)属性:实体的某个数据特征
- 6)键:可以区分实体的属性、属性组合
- 7)主键:从键中选取一个,作为逻辑上唯一区分实体的依据
MySQL相关目录
/usr/bin 可执行文件
ls /usr/bin/mysql*
/var/lib/mysq 存放数据
ls
/etc/init.d/mysql 服务管理脚本
vim -R /etc/init.d/mysql
:q! 强制退出vim
/etc/mysql 数据库服务器配置
sudo -i 直接切换到root用户
exit 退出当前用户
库管理
1. 查看库:show databases;
2. 创建库:
1)语法:create database 库名称 [字符集]
2)示例:创建一个名称为eshop的库
create database eshop
default charset=utf8;
3)库的命名规则
可以使用数字、字母、下划线
不能使用纯数字
库名区分大小写
库名必须唯一
不能使用特殊字符和MySQL关键字
3.进入库/切换库
USE 库名称
例:use eshop;
4.查看库
1)查看当前库:select DATABASE();
2)查看某个库建库的语句
show CREATE DATABASE 库名
如:show CREATE DATABASE eshop;
3)查看库中有哪些表
show tables;
5. 删除库
DROP DATABASE 库名
例:drop DATABASE eshop;
表管理(重点内容)
1.创建表
1)建表之前,要进入库
2)建表语法
CREATE TABLE 表名称(
字段1 类型(长度) 约束,
字段2 类型(长度) 约束,
......
)[字符集];
3)创建订单表
CREATE TABLE orders(
order_id VARCHAR(32),
cust_name VARCHAR(64)
) default charset=utf8;
执行成功后,再查看:show tables;
2. 查看表结构
1)查看表结构:desc 表名称;
例:desc orders;
2)查看建表语句:show create TABLE 表名
例:show CREATE TABLE orders;
3. 删除表
1)语法:drop TABLE 表名
2)示例:drop TABLE orders;
4. 示例:创建订单表
CREATE TABLE orders(
order_id VARCHAR(32), -- 订单编号
cust_id VARCHAR(32), -- 客户编号
order_date datetime,-- 下单时间,日期时间类型
status int, -- 状态
products_num INT, -- 商品数量,整数
amt DECIMAL(16,2) -- 订单总金额
-- 最长16位,小数2位
) DEFAULT charset=utf8;
容易出错的地方:
SQL中出现中文符号;括号匹配不正确;
date不是data;最后一个字段后面没有分号
表记录管理(重点内容)
1. 插入记录
1)所有字段都插入值
INSERT INTO orders VALUES
('201801010001','C0001',now(),1,1,100.00);
查询:select * FROM orders;
说明:
values后面没有指定字段,表示插入所有
值列表个数、顺序、类型要和表结构严格对应
字符串类型必须要单引号引起来
now()函数表示取数据库当前时间
2) 向表中插入指定字段值
语法:insert INTO 表(字段列表)
VALUES(值列表)
示例:
insert INTO orders(order_id, cust_id)
VALUES('201801010002', 'C0002');
3)一个SQL语句插入多笔数据
INSERT INTO orders VALUES
('201801010003','C0003',now(),1,1,200.00),
('201801010004','C0004',now(),1,1,480.00);
2. 查询记录
1)语法格式
SELECT * FROM 表名 [WHERE 条件];
SELECT 字段1, 字段2...
FROM 表名 [WHERE 条件];
2)示例
- 查询表中所有数据
SELECT * FROM orders;
- 查询订单编号、客户编号
SELECT order_id, cust_id FROM orders;
- 查询指定字段,给每个字段起个别名
SELECT order_id "订单编号",
cust_id "客户编号"
FROM orders;
- 带一个条件的查询
SELECT * FROM orders
WHERE order_id = '201801010003';
- 带多个条件的查询
SELECT * FROM orders
WHERE order_id = '201801010003'
AND status = 1;
-- AND表示两个条件同时满足
-- OR表示满足其中一个