一份超级详细的Mysql数据库笔记(跟随b站韩顺平教程)

本文是一份全面的Mysql数据库学习笔记,涵盖数据库备份恢复、基本数据类型、表操作(创建、删除、修改)、CRUD操作、函数、约束、自增长、索引、事务及隔离级别、视图和用户管理。详细讲解了DOS环境下数据库的备份恢复,数据类型的使用,表的创建、删除和修改,以及增删改查的细节。还深入探讨了各种函数、索引类型和事务处理,适合数据库初学者和进阶者阅读。
摘要由CSDN通过智能技术生成

Mysql数据库

一、数据库

mysql服务启动,在cmd输入net start mysql
#创建数据库 
CREATE DATABASE hsp_db01; 
#创建一个使用 utf8 字符集的 hsp_db02 数据库 
CREATE DATABASE hsp_db02 CHARACTER SET utf8 
#创建一个使用 utf8 字符集,并带校对规则的 hsp_db03 数据库 
CREATE DATABASE hsp_db03 CHARACTER SET utf8 COLLATE utf8_bin 
#校对规则 utf8_bin 区分大小 默认 utf8_general_ci 不区分大小写
​
#查看当前数据库服务器中的所有数据库
SHOW DATABASES
#查看创建的 hsp_db01 数据库的定义信息
SHOW CREATE DATABASE `hsp_db01`     #为了规避关键字,可以使用反引号
​
#删除前面创建的 hsp_db01 数据库
DROP DATABASE hsp_db01

数据库的备份、恢复(导入)(必须在dos下运行)

备份恢复数据库

mysqldump -u 用户名 -p 密码 -B 数据库名 > 路径(例:d:\\database.sql)

备份恢复数据库的表

备份数据库的多个表不能带-B,否则会被认为是多个数据库

mysqldump -u 用户名 -p 密码 数据库名 表1 表2 > 路径(例:d:\\database.sql)

使用mysqldump命令来恢复一个叫data01数据库的一个叫table01的表(已有备份文件)。具体步骤如下:

  • 打开cmd窗口,输入mysql -u 用户名 -p,然后输入mysql密码,进入mysql数据库。

  • 输入use data01,选择您要恢复的数据库。

  • 输入source d:/table01.sql,执行您的备份文件,恢复您的表。

恢复数据库(必须在mysql命令行下运行)

先进入mysql命令行:mysql -u 用户名 -p 密码

恢复:source 文件路径.sql(例:d:\\database.sql)

左上角写了mysql -u 用户名 -p 的界面才叫mysql命令行

备份,恢复数据库实践

先用mysqldump -u 用户名 -p 密码 -B 数据库名 > 路径(例:d:\\database.sql)

从数据库里备份一个到E盘里,然后在数据库中用drop指令将其删除

然后通过mysql -u 用户名 -p 密码进入mysql命令行,输入source d:\\database.sql将其备份

二、Mysql基本数据类型

基本数据类型的使用细节

数值型:

decimal(M,D)中的M默认为10(最大65),D默认为0(最大30),M是位数,D是小数点后有几位

如果没有指定 unsinged , 就是有符号

#创建一个无符号的tinyint类型数据,0~255
CREATE TABLE t4 (id TINYINT UNSIGNED)

字符串型:

VARCHAR虽然可以有65535个字节,但是首先去掉3个字节用于记录字段大小,所以最大为65532个字节,

如果用的编码是UTF-8的话,一个字符消耗3个字节,最多存放65532 / 3 = 21844个字符,

GBK是2个字节,最多存放65532 / 2 = 32766个字符。

#我们来创建一个数据类型为varchar,编码为GBK的表
CREATE TABLE t10 (`name` VARCHAR(32766)) CHARSET gbk;

日期类型:

DATE / DATETIME / TIMESTAMP

CREATE TABLE t14 ( 
        birthday DATE ,      -- 年月日
        job_time DATETIME,    -- 年月日 时分秒 
        login_time TIMESTAMP   -- 如果希望 login_time 列自动更新, 需要配置这两句
        NOT NULL DEFAULT CURRENT_TIMESTAMP      -- 不允许为空,默认为当前时间
        ON UPDATE CURRENT_TIMESTAMP             -- 更新当前时间戳  
);

三、表

创建表

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
#charset是character set的简写,即字符集
#字符集,校验规则,存储引擎不写的话就是默认的(默认的话跟随当前数据库)

要用cmd在一个叫database的数据库下新建一个表,你需要先用mysql命令登录到数据库,然后用use命令选择database数据库,再用create table命令创建表。具体的步骤如下:

  • 打开cmd,输入mysql -u root -p,回车后输入密码,登录到数据库。

  • 输入use database;,选择database数据库。

  • 输入如上代码完成创建。

删除表

DROP TABLE `emp`

修改表

举例演示:

ALTER TABLE emp
-- 员工表 emp 的上增加一个 image 列,varchar 类型(要求在 birthday 后面)。
ADD image VARCHAR(32) NOT NULL DEFAULT '' AFTER birthday ;
-- DEFAULT ''默认为''这个字符
​
-- 修改 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 emp CHARACTER SET utf8;
​
-- 列名 name 修改为 user_name
ALTER TABLE emp;
​
-- 显示表结构,可以查看表的所有列
DESC emp ;

四、CRUD增删改查

1. Insert

用法:
INSERT INTO 表名 (列名1,列名2...)
values (对应列名的值);
INSERT INTO `emp` (id, birthday)
VALUES(1, '2003-05-15');	-- 注意date等日期类型一定要按照规则写否则报错或者错位写入

insert使用细节

  • 插入的数据应与字段的数据类型相同

  • 数据的长度应在列的规定范围内

  • 在 values 中列出的数据位置必须与被加入的列的排列位置相对应

  • 字符和日期型数据应包含在单引号中

  • 列可以插入空值[前提是该字段允许为空]

  • 可以用 values ( ),( ) ,( ) ; 的形式添加多条记录

    INSERT INTO `goods` (id, goods_name, price) 
    VALUES(50, '三星手机', 2300),(60, '海尔手机', 1800);
  • 如果是给表中的所有字段添加数据,可以不写前面的字段名称

  • 默认值的使用,当不给某个字段值时,如果有默认值就会添加默认值,否则报错

    -- 如果某个列 没有指定 not null ,那么当添加数据时,没有给定值,则会默认给 null

    -- 如果我们希望指定某个列的默认值,可以在创建表时通过 not null default xxx 指定

#表里有3个数据,id,goodname,price有默认值10
INSERT INTO `goods` (id, goods_name)
VALUES(80, '格力手机');
#最后会插进去一个(80,格力手机,10)进去

2. Update

用法:
UPDATE 表名 SET 列名 = 值 WHERE 布尔表达式,筛选满足条件的行
#将所有员工薪水修改为 5000 元。如果不带 where 条件,会修改该列所有的记录,因此要小心
UPDAT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值