1 一个问题
2 解决之道
2.1 解决之道-文件、数据库
2.2 MySQL 数据库的安装和配置(安装演示)
看老师的安装笔记:
2.3 使用命令行窗口连接MYSQL 数据库[示意图]
net satar mysql 启动
net stop mysql 停止
2.4 操作示意图
总结:mysql -hPsp
-p密码无空格
本机-localhost(127.0.0.1)
本机connect:可省略ip(默认就是本机)和端口(默认就是3306)
3 Navicat 安装和使用
3.1 介绍 : 图形化 MySQL 管理软件
3.2 下载&安装&使用
3.3 演示:使用Navicat 创建一个数据库 db01, 在db01 创建一张表 users , 保存 3 个用户
3.4 老韩扩: 我使用命令行完成
create database db02;
use db02;
create table users (id int,name varchar(255),address varchar(255));
insert into users values(1,'tom','bj');
select * from users;
4 SQLyog[SQLyog] 安装和使用
4.1 介绍 : 图形化 MySQL 管理软件
4.2 下载&安装&使用
4.3 演示:
使用 SQLyog 创建一个数据库 db01, 在 db01 创建一张表 users , 保存 3 个用户
5 数据库三层结构-破除 MySQL 神秘-非常重要
mysql原理表-非常重要
mysql数据库分为三个部分:
数据库管理系统(mysqld3306监听)、数据库(data目录文件夹)、表(具体文件)
指令通过网络打到数据通道中里面对应3306,发给DBMS(mysqld)进行翻译分析,在某个数据库在某个文件完成操作,最后返回结果,客户端展示数据出来
这样操作利于数据管理
普通表就是文件
6 数据在数据库中的存储方式
7 SQL 语句分类
8 创建数据库
设置字符集:charater set
设置将对规则:collate
字符集默认就是:utf8
校验规则默认是:utf8_general_ci(默认,不区分大小写),区分大小写:utf8_bin
#创建一个使用utf8字符集,并且带将对规则区分大小写utf8_bin
create database hsp_db03 character set utf8 collate utf8_bin;
#*所有字段 from 从哪个表 where 从哪个字段(具体到字段值)
select * from t1 where name = 'tom';
练习
- 创建一个名称为hsp_db01的数据库
- 创建一个使用utf-8字符集的hsp_db02的数据库
- 创建一个使用utf8字符集,并带校对规则的hsp_db03的数据库
9 查看、删除数据库
#查看所有数据库
show databases;
#查看数据创建语句
show create database hsp_db01;
#删除数据库
drop database hsp_db01;
细节说明:
- ``,规避关键字,使用反引号解决,例如:create database ‘database ‘;
- 库名和表名可以带反引号,也可以不带反引号,是sql关键字的一定要带
10 备份恢复数据库
可以备份多个数据库,文件名可以带路径备份与恢复
```sql备份(在dos下执行mysqldump命令)
— 内容就是对应sql语句 mysqldump -u root -p -B hsp_db02 hsp_db03 > H:\code\vab.sql mysqldump -u root -p -B hsp_db02 hsp_db03 > H:\bak.sql
恢复:
1.(在mysql下执行source命令) source H:\bak.sql
- 把文件内容复制到dos或者SQLyog下执行
-B:意思是数据库,所以一定要
<a name="PYmyS"></a>
# 11备份恢复数据库的表
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12555714/1621104268956-fb29413b-67ac-4fdf-adda-e7857ae2510e.png#clientId=u2e3e58b2-c533-4&from=paste&height=105&id=u0ee6a634&name=image.png&originHeight=210&originWidth=1048&originalType=binary&size=357112&status=done&style=none&taskId=u93d44f8d-0517-48a0-b6d3-2f809d43643&width=524)
```sql
mysqldump -u root -p hsp_db02 t1> H:\\code\\vb.sql
12 安装 Ecshop 数据库
#这是一个 ecshop 的数据库,包括 ecshop 所有的表,请导入到 mysql 数据库中[备份]
#进入到 mysql 命令行: source ecshop 备份文件路径
#再将 ecshop 整个数据库备份到你的 d:\\ecshop.sql 到 dos 下 :
mysqldump -u root -p -B ecshop > d:\\ecshop.sql
#将 mysql 的 ecshop 数据库删除, 并通过备份的 d:\\ecshop.sql 恢复
#进入 mysql 命令行
source d:\\ecshop.sq
前10总结:
数据库的创建、查看、删除 备份恢复数据库和表
13创建表 (按课程大纲顺序)
charater set 默认跟数据库一致,utf8
collate 默认跟数据库一致 utf8_general_ci 不区分大小写
engine 默认InnoDB引擎
三种都可以默认,跟数据库有关
CREATE TABLE `user`(
id INT,
`name` VARCHAR(255),
`password` VARCHAR(255),
birthday DATE
)CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;
14Mysql 常用数据类型(列类型)
14.1 数值型(整数)的基本使用
#演示整型的是一个
#老韩使用 tinyint 来演示范围 有符号 -128 ~ 127 如果没有符号 0-255
#说明: 表的字符集,校验规则, 存储引擎,老师使用默认
#1. 如果没有指定 unsinged , 则 TINYINT 就是有符号
#2. 如果指定 unsinged , 则 TINYINT 就是无符号 0-255
CREATE TABLE t3 (
id TINYINT);
CREATE TABLE t4 (
id TINYINT UNSIGNED);
INSERT INTO t3 VALUES(127); #这是非常简单的添加语句
SELECT * FROM t3
INSERT INTO t4 VALUES(255);
SELECT * FROM t4;
14.2 型如何定义一个无符号的整数
14.3 数值型(bit)的使用
#演示 bit 类型使用
#说明
#1. bit(m) m 在 1-64,总共4个字节
#2. 添加数据的范围按照你给的位数来确定,比如 m = 8 表示一个字节 0~255
#3. 查询显示按二进制
#4. 查询和插入时,按十进制
CREATE TABLE t05 (num BIT(8));
INSERT INTO t05 VALUES(1);--b'1'
INSERT INTO t05 VALUES(255);--b'11111111'
SELECT * FROM t05;
SELECT * FROM t05 WHERE num = 1;
14.4 数值型(小数)的基本使用
#演示 decimal 类型、float、double 使用
#创建表
CREATE TABLE t06 (
num1 FLOAT, num2 DOUBLE, num3 DECIMAL(30,20));
#添加数据
INSERT INTO t06 VALUES(88.12345678912345, 88.12345678912345,88.12345678912345);
SELECT * FROM t06;
#decimal 可以存放很大的数
CREATE TABLE t07 (
num DECIMAL(65));
INSERT INTO t07 VALUES(8999999933338388388383838838383009338388383838383838383);
SELECT * FROM t07;
CREATE TABLE t08(
num BIGINT UNSIGNED)
INSERT INTO t08 VALUES(8999999933338388388383838838383009338388383838383838383);
SELECT * FROM t08;
14.5 字符串的基本使用
#演示字符串类型使用 char varchar
#注释的快捷键 shift+ctrl+c , 注销注释 shift+ctrl+r
-- CHAR(size)
-- 固定长度字符串 最大 255 字符
-- VARCHAR(size) 0~65535 字节
-- 可变长度字符串 最大 65532 字节 【utf8 编码最大 21844 字符 1-3 个字节用于记录大小】
-- 如果表的编码是 utf8 varchar(size) size = (65535-3) / 3 = 21844
-- 如果表的编码是 gbk varchar(size) size = (65535-3) / 2 = 32766
CREATE TABLE t09 (
`name` CHAR(255));
CREATE TABLE t10 (
`name` VARCHAR(32766)) CHARSET gbk;
DROP TABLE t10;
14.6 字符串使用细节
#演示字符串类型的使用细节
#char(4) 和 varchar(4) 这个 4 表示的是字符,而不是字节, 不区分字符是汉字还是字母
CREATE TABLE t11(
`name` CHAR(4));
INSERT INTO t11 VALUES('韩顺平好');
SELECT * FROM t11;
CREATE TABLE t12(
`name` VARCHAR(4));
INSERT INTO t12 VALUES('韩顺平好');
INSERT INTO t12 VALUES('ab 北京');
SELECT * FROM t12;
#如果 varchar 不够用,可以考试使用 mediumtext 或者 longtext, #如果想简单点,可以使用直接使用 text
CREATE TABLE t13(
content TEXT, content2 MEDIUMTEXT , content3 LONGTEXT);
INSERT INTO t13 VALUES('韩顺平教育', '韩顺平教育 100', '韩顺平教育 1000~~');
SELECT * FROM t13;
14.7 日期类型的基本使用
#演示时间相关的类型
#创建一张表, date , datetime , timestamp
CREATE TABLE t14 (
birthday DATE , -- 生日
job_time DATETIME, -- 记录年月日 时分秒
login_time TIMESTAMP
NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP); -- 登录时间, 如果希望 login_time 列自动更新, 需要配置
SELECT * FROM t14;
INSERT INTO t14(birthday, job_time)
VALUES('2022-11-11','2022-11-11 10:10:10');
-- 如果我们更新 t14 表的某条记录,login_time 列会自动的以当前时间进行更新
TIMSTIMP NOT NULL 不允许空
DEFAULT CURRENT_TIMESTAMP 默认为当前时间戳
ON UPDATECURRENT_TIMAESTAMP 修改为当前时间戳
如果添加的时候没有指定时间,那么添加时候为当前时候或者更新的时候会更新字段,也就是当前时间会更新
15创建表练习
CREATE TABLE `emp` (
id INT,
`name` VARCHAR(32),
sex CHAR(1),
brithday DATE,
entry_date DATETIME,
job VARCHAR(32),
salary DOUBLE,
`resume` TEXT) CHARSET utf8 COLLATE utf8_bin ENGINE INNODB;
INSERT INTO `emp`
VALUES(100, '小妖怪', '男', '2000-11-11',
'2010-11-10 11:11:11', '巡山的', 3000, '大王叫我来巡山');
SELECT * FROM `emp`;
总结前19:
16修改表-基本介绍
总结修改字符
- 添加字段:ALTER TABLE … ADD … AFTER …
- 修改列名:ALTER TABLE … CHANGE…
- 修改列型:ALTER TABLE … MODIFY …
- 删除列:ALTER TABLE … DROP …
- 查看表列:desc
- 修改表名:RENAME TABLE .. TO
- ALTER TABLE … RENAME ..
- 修改字符集:ALTER TABLE … CHARSET …
17修改表-课堂练习
```sql修改表的操作练习
— 员工表 emp 的上增加一个 image 列,varchar 类型(要求在 resume 后面)。 ALTER TABLE emp ADD image VARCHAR(32) NOT NULL DEFAULT ‘’ AFTER RESUME;
DESC employee — 显示表结构,可以查看表的所有列
— 修改 job 列,使其长度为 60。 ALTER TABLE emp MODIFY job VARCHAR(60) NOT NULL DEFAULT ‘’;
— 删除 sex 列。 ALTER TABLE emp DROP sex;
— 表名改为 employee RENAME TABLE emp TO employee;
— 修改表的字符集为 utf8 ALTER TABLE employee CHARACTER SET utf8;
— 列名 name 修改为 user_name
ALTER TABLE employee
CHANGE name
user_name
VARCHAR(64) NOT NULL DEFAULT ‘’;
```