目录
数据库
关系型数据库
非关系型数据库
MYSQL
登录
创建数据库
字符集
警告,错误,致命
查看数据库
选中数据库
删除库
数据类型
数值类型
字符串类型
日期类型
表的操作
选定数据库
创建表
多行输入
注释
单行注释:
多行注释
查看表结构
查看表
删除表
练习题
数据库
在使用MYSQL之前,先简单了解一下数据库的类型
数据库的类型分为四大类:
一:关系型数据库。
二:非关系型数据库。
三:网状数据库。
四:层次数据库。
目前最常见的数据库模型主要是:关系型数据库和非关系型数据库。
关系型数据库
关系型数据库有Oracle,MYSQL,SQL Server,SQLite
非关系型数据库
非关系型数据库有Memcached、MongoDB,redis,HBase
MYSQL
我们要使用的MYSQL就是关系型数据库
下载和安装网上都有,这里不复述
登录
安装完成后打开MYSQL,会看到这个页面
输入安装的时候,设置的密码
忘了就删了重新安装吧
后面还有很多你不小心的操作也会导致你需要重新安装MYSQL
所以先不要急躁,学习编程就是要多折腾,要有耐心
看到这个页面说明登录成功
如果密码输入错误,会直接闪退
创建数据库
create database 库名;
注意:
库名不能和MYSQL的关键字重复
报错的大意是:你有一个SQL语法错误,检查MySQL 的语法手册,在第一行create附近.
to use 前面的话,都不重要,重要的是后面的,他会告诉你那部分出现了错误.
如果非要使用关键字来创建库名,可以使用反引号把他括起来 `create`
反引号就是P社游戏的控制台按键,在你键盘的左上角,ESC的下面,1的左边,table的上面也就是~号的位置
我们打上反引号试试
create database `create`;
可以看到创建成功,有人可能会好奇后面括号里面是什么东西?
他的括号里面的(0.00sec),指的是创建完成的时间
为0不一定是0S,可能是更小的时间单位,比如毫秒,微秒等
字符集
创建数据库的时候,还可以指定他的字符集
说到字符集,我们需要了解一下计算机是如何表示英文字母?
计算机中表示英文字母的办法是用数字来表示字母
ascii码表就是字母和数字有对应关系
UTF8这个字符集,它支持各种非英语字母表
所以我们可以在创建库的时候把他带上
create database test charset utf8;
可以看到我们已经成功创建了一个名为test的库,他使用utf8这个字符集
汉字在utf8中是占三个字节位置进行存储,但是有些特殊的字,他不是三个字节存储,这就导致utf8并不能表达所有的汉字,这个时候,我们就可以使用utf8mb4字符集.
utf8mb4字符集除了识别一些不常用的汉字,还可以识别Emoji 表情.
我们可以和使用utf8字符集一样使用utf8mb4字符集
create database test charset utf8mb4;
哎,这是为什么呢,明明代码和前面的一模一样,为什么就报错了?
难道是utf8mb4字符集的使用方式不一样?
仔细看一下报错,我们会发现,(报错大意:)不能创建数据库,因为这个数据库存在
原来不是添加字符集的方式错了,而是一个已经添加了字符集的库不能改用另一个字符集
我们可以先给库换个名字来看看utf8mb4的添加方式对不对,在来看如何下次避免这个问题再出现
create database test_2 charset utf8mb4;
可以看到utf8mb4这个字符集的添加方式和utf8是一样的
如果为了节省空间,可以使用utf8字符集
警告,错误,致命
可能有人会想,我不想看到他老是报错,我看到他报错就烦,怎么样能避免报错呢?
现在我们再来看如何避免报错
我们可以加上一段话来解决这个报错问题
create database if not exists test;
if not exists的意思就是如果不存在就创建
连起来就是如果test这个库 不存在 就创建,存在 就 不创建
我们可以看到加上这句话以后,他不报错,但是给了一个警告
警告不影响代码运行,错误会影响代码的运行,致命就是非常严重的问题,会致命
我们还可以查看当前有多少警告
show warnings;
能看到只有刚才的警告
查看数据库
和查看警告一样,需要使用show
show databases;
需要注意的是:他是复数形式的databases,不是database
这样我们就可以看到我们创建了多少数据库,其中有些数据库是你自己创建的,有些数据库是系统自带的,后面我会把系统自带的数据库标记出来,并且说明如果你不小心操作错了数据库,会怎么样
选中数据库
如果你不选中数据库,系统也不知道你要干什么,让谁干什么,就像如果不喊名字,喊那个谁,那谁知道你在喊谁
use 库名;
删除库
drop database 库名;
选择删除test这个数据库,删完以后查看一下,是否成功删除
通过对比可以看到已经没有test这个数据库了
注意:
删库需谨慎! 这东西没有回收站! 删完无法恢复!
删库需谨慎! 这东西没有回收站! 删完无法恢复!
删库需谨慎! 这东西没有回收站! 删完无法恢复!
如果你不小心把系统的数据库干掉了,那恭喜你,又可以重新安装一次了!
这四个红框里面的就是MYSQL的数据库
干掉一个,你就可以把他删完然后重新安装了
误删系统库我就不演示了,欢迎感兴趣的小伙伴尝试一下,然后给我分享一下,蟹蟹了.
数据类型
数值类型
标红的是常用的
数据大小 | 大小 | 说明 | 对应Java类型 |
BIT[ (M) ] | M指定位数,认为1 | 二进制数,M范围从1到64, | 常用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 | 双精度,M指定长度,D指定 | BigDecimal |
注意:
常用的是int和double以及decimal
float和java里面一样,他是单精度浮点,一般不用他保存数据,容易丢失精度
一般都是使用double或者他下面的decimal来保存带小数的数据
字符串类型
数据类型 | 大小 | 说明 | 对应Java类型 |
VRCHAR(SIZE) | 0-65535字节 | 可变长度字符串 | String |
TEXT | 0-65535字节 | 长文本数据 | String |
MEDIUMTEXT | 0-1677215字节 | 中等长度文笔数据 | String |
BLOB | 0-65535字节 | 二进制形式的长文本数据 | byte[] |
注意:
常用的是VRCHAR(SIZE)
VRCHAR(SIZE)这个代码用到SQL里面以后他的SIZE,不是字节,而是字符
日期类型
数据类型 | 大小 | 说明 | 对应Java类型 |
DATATIME | 8字节 | 范围从1000到9999年,不会进行时区的 | java.util.Date、 |
TIMESTAMP | 4字节 | 范围从1000到2038年,自动检索当前时区并进行转换 | java.util.Date、 |
注意:
TIMESTAMP这个代码有一定危险性,他到2038年就会出现问题
使用的时候需要避免
没必要刀尖上跳舞,你说是吧,不作死就不会死
表的操作
选定数据库
创建表之前,需要先选定你要操作的数据库,不然他也不知道,你要对那个数据库进行操作
use 数据库;
创建表
-- 创建一个表
create table 表名(
commodity_name VARCHAR(字符),
commodity_price decimal(长度,精度),
commodity_stock int,
commodity_details VARCHAR(字符)
);
create table 表名(
列名 类型,
列名 类型,
列名 类型,
列名 类型
);
create table `table`(id int);
注意:
1.创建表名的时候,表名后面跟着的是先是列名,然后才是类型.
2.同一个数据库里面,不能有两份一样的表名
3.表名和列名不能和SQL的关键字一样,如果非要一样,就用 ` ,反引号引起来
` 反引号在键盘的左上角,ESC的下面,1的左边,table的上边,和数据库的创建要求一样
多行输入
看到这个表的创建方式有人会好奇,为什么可以分开这么多行输入,
这是因为MYSQL的结束是需要加英语的封号才算结束这句话,
所以只要你不加英语的封号,就可以实现多行输入
就和上面创建表一样;
也可以仔细看一下我上面这段话,是不是和多行输入代码有点相似的东西,又有点不相似的东西
注释
说到创建表,就会有人好奇,-- 创建一个表,中的-- 是什么东西
这个就是MYSQL的注释
注释在sql语句中用来标识说明或者注意事项的部分,对sql的执行没有任何影响。因此,注释内容中无论是英文字母还是汉字都可以随意使用。
MYSQL注释分为单行注释和多行注释
单行注释:
单行注释可以使用 #注释符,#注释符后直接加注释内容。格式如下
#注释内容
单行注释使用注释符 # 的示例如下:
#创建一个测试库
create database test;
单行注释可以使用 -- 注释符,-- 注释符后需要加一个空格,注释才能生效。格式如下:
-- 注释内容
单行注释使用注释符 -- 的实例如下:
-- 使用测试库
use test;
多行注释
多行注释使用/**/注释符,/*用于注释内容的开头,*/用于注释内容的结尾。多行注释格式如下:
/*
第一行注释内容
第二行注释内容
*/
注释内容写在/*和*/之间,可以跨多行。
多行注释的使用示例如下:
/*创建一个测试表,里面有id和名字
create table test1(
id int;
name VARCHAR(4)
);
*/
任何注释(单行注释和多行注释)都可以插在sql语句中
在sql语句中插入单行注释,在sql语句中插入多行注释,如下所示:
-- 创建图书表2
create table library2(
-- 图书名称
library_title VARCHAR(4),
-- 图书作者
library_author VARCHAR(4),
/*
图书价格
图书分类
*/
library_Price decimal(4,4),
library_type VARCHAR(4)
);
可以看到在多行注释符里面
就算是你输入的是sql语句,他也看不见
查看表结构
创建完表格以后,我们可以看一下我们创建的表在MYSQL里面长什么样子
desc 表名;
下图就是表的组成成分
查看表
在创建完成后,我们可以查看当前数据库里面的表有哪些
show tables;
这句sql语句和显示数据库的语句非常相似
同样使用show 并且是tables是复数形式
(这个表是我其他库的表,所以演示出来效果和上图演示建立的表不一样,不过这不重要)
删除表
drop table 表名;
删除表之后我们看一看,再次查询表,他会报错说表不存在,说明删除成功
注意:
删除表和删除库是一样的性质! 没有回收站! 一旦删除就无法找回! 谨慎操作!
删除表和删除库是一样的性质! 没有回收站! 一旦删除就无法找回! 谨慎操作!
删除表和删除库是一样的性质! 没有回收站! 一旦删除就无法找回! 谨慎操作!
如果你把库删了,但是不想动里面的表,那不好意思东西都没了
代码演示:
-- 使用库
use test2;
--创建商品表
create table commodity(
-- 商品名称
commodity_name VARCHAR(20),
-- 商品价格,单位分
commodity_price decimal(11,2),
-- 商品库存
commodity_stock int,
-- 商品描述
commodity_details VARCHAR(100)
);
--看一眼表
desc commodity;
--删除库
drop database test2;
--看所有库
show databases;
--看表
desc commodity;
使用test2这个库
创建表
看一眼表
删除库
看所有库
test2此时已经不存在了
相对应的它存储的表也不会存在
看表
不出意外,表不存在了
注意:
删库和删表绝对要谨慎! 删错没有回收站!
删库和删表绝对要谨慎! 删错没有回收站!
删库和删表绝对要谨慎! 删错没有回收站!
练习题
文章看完了,该你动手了
1.设计一张商品表,包含以下字段:商品名称、商品价格、商品库存、商品描述
2.设计一张老师表,包含以下字段:姓名、年龄、身高、体重、性别、学历、生日、身份证号
3.设计一张图书表,包含以下字段:图书名称,图书作者、图书价格、图书分类
创建商品表
//设计一张商品表,包含以下字段:商品名称、商品价格、商品库存、商品描述
-- 创建库,规定他的使用字符集为utf8mb4
create database test1101
default character set utf8mb4;
--使用库
use test1101;
--创建表
create table commodity(
-- 商品名称
commodity_name VARCHAR(20),
-- 商品价格,单位分
commodity_price decimal(11,2),
-- 商品库存
commodity_stock int,
-- 商品描述
commodity_details VARCHAR(100)
);
//查看表
desc commodity;
//设计一张老师表,包含以下字段:姓名、年龄、身高、体重、性别、学历、生日、身份证号
-- 创建教师库
create database teacher1101
default character set utf8mb4;
-- 使用教师库
use teacher1101;
--创建教师表
create table teacher(
-- 姓名,考虑少数名族
teacher_name VARCHAR(20),
-- 年龄
teacher_age int,
-- 身高,双精度
teacher_hight double,
-- 体重,双精度
teacher_weight double,
-- 性别,一个汉字
teacher_Gender int,
-- 学历
teacher_education VARCHAR(8),
-- 生日,日期
teacher_birthday datetime,
-- 身份证号18位
teacher_ID VARCHAR(18)
);
--查看表
desc teacher;
//设计一张图书表,包含以下字段:图书名称,图书作者、图书价格、图书分类
-- 创建图书库
create database library1101
default character set utf8mb4;
-- 使用图书库
use library1101;
-- 创建图书表
create table library(
-- 图书名称
library_title VARCHAR(20),
-- 图书作者
library_author VARCHAR(20),
-- 图书价格
library_Price decimal(11,2),
-- 图书分类
library_type VARCHAR(20)
);
-- 显示表
desc library;
本文完,欢迎大家指出里面的错误,大家一起交流,互相学习,才能有所进步!
感谢观看 !