数据库的操作
使用数据库
use 数据库名; //意义:数据库是先选中,后操作的.
显示当前数据库
show databases;
演示(这里已经提前创建好了一个business数据库,这里面的其它数据库是系统自带的):
创建数据库
语法:
一般来讲就是: create database 数据库名; //create是创建数据库的关键字
当然还有以下两种形式:
create database [if not exists] db_name [create_specification[, create_specification]...]
//用于在关系型数据库管理系统(RDBMS)中创建一个新的数据库,具体的以后再介绍.
create_specification:
[default] character set charset_name
[default] collate collation_name
//create_specification部分用于为新创建的数据库指定字符集(character set)和排序规则(collation)
说明:
1.加粗的部分表示关键字(这一整篇博客都是这样的规则)
2.[]中的内容是可选项
3.character set:指定数据库采用的字符集
4.collate:指定数据字符集的校验规则
示例:
创建名为db_test1的数据库
create database db_test1;
//说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8(utf8是一种通用的编码方式,涵盖世界的大部分语言和所有符号,是一种变长编码(可以变为1,2,3字节)),校验规则是: 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(在数据库中的utf8存在内容缺失的问题,因此它不是完全体),没有包含某些复杂的中文字符.MySQL真正的utf8是使用utf8mb4,建议都是用这个
删除数据库(warning)
语法:
drop database [if exists] db_name;
//说明:数据库删除以后,内部看不到对应的数据库,里面的表和数据全都会被删除
特别警告:删除数据库(删库)在实际开发中是一种极其危险的操作!!!如果没有想好,千万不要进行这一操作!!!删除数据库(删库)在实际开发中是一种极其危险的操作!!!如果没有想好,千万不要进行这一操作!!!删除数据库(删库)在实际开发中是一种极其危险的操作!!!如果没有想好,千万不要进行这一操作!!!
常用数据类型
数值类型
数据类型 | 大小 | 说明 | 对应java类型 |
bit[(M)](不常用) | M指定位数,默认为1 | 二进制数,M范围从1到64, 存储数值范围从0到2^M - 1 |
常用Boolean对应bit,此时 默认是一位,即只能储存0和1 |
tinyint | 一字节 | 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 |
number(M, D) | M/D最大值 + 2 | 和decimal一样 | BigDecimal |
字符串类型
数据类型 | 大小 | 说明 | 对应java类型 |
varchar(size) | 0-65535字节 | 可变长度字符串 | String |
text | 0-65535字节 | 长文本数据 | String |
mediumtext | 0-16777215字节 | 中等长度文本数据 | String |
blob | 0-65535字节 | 二进制形式的长文本数据 | byte[] |
说明:
1.前三个是文本文件数据(存储标准字符),第四个是二进制数据(存储任意数据)(很少使用)
2.varchar(size)中的size表示最大长度(最多存储的长度),且其为动态扩容;而text无size
3. 设定长度上限-兜底,需要关注,数据库存储数据时占用多少空间的
日期类型
数据类型 | 大小 | 说明 | 对应java类型 |
datatime | 8字节 | 范围从1000年到9999年,不会进行时区的检索及转换 | java.util.Date, java.sql.Timestamp |
timestamp(时间戳) | 4字节 | 范围从1970年到2038年,自动检索当前时区并进行转换 | java.util.Date, java.sql.Timestamp |
表的操作(前提是先选中数据库)
需要操作数据库中的表时,需要先使用该数据库:
use db_test;
查看表的结构
desc 表名;
演示(已经创建好了一个表):
1.Field是字段名字,Type是字段类型,Null表示是否允许为空,Default是默认值,Extra是扩充
2.int后面的数字是显示(打印) 时宽度占多少位置(位宽),因为int范围:-21亿->21亿,算上"-"总计占11位置
3.Null具体意思是单元格里面什么意思都没有,空着
创建表
语法:
create table table_name (
field1 datatype,
field2 datatype,
field3 datatype
);
//与之前学的语言不同,这里姓名在前,类型在后
说明:
1.create table 表明(列名 类型, 列名 类型...),创建表的时候,必须要描述出表包含哪些列,每一列的类型,每一列的名字,后续向表里放的数据,也要遵守这里的规则
可以使用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
);
//不过现在comment这种注释不够通用,只能作为表的列注释解释
//sql一般用"-"和"#"注释
删除表
语法格式:
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;
特别警告:错误删除表引起的后果可能比删除整个数据库更大
如果删了整个库,后续程序进行数据库操作,都会出问题,程序员能够更早的发现问题
如果删了其中的一个表,程序运行的过程中,大概率是对的,少数操作是错的,就难以发现问题
内容重点总结
操作数据库:
-- 显示
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 表名 ;