目录
24.1引出问题
24.2解决之道
24.2.1文件
24.3Navicat安装和使用
24.4SQLyog的安装和使用
24.5数据库三层结构-破除MySQL的神秘
1、所谓安装Mysql数据库,就是在主机安装一个数据库管理系统,这个管理程序可以管理多个数据库。DBMS(database manage system)
2、一个数据库中可以创建多个表,以保存数据
3、数据库管理系统(DBMS)、数据库和表的关系如图所示:
24.6数据在数据库中的存储方式
24.7SQL语句分类
DDL:数据定义语句[create表、库]
DML:数据操作语句[增删改查]
DQL:数据查询语句[select]
DCL:数据控制语句[管理数据库:比如权限:grant revoke]
24.8创建数据库
#使用指令创建数据库
CREATE DATABASE lhdb01;
#删除数据库指令
DROP DATABASE lh_db03
#创建一个使用utf8字符集的lh_db02数据库
CREATE DATABASE lh_db02 CHARACTER SET utf8
#创建一个使用utf8字符集,并带校验规则的lh_db03数据库
CREATE DATABASE lh_db03 CHARACTER SET utf8 COLLATE utf8_bin
#校对规则 utf8_bin 区分大小,默认 utf8_general_ci不区分大小写
#查询sql, select查询、*表示查询所有字段、FROM从哪个表
#WHERE从哪个字段、NAME='tom'查询名字是tom
SELECT * FROM ti WHERE id ='tom';
24.9查看、删除数据库
#演示删除和查询数据库
#查看当前数据库服务器中的所有数据库
SHOW DATABASES
#查看前面创建的lh_db01数据库的定义信息
SHOW CREATE DATABASE lh_db_01
#特别说明:在创建数据库、表的时候,为了规避关键字,可以使用反引号`create`解决
#删除前面创建的lh_db02数据库
DROP DATABASE lh_db03
24.10备份恢复数据库
#database01.sql 备份 lh_db_01和lh_db02 库中的数据,并恢复
#备份,要在Dos下执行 mysqldump指令!!!!
mysqldump -u root -p -B lh_db_01 lh_db02 > d:\\bak2.sql
DROP DATABASE lh_db_01
DROP DATABASE lh_db02
#恢复数据库(注意:进入MySQL命令再执行!!!)退出mysql命令 quit
source d:\\bak2.sql
SHOW DATABASES
#第二个恢复方法直接将bak.sql的内容放到查询编辑器中,执行
24.11备份恢复数据库表
注意:-p和密码之间没有空格
24.12安装Ecshop数据库(将外数据库,放到本地MySQL)
24.13创建表
#指令创建表
#注意:lh_db02创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列。
#eg:user表:
#id 整形
#name 字符串
#password 字符串
#birthday 日期
CREATE TABLE `user1`(
id INT,
`name` VARCHAR(255),
`password` VARCHAR(255),
`birthday` DATE
)
CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;
24.14MySQL常用数据类型(列类型)
24.14.1数值型(整数)基本使用
说明:在能够满足需求的情况下,尽量选择占用空间小的
#使用tinyint 来演示范围 有符号-128~127 无符号:0-255
#说明:表的字符集,校验规则,存储引擎,使用默认
#如果没有指定unsinged,则TINYINT就是有符号,反之无符号
CREATE TABLE t3 (
id TINYINT);
INSERT INTO t3 VALUE(123);
SELECT * FROM t3;
24.14.2如何定义一个无符号整数
24.14.3数值型(bit)的使用
#演示bit类型使用
#说明:1、bit(m) m 在 1-64
#2、添加数据范围 按照给定m的位数来确定,比如m=8 表示一个字节0~255
#3、查询时仍然按照数来查询
CREATE TABLE t05 (num BIT(8));
INSERT INTO t05 VALUES (255);
INSERT INTO t05 VALUES (1);
SELECT * FROM t05; #查询表中所以数据
SELECT *FROM t05 WHERE num = 255; #查找num = 255的数据
24.14.4数值型(小数)的基本使用
#演示decimal、float、double类型使用
#创建表
CREATE TABLE t06(
num1 FLOAT,
num2 DOUBLE,
num3 DECIMAL(30,20)
);
#添加数据
INSERT INTO t06 VALUES(88.123456789123456789,88.123456789123456789,88.123456789123456789);
#decimal可以存放很大的数据
SELECT * FROM t06;
24.14.5字符串的基本使用
24.14.6字符串使用细节
#演示字符串 char,varchar类型的使用
-- CHAR(size) 固定长度字符串 最大为255字符
-- VARCHAR(size) 0~65535字节 可变长度字符串 最大为65532字节 1~3个字节用于记录大小
-- 如果表的编码是 utf8 varchar(size) ,则size = (65535-3)/3 = 21844
-- 如果表的编码为 gbk varchar(size) ,则size = (65535-3)/2 = 32766
#字符串类型的使用细节
#char(4)和varchar(4)这个4表示的字符,而不是字节,且不区分字母还是汉字
CREATE TABLE t11(
`name` CHAR(4));
INSERT INTO t11 VALUES('晚上好呀');
SELECT * FROM t11;
-- --------------------varchar-------
CREATE TABLE t12(
`name` VARCHAR(4));
INSERT INTO t12 VALUES('晚上好');
INSERT INTO t12 VALUES('abc呀');
SELECT * FROM t12;
-- --------
#如果varchar不够用,可以考虑使用mediumtext 或者 longtext,
#或者直接使用text
CREATE TABLE t13(content1 TEXT,content2 MEDIUMTEXT,content3 LONGTEXT);
INSERT INTO t13 VALUES('晚上好呀','晚上好努力学习','晚上好请继续加油啊');
SELECT * FROM t13;
24.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列自动更新,需要配置,字段不允许为空,默认为当前时间戳,若更新,则会自动的以当前时间进行更新
INSERT INTO t14(birthday,job_time)
VALUES('2022-11-11','2022-11-11 10:10:10');
SELECT * FROM t14;
24.15创建表练习
#创建表的课堂练习
CREATE TABLE `emp`(
id INT,
`name` VARCHAR(4),
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,'小妖怪','男','2001-08-09','2022-01-22 11:11:11','开发的','25000','努力向上');
SELECT * FROM `emp`;
24.16修改表-基本介绍
24.17修改表-练习
24.18数据库CRUD语句
24.19Insert语句
24.19.1使用INSERT语句向表中插入数据
#insert语句练习
-- 创建一张商品表
-- 添加两条记录
CREATE TABLE `goods`(
id INT,
goods_name VARCHAR(10),-- 长度为10
price DOUBLE NOT NULL DEFAULT 100);
-- 添加数据
INSERT INTO `goods`(id,goods_name,price)
VALUES(10,'华为手机',2000);
INSERT INTO `goods`(id,goods_name,price)
VALUES(20,'苹果手机',3000);
SELECT * FROM goods; -- 查询数据
24.19.2应用案例
24.19.3细节说明
24.20Update语句
24.20.1使用UPDATE语句修改表中数据
24.20.2应用案例
24.20.3使用细节
24.21delete语句
24.21.1使用DELETE语句删除表中细节