1 一个问题

image.png

2 解决之道

2.1 解决之道-文件、数据库

image.png
image.png

2.2 MySQL 数据库的安装和配置(安装演示)

image.png

看老师的安装笔记:

image.png
image.png

2.3 使用命令行窗口连接MYSQL 数据库[示意图]

image.png
net satar mysql 启动
net stop mysql 停止

2.4 操作示意图

image.png

总结:mysql -hPsp

-p密码无空格
本机-localhost(127.0.0.1)
本机connect:可省略ip(默认就是本机)和端口(默认就是3306)

3 Navicat 安装和使用

3.1 介绍 : 图形化 MySQL 管理软件

image.png

3.2 下载&安装&使用

image.png
安装参考韩顺平老师笔记:
image.png

3.3 演示:使用Navicat 创建一个数据库 db01, 在db01 创建一张表 users , 保存 3 个用户

3.4 老韩扩: 我使用命令行完成

  1. create database db02;
  2. use db02;
  3. create table users (id int,name varchar(255),address varchar(255));
  4. insert into users values(1,'tom','bj');
  5. select * from users;

4 SQLyog[SQLyog] 安装和使用

4.1 介绍 : 图形化 MySQL 管理软件

image.png

4.2 下载&安装&使用

image.png
安装笔记:
image.png

4.3 演示:

使用 SQLyog 创建一个数据库 db01, 在 db01 创建一张表 users , 保存 3 个用户

5 数据库三层结构-破除 MySQL 神秘-非常重要

image.png
mysql原理表-非常重要
image.png
mysql数据库分为三个部分:
数据库管理系统(mysqld3306监听)、数据库(data目录文件夹)、表(具体文件)
指令通过网络打到数据通道中里面对应3306,发给DBMS(mysqld)进行翻译分析,在某个数据库在某个文件完成操作,最后返回结果,客户端展示数据出来
这样操作利于数据管理

普通表就是文件

持久化——不可能一直在内存中,要落实到文件

6 数据在数据库中的存储方式

image.png
一条记录对应一个对象

7 SQL 语句分类

image.png

8 创建数据库

image.png
设置字符集:charater set
设置将对规则:collate
字符集默认就是:utf8
校验规则默认是:utf8_general_ci(默认,不区分大小写),区分大小写:utf8_bin

  1. #创建一个使用utf8字符集,并且带将对规则区分大小写utf8_bin
  2. create database hsp_db03 character set utf8 collate utf8_bin;
  3. #*所有字段 from 从哪个表 where 从哪个字段(具体到字段值)
  4. select * from t1 where name = 'tom';

练习

  1. 创建一个名称为hsp_db01的数据库
  2. 创建一个使用utf-8字符集的hsp_db02的数据库
  3. 创建一个使用utf8字符集,并带校对规则的hsp_db03的数据库

    9 查看、删除数据库

    image.png
    1. #查看所有数据库
    2. show databases;
    3. #查看数据创建语句
    4. show create database hsp_db01;
    5. #删除数据库
    6. drop database hsp_db01;

    细节说明:

  • ``,规避关键字,使用反引号解决,例如:create database ‘database ‘;
  • 库名和表名可以带反引号,也可以不带反引号,是sql关键字的一定要带

    10 备份恢复数据库

    image.png
    可以备份多个数据库,文件名可以带路径

    备份与恢复

    ```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

  1. 把文件内容复制到dos或者SQLyog下执行
    1. -B:意思是数据库,所以一定要
    2. <a name="PYmyS"></a>
    3. # 11备份恢复数据库的表
    4. ![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)
    5. ```sql
    6. mysqldump -u root -p hsp_db02 t1> H:\\code\\vb.sql

    12 安装 Ecshop 数据库

    image.png
    1. #这是一个 ecshop 的数据库,包括 ecshop 所有的表,请导入到 mysql 数据库中[备份]
    2. #进入到 mysql 命令行: source ecshop 备份文件路径
    3. #再将 ecshop 整个数据库备份到你的 d:\\ecshop.sql 到 dos 下 :
    4. mysqldump -u root -p -B ecshop > d:\\ecshop.sql
    5. #将 mysql 的 ecshop 数据库删除, 并通过备份的 d:\\ecshop.sql 恢复
    6. #进入 mysql 命令行
    7. source d:\\ecshop.sq

    前10总结:

    数据库的创建、查看、删除 备份恢复数据库和表

13创建表 (按课程大纲顺序)

image.png
charater set 默认跟数据库一致,utf8
collate 默认跟数据库一致 utf8_general_ci 不区分大小写
engine 默认InnoDB引擎
三种都可以默认,跟数据库有关

  1. CREATE TABLE `user`(
  2. id INT,
  3. `name` VARCHAR(255),
  4. `password` VARCHAR(255),
  5. birthday DATE
  6. )CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;

14Mysql 常用数据类型(列类型)

image.png
image.png
比bigint还大,decimal(M,0);
image.png
image.png
image.png
image.png
image.png

14.1 数值型(整数)的基本使用

image.png

  1. #演示整型的是一个
  2. #老韩使用 tinyint 来演示范围 有符号 -128 ~ 127 如果没有符号 0-255
  3. #说明: 表的字符集,校验规则, 存储引擎,老师使用默认
  4. #1. 如果没有指定 unsinged , 则 TINYINT 就是有符号
  5. #2. 如果指定 unsinged , 则 TINYINT 就是无符号 0-255
  6. CREATE TABLE t3 (
  7. id TINYINT);
  8. CREATE TABLE t4 (
  9. id TINYINT UNSIGNED);
  10. INSERT INTO t3 VALUES(127); #这是非常简单的添加语句
  11. SELECT * FROM t3
  12. INSERT INTO t4 VALUES(255);
  13. SELECT * FROM t4;

14.2 型如何定义一个无符号的整数

image.png

14.3 数值型(bit)的使用

image.png

  1. #演示 bit 类型使用
  2. #说明
  3. #1. bit(m) m 在 1-64,总共4个字节
  4. #2. 添加数据的范围按照你给的位数来确定,比如 m = 8 表示一个字节 0~255
  5. #3. 查询显示按二进制
  6. #4. 查询和插入时,按十进制
  7. CREATE TABLE t05 (num BIT(8));
  8. INSERT INTO t05 VALUES(1);--b'1'
  9. INSERT INTO t05 VALUES(255);--b'11111111'
  10. SELECT * FROM t05;
  11. SELECT * FROM t05 WHERE num = 1;

14.4 数值型(小数)的基本使用

image.png

  1. #演示 decimal 类型、float、double 使用
  2. #创建表
  3. CREATE TABLE t06 (
  4. num1 FLOAT, num2 DOUBLE, num3 DECIMAL(30,20));
  5. #添加数据
  6. INSERT INTO t06 VALUES(88.12345678912345, 88.12345678912345,88.12345678912345);
  7. SELECT * FROM t06;
  8. #decimal 可以存放很大的数
  9. CREATE TABLE t07 (
  10. num DECIMAL(65));
  11. INSERT INTO t07 VALUES(8999999933338388388383838838383009338388383838383838383);
  12. SELECT * FROM t07;
  13. CREATE TABLE t08(
  14. num BIGINT UNSIGNED)
  15. INSERT INTO t08 VALUES(8999999933338388388383838838383009338388383838383838383);
  16. SELECT * FROM t08;

14.5 字符串的基本使用

image.png

  1. #演示字符串类型使用 char varchar
  2. #注释的快捷键 shift+ctrl+c , 注销注释 shift+ctrl+r
  3. -- CHAR(size)
  4. -- 固定长度字符串 最大 255 字符
  5. -- VARCHAR(size) 0~65535 字节
  6. -- 可变长度字符串 最大 65532 字节 utf8 编码最大 21844 字符 1-3 个字节用于记录大小】
  7. -- 如果表的编码是 utf8 varchar(size) size = (65535-3) / 3 = 21844
  8. -- 如果表的编码是 gbk varchar(size) size = (65535-3) / 2 = 32766
  9. CREATE TABLE t09 (
  10. `name` CHAR(255));
  11. CREATE TABLE t10 (
  12. `name` VARCHAR(32766)) CHARSET gbk;
  13. DROP TABLE t10;

CHARACTER SET = CHARSET

14.6 字符串使用细节

image.png
image.png
image.png
image.png

  1. #演示字符串类型的使用细节
  2. #char(4) 和 varchar(4) 这个 4 表示的是字符,而不是字节, 不区分字符是汉字还是字母
  3. CREATE TABLE t11(
  4. `name` CHAR(4));
  5. INSERT INTO t11 VALUES('韩顺平好');
  6. SELECT * FROM t11;
  7. CREATE TABLE t12(
  8. `name` VARCHAR(4));
  9. INSERT INTO t12 VALUES('韩顺平好');
  10. INSERT INTO t12 VALUES('ab 北京');
  11. SELECT * FROM t12;
  12. #如果 varchar 不够用,可以考试使用 mediumtext 或者 longtext, #如果想简单点,可以使用直接使用 text
  13. CREATE TABLE t13(
  14. content TEXT, content2 MEDIUMTEXT , content3 LONGTEXT);
  15. INSERT INTO t13 VALUES('韩顺平教育', '韩顺平教育 100', '韩顺平教育 1000~~');
  16. SELECT * FROM t13;

TEXT除了汉字,英文字母和符号只占一个字节

14.7 日期类型的基本使用

image.png

  1. #演示时间相关的类型
  2. #创建一张表, date , datetime , timestamp
  3. CREATE TABLE t14 (
  4. birthday DATE , -- 生日
  5. job_time DATETIME, -- 记录年月日 时分秒
  6. login_time TIMESTAMP
  7. NOT NULL DEFAULT CURRENT_TIMESTAMP
  8. ON UPDATE CURRENT_TIMESTAMP); -- 登录时间, 如果希望 login_time 列自动更新, 需要配置
  9. SELECT * FROM t14;
  10. INSERT INTO t14(birthday, job_time)
  11. VALUES('2022-11-11','2022-11-11 10:10:10');
  12. -- 如果我们更新 t14 表的某条记录,login_time 列会自动的以当前时间进行更新

TIMSTIMP NOT NULL 不允许空
DEFAULT CURRENT_TIMESTAMP 默认为当前时间戳
ON UPDATECURRENT_TIMAESTAMP 修改为当前时间戳
如果添加的时候没有指定时间,那么添加时候为当前时候或者更新的时候会更新字段,也就是当前时间会更新

15创建表练习

image.png

  1. CREATE TABLE `emp` (
  2. id INT,
  3. `name` VARCHAR(32),
  4. sex CHAR(1),
  5. brithday DATE,
  6. entry_date DATETIME,
  7. job VARCHAR(32),
  8. salary DOUBLE,
  9. `resume` TEXT) CHARSET utf8 COLLATE utf8_bin ENGINE INNODB;
  10. INSERT INTO `emp`
  11. VALUES(100, '小妖怪', '男', '2000-11-11',
  12. '2010-11-10 11:11:11', '巡山的', 3000, '大王叫我来巡山');
  13. SELECT * FROM `emp`;

总结前19:

数据类型
表的创建

16修改表-基本介绍

image.png

总结修改字符

  1. 添加字段:ALTER TABLE … ADD … AFTER …
  2. 修改列名:ALTER TABLE … CHANGE…
  3. 修改列型:ALTER TABLE … MODIFY …
  4. 删除列:ALTER TABLE … DROP …
  5. 查看表列:desc
  6. 修改表名:RENAME TABLE .. TO
    • ALTER TABLE … RENAME ..
  7. 修改字符集:ALTER TABLE … CHARSET …

    17修改表-课堂练习

    image.png ```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 ‘’; ```