1. 数据库的操作
1.1 显示当前的数据库
SHOW DATABASES;
1.2 创建数据库
语法
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明:
大写的表示关键字
[] 是可选项
CHARACTER SET: 指定数据库采用的字符集
COLLATE: 指定数据库字符集的校验规则
示例:
创建名为 db_test1 的数据库
CREATE DATABASE db_test1;
说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则
是:utf8_ general_ ci
如果系统没有 db_test2 的数据库,则创建一个名叫 db_test2 的数据库,如果有则不创建
CREATE DATABASE IF NOT EXISTS db_test2;
如果系统没有 db_test 的数据库,则创建一个使用utf8mb4字符集的 db_test 数据库,如果有则
不创建
CREATE DATABASE IF NOT EXISTS db_test CHARACTER SET utf8mb4;
说明:MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符。MySQL真正的utf8是
使用utf8mb4,建议大家都使用utf8mb4
1.3 使用数据库
use 数据库名;
1.4 删除数据库
语法
DROP DATABASE [IF EXISTS] db_name;
说明:
数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除
drop database if exists db_test1;
drop database if exists db_test2;
2. 常用数据类型
2.1 数值类型:
分为整型和浮点型
数据类型 | 大小 | 说明 | 对应java类型 |
BIT[ (M) ] | M指定位 数,默认 为1 | 二进制数,M范围从1到64, 存储数值范围从0到2^M-1 | 常用Boolean对应BIT,此时 默认是1位,即只能存0和1 |
TINYINT | 1字节 | Byte |
SMALLINT | 2字节 | Short |
INT | 4字节 | Integer |
BIGINT | 8字节 | Long |
FLOAT(M, D) | 4字节 | 单精度,M指定长度,D指定 小数位数。会发生精度丢失 | Float |
DOUBLE(M, D) | 8字节 | Double |
DECIMAL(M, D) | M/D最大 值+2 | 双精度,M指定长度,D表示 小数点位数。精确数值 | BigDecimal |
NUMERIC(M, D) | M/D最大 值+2 | 和DECIMAL一样 | BigDecimal |
扩展资料
数值类型可以指定为无符号(unsigned),表示不取负数。
1字节(bytes)= 8bit。
对于整型类型的范围:
1. 有符号范围:-2^(类型字节数*8-1)到2^(类型字节数*8-1)-1,如int是4字节,就
是-2^31到2^31-1
2. 无符号范围:0到2^(类型字节数*8)-1,如int就是2^32-1
尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型
2.2 字符串类型
数据类型 | 大小 | 说明 | 对应java类型 |
VARCHAR (SIZE) | 0-65,535字节 | 可变长度字符串 | String |
TEXT | 0-65,535字节 | 长文本数据 | String |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | String |
BLOB | 0-65,535字节 | 二进制形式的长文本数据 | byte[] |
2.3 日期类型
数据类型 | 大 小 | 说明 | 对应java类型 |
DATETIME | 8 字 节 | 范围从1000到9999年,不会进行时区的 检索及转换。 | java.util.Date、 java.sql.Timestamp |
TIMESTAMP | 4 字 节 | 范围从1970到2038年,自动检索当前时 区并进行转换。 | java.util.Date、 java.sql.Timestamp |
3. 表的操作
需要操作数据库中的表时,需要先使用该数据库
use db_test;
3.1 查看表结构
desc 表名;
3.2 创建表
语法
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
);
可以使用comment增加字段说明。
示例:
create table stu_test (
id int,
name varchar(20) comment '姓名',
password varchar(50) comment '密码',
age int,
sex varchar(1),
birthday timestamp,
amout decimal(13,2),
resume text
);
3.4 删除表
语法格式
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
示例
-- 删除 stu_test 表
drop table stu_test;
-- 如果存在 stu_test 表,则删除 stu_test 表
drop table if exists stu_test;
6. 内容重点总结
操作数据库
-- 显示
show databases;
-- 创建
create database xxx;
-- 使用
use xxx;
-- 删除
drop database xxx;
常用数据类型:
INT:整型
DECIMAL(M, D):浮点数类型
VARCHAR(SIZE):字符串类型
TIMESTAMP:日期类型
操作表
-- 查看
show 表;
-- 创建
create table 表名(
字段1 类型1,
字段2 类型2,
...
);
-- 删除
drop talbe 表名;
有一个商店的数据,记录客户及购物情况,有以下三个表组成:
商品goods(商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供应商provider)
客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证card_id)
购买purchase(购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)
-- 创建数据库
create database if not exists bit32mall
default character set utf8 ;
-- 选择数据库
use bit32mall;
-- 创建数据库表
-- 商品
create table if not exists goods
(
goods_id int comment '商品编号',
goods_name varchar(32) comment '商品名称',
unitprice int comment '单价,单位分',
category varchar(12) comment '商品分类',
provider varchar(64) comment '供应商名称'
);
-- 客户
create table if not exists customer
(
customer_id int comment '客户编号',
name varchar(32) comment '客户姓名',
address varchar(256) comment '客户地址',
email varchar(64) comment '电子邮箱',
sex bit comment '性别',
card_id varchar(18) comment '身份证'
);
-- 购买
create table if not exists purchase
(
order_id int comment '订单号',
customer_id int comment '客户编号',
goods_id int comment '商品编号',
nums int comment '购买数量'
);
MySQL的安装与配置
数据库分类
数据库大体可以分为 关系型数据库 和 非关系型数据库
关系型数据库(RDBMS):
是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
基于标准的SQL,只是内部一些实现有区别。常用的关系型数据库如:
1. Oracle:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系统。收费。
2. MySQL:属于甲骨文,不适合做复杂的业务。开源免费。
3. SQL Server:微软的产品,安装部署在windows server上,适用于中大型项目。收费。
非关系型数据库:
(了解)不规定基于SQL实现。现在更多是指NoSQL数据库,如:
1. 基于键值对(Key-Value):如 memcached、redis
2. 基于文档型:如 mongodb
3. 基于列族:如 hbase
4. 基于图型:如 neo4j
关系型数据库与非关系型数据库的 区别:
注:OLTP(On-Line Transaction Processing)是指联机事务处理,OLAP(On-Line Analytical
Processing)是指联机分析处理
2.1 Windows绿色安装
解压MySQL:如解压到D:\Tools\mysql-5.7.27-winx64(注意不要放在中文路径、有空格或特殊字符的路径中)
配置环境变量
1. 右键 此电脑 -> 高级系统设置 -> 环境变量 -> 在下面 系统变量栏 点击 新建 ->
变量名:MYSQL_HOME
变量值:为MySQL解压的根目录,我这里为D:\Tools\mysql-5.7.27-winx64
2. 在 系统变量栏 找到 Path 变量并双击:
Win10中点击 新建 以添加新的路径
%MYSQL_HOME%\bin
Win7中直接添加到Path的最前面
%MYSQL_HOME%\bin;
说明:
需要执行某个指令,如D:\Tools\mysql-5.7.27-winx64\bin\mysqld.exe,需要在cmd中输入全路径,或切换到D:\Tools\mysql-5.7.27-winx64\bin目录下执行mysqld.exe。为方便操作,如在cmd可以直接输入mysqld执行该指令,可以按以上配置:
1. 以上配置 %MYSQL_HOME% 代表引用的 MYSQL_HOME 环境变量,即
D:\Tools\mysql-5.7.27-winx64。
2. 配置在 Path 中,表示设置 %MYSQL_HOME%\bin 路径为全局路径,全局路径下的
指令可以直接执行
配置MySQL初始化文件:
1. 在MySQL根目录下创建初始化文件my.ini,即D:\Tools\mysql-5.7.27-winx64\my.ini。内容
如下:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:/Tools/mysql-5.7.27-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:/Tools/mysql-5.7.27-winx64/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=innodb
2. 将以上 basedir 和 datadir 后的内容替换成自己的路径。
3. 注意:需要保存为ANSI编码。方法一:使用记事本打开,保存/另存为,选择ANSI编码。方法二:使用Notpad++打开,点击编码->转为ANSI编码->保存。
初始化MySQL
右键点击cmd,选择 以管理员身份运行,执行以下命令
mysqld --initialize-insecure
如果出现找不到mysqld或是mysql命令,这是环境变量没有配置正确。检查环境变量,如果正确,则重新打开cmd,因为cmd会缓存系统变量,没有更新。
以上初始化操作完成后,可以看到在MySQL根目录下生成了data目录。
初始化的MySQL会生成超级管理员,账户名 root ,密码为空
安装MySQL服务:
如果以前安装过MySQL,会默认安装MySQL的系统服务,点击开始菜单,输入services.msc,进入系统服务界面,搜索是否有mysql服务(可以在英文状态输入mysql快速定位),如果有mysql
服务,需要先删除,有以下两种删除方法:
1. cmd管理员权限打开,输入sc delete mysql
2. 如果以上命令执行失败,还可以直接使用注册表删除,点击开始菜单,输regedit,查找HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services中的mysql,将其删除在以上mysql服务删除后,可以安装新解压的mysql服务了,在cmd执行:
mysqld install
此时执行 win+r 输入 services.msc 打开服务管理器,可以看到MySQL服务运行/停止MySQL服务端
cmd执行
net start mysql
net stop mysql
客户端连接MySQL服务器
MySQL默认只允许在服务器本机 使用 root 用户登录,要开启 root 用户的远程登录,在MySQL服务器本机执行
mysql -u root -p
要求输入密码,没有设置密码则直接回车
进入MySQL命令行以后,可以看到 mysql>
-- 使用mysql数据库
use mysql;
-- 更新用户表的root账户,设置为任意ip都可以访问,密码修改为123456
update user set host="%",authentication_string=password('root') where
user="root";
-- 刷新权限
flush privileges;
退出
quit;
SQL分类
DDL数据定义语言,用来维护存储数据的结构
代表指令: create, drop, alter
DML数据操纵语言,用来对数据进行操作
代表指令: insert,delete,update
DML中又单独分了一个DQL,数据查询语言,代表指令: select
DCL数据控制语言,主要负责权限管理和事务
代表指令: grant,revoke,commit
以上SQL我们主要会在后面学习DDL和DML的操作