一、数据库使用流程
- 用户在客户端输入SQL语句
- 客户端会把SQL通过网络发送给服务器
- 服务器会执行这个SQL,把结果返回给客户端
- 客户端接收到结果后,显示到界面上
二、数据库的操作
1.创建数据库
1.1 语法
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
1.2 解析
-
已经有了数据库,为何还要创建
- 计算机中,不同的词有不同的含义,如一门学科、一类软件、某个具体的数据库软件、某个部署了数据库的服务器的主机、某个具体的正在运行的数据库服务器程序、一个数据库集合……
- 我们现在有的准确的说是 数据库服务器 ,在这个数据库服务器上,可以根据逻辑划分出多个不同的数据集合,每个数据集合就称为是一个‘数据库’,我们要创建的就是一个 数据集合
-
基础语法
- create ,database……相当于关键字,即无法充当变量名
- SQL的关键字是不区分大小写的
- 创建的数据库的名字不能重复(可以通过if not exists 来判断)
- 单词之间至少有一个空格,不能没有
- 在命令行客户端中输入的SQL语句必须以 ;(英文) 作为结尾
-
MYSQL的效率问题
- (0.01 sec):sec是second(秒)的意思,0.01s即10毫秒,0.00sec 小于10毫秒。数据库的很多操作,都是并不高效的
-
说明
- [] 是可选项
CHARACTER SET: 指定数据库采用的字符集
COLLATE: 指定数据库字符集的校验规则
- [] 是可选项
1.3 使用
创建名为test 的数据库
当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则时:utf8_general_ci
create database test;
如果系统没有test数据库,则创建一个名为test的数据库,有则不创建
如果是单行SQL没有什么问题,但是如果是批量执行SQL(把很多SQL写到一个文件中),如果中间某个SQL报错,就会执行停止
create database if not exists test;
如果系统没有test数据库,则创建一个使用utf8mb4字符集的名为test的数据库,有则不创建
如果是单行SQL没有什么问题,但是如果
说明:MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符。MySQL真正的utf8是使用utf8mb4,建议大家都使用utf8mb4
create database if not exists test character set utf8mb4;
# 或
create database if not exists test charset utf8mb4;
-
字符集
-
mysql的字符集
- mysql 默认字符集是拉丁文(没法表示中文的),所以手动设定一个字符集是十分关键的,后续如果要插入一些中文,如果不是utf8/gbk之类的中文就会出现乱码
-
字符集:针对汉字进行编码
- VS 使用的编码方式是跟随系统,Windows 系统编码就是gbk。java 的字符集是在编译运行的时候,通过命令行参数显示指定的,一般默认都是utf8
- 英文字母在计算机中通过ASCII表示,ASCII使用数字表示字符,且只能表示英文字母和标点符号以及阿拉伯数字。汉字要表示的内容特别多,但我们依旧是采用ASCII的编写思路,搞一个更大的表,来表示汉字。对于中文来说,最常见的表示方式是gbk和utf8
- gbk:使用两个字节,表示一个汉字。 utf8:使用三个字节,来表示一个汉字(更加主流,除了汉字之外,各种其他国家的语言文字符号都能表示)。 utf8mb4:是完整版utf8,MySQL的utf8是残缺的,缺少了一些emoji表情
-
mysql的字符集
2.显示数据库
因为显示的数据库可能有多个,所以要加后缀s
系统自带的数据库,如information_schema、mysql、performance_schema、sys,不要乱改
cmd 上允许把一个SQL分成多行来写,如果没有;这表示换行,而不是“确认执行”
show databases;
3.使用数据库
后续操作的大前提(一旦选中了某个指定的数据库,后续操作就都是针对该数据库展开了)
use 数据库名
4.删除数据库
注意,一旦删掉数据库,里面的数据就都没有了,很难恢复
DROP DATABASE [IF EXISTS] db_name;
- 如何避免删除数据库
- 权限,不同的用户,能进行的操作是不一样的
- 备份,一旦不小心误删除了某些重要数据,可以通过之前的备份数据,恢复回来
- 检查,在执行某些重要操作的时候,拉上其他人帮忙一起检查
三、常用数据类型
3.1 数值类型
数值类型可以指定为无符号(unsigned),表示不取负数。
DECIMAL能够精确表示小数,但是float和double是不行的,但是DECIMAL存储空间占用的更多,计算速度也更慢
数据类型 | 大小 | 说明 | 对应Java类型 | 对应C类型 |
BIT[ (M) ] | M指定位数,默认为1 | 二进制数,M范围从1到64,存储数值范围从0到2^M-1 | 常用Boolean对应BIT,此时默认是1位,即只能存0和1 | char[] |
TINYINT | 1字节 | Byte | signed char | |
SMALLINT | 2字节 | Short | short int | |
INT | 4字节 | Integer | int | |
BIGINT | 8字节 | Long | long long int | |
FLOAT(M, D) | 4字节 | 单精度,M指定长度(有效数字的长度),D是小数点后的位数。会发生精度丢失 | Float | float |
DOUBLE(M,D) | 8字节 | Double | double | |
DECIMAL(M,D) | M/D最大值+2 | 双精度,M指定长度,D表示小数点位数。精确数值 | BigDecimal | char[] |
NUMERIC(M, D) | M/D最大值+2 | 和DECIMAL一样 | BigDecimal | char[] |
3.2 字符串类型
数据类型 | 大小 | 说明 | 对应Java类型 | 对应C类型 |
VARCHAR (SIZE) | 0-65,535字节 | 可变长度字符串,SIZE表示最大长度,单位是字符,不是字节,即varchar(10)就表示最多十个字 | String | char[] |
TEXT | 0-65,535字节 | 长文本数据 | String | char[] |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | String | char[] |
BLOB | 0-65,535字节 | 二进制形式的长文本数据 | byte[] | char[] |
3.3 日期类型
数据类型 | 大小 | 说明 | 对应Java类型 | 对应C类型 |
DATETIME | 8字节 | 范围从1000到9999年,不会进行时区的检索及转换 | java.util.Date、java.sql.Timestamp | MYSQL_TIME |
TIMESTAMP | 4字节 | 时间戳,范围从1970到2038年,自动检索当前时区并进行转换 | java.util.Date、java.sql.Timestamp | MYSQL_TIME |
四、数据表操作
关系型数据库中,数据是以“表”的方式来进行组织的,每个数据库中,里面就可以有很多个数据表,每个表可以有很多行,每一行又可以有很多个列(字段)
所有的和表相关的操作,都需要选中数据库再进行
1.创建表
CREATE TABLE table_name (
field1 datatype, -- field 类型 datatyoe 结构
field2 datatype,
field3 datatype
);
2.查看当前数据库中的所有表
show tables;
3.查看指定表的结构
desc 表名 -- desc == describe(描述)
文章来源:https://www.toymoban.com/news/detail-468611.html
4.删除表文章来源地址https://www.toymoban.com/news/detail-468611.html
drop table 表名;
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
到了这里,关于MYSQL数据库基础(数据库)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!