Java学习笔记-零基础学MySQL(一)
19.1 MySQL安装及连接
-
安装数据库
-
命令行连接MySQL
使用
net stop/start mysql
时要管理员运行cmd -
操作示意图
19.2 图形化MySQL管理软件
19.1.1 Navicat 安装
19.1.2 SQLyog 安装
二选一即可
19.3 数据库基本介绍
19.3.1 数据库三层结构
-
所谓安装MySql数据库,就是在主机安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库。DBMS(Database Manage System)
-
一个数据库可以创建多个表,以保存数据(信息)
-
数据库管理系统(DBMS),数据库和表的关系如图所示
19.3.2 数据的存储方式
19.3.3 SQL 语句分类
SQL语句,根据其功能,主要分为四类:DDL
、DML
、DQL
、DCL
分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象(数据库,表,字段) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行增删改 |
DQL | Data Query Language | 数据查询语言,用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
19.4 数据库相关操作
19.4.1 创建数据库
# 演示数据库的操作
#创建一个名称为hsp_db01的数据库。[图形化和指令 演示]#使用指令创建数据库
CREATE DATABASE hsp_db01;
#删除数据库指令
DROP 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 不区分大小写#下面是一条查询的sql , select 查询 * 表示所有字段 FROM 从哪个表
#WHERE 从哪个字段 NAME = 'tom' 查询名字是tom
SELECT * FROM t1 WHERE NAME = 'tom'
19.4.2 查看、删除数据库
#演示删除和查询数据库
#查看当前数据库服务器中的所有数据库
SHOW DATABASES
#查看前面创建的hsp_db01数据库的定义信息
SHOW CREATE DATABASE `hsp_db01`
#老师说明 在创建数据库,表的时候,为了规避关键字,可以使用反引号解决#删除前面创建的hsp_db01数据库
DROP DATABASE hsp_db01
19.4.3 备份恢复数据库及表
-
备份恢复数据库
#练习 : database03.sql 备份hsp_db02 和 hsp_db03 库中的数据,并恢复#备份, 要在Dos下执行mysqldump指令其实在mysql安装目录\bin # 这个备份的文件,就是对应的sql语句 mysqldump -u root -p -B hsp_db02 hsp_db03 > d:\\bak.sqlDROP DATABASE ecshop;#恢复数据库(注意:进入Mysql命令行再执行) source d:\\bak.sql #第二个恢复方法, 直接将bak.sql的内容放到查询编辑器中,执行
-
备份及恢复数据库中的表
19.4.4 创建表
#指令创建表
#注意:hsp_db02创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型。例:user表 (快速入门案例 create_tab01.sql )
CREATE TABLE `user` (id INT, `name` VARCHAR(255),`password` VARCHAR(255), `birthday` DATE
) CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;
19.4.5 字段数据类型
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 t3INSERT INTO t4 VALUES(255);
SELECT * FROM t4;
2. bit 的使用
#演示bit类型使用
#说明
#1. bit(m) m 在 1-64
#2. 添加数据 范围 按照你给的位数来确定,比如m = 8 表示一个字节 0~255
#3. 显示按照bit ,即二进制显示
#4. 查询时,仍然可以按照数来查询
CREATE TABLE t05 (num BIT(8));
INSERT INTO t05 VALUES(255);
SELECT * FROM t05;
SELECT * FROM t05 WHERE num = 1;
3. 小数的基本使用
#演示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;
4. 字符串的基本使用
-
基本介绍
注意:下面是varchar是可以存储的最大字节是65532字节,但是varchar(5)表示可以存五个字符,但是其占用的字节要根据编码不同来计算。如果编码为gbk时,一个字符占两个字节,因此varchar可存储的最大字符数为
( 65535 - 3 )/ 2 = 32766
个字符,则在gbk编码格式下最多只能写varchar(32766)#演示字符串类型使用char varchar -- 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;
-
注意事项
#演示字符串类型的使用细节 #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;
5. 日期类型的基本使用
#演示时间相关的类型
#创建一张表, 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列会自动的以当前时间进行更新
19.4.6 修改表
-
基本介绍
-
举例说明
#修改表的操作练习 -- 员工表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 '' DESC employee
-
注意事项
modify
用于修改表属性,而不能修改列名(字段名),而change
用于修改列名,同时修改属性