前言
概述
数据库就是保存数据的仓库,我们常说的数据库是xx数据库管理软件,是组织并存储数据的软件,一般是存储在硬盘上,也有些是存储在内存中。
分类
数据库主要可以分成两类:
名称 | 特点 |
---|---|
关系型数据库 | 数据的组织形式使用“表”作为结构,首先得有一个表头,表头里约定有很多列,以及每一列的类型,插入的数据就是表中的一行,这一行里的每一列都要和表头对应 |
非关系型数据库 | 数据的组织形式是使用“键值对”作为结构,类似于Map,存储的时候需要指定Key和Value,每组数据的value中需要包含哪些字段没有明确要求,对于数据的要求更低 |
非关系型数据库,牺牲了一部分的功能,但是换来了更高的效率以及更强的水平扩展能力,更适合用于分布式系统。
SQL
SQL是一种编程语言,是** “结构化的查询语言” **
(MySQL、SqlServer…都是数据库软件)
操作数据库是主要使用的额就是SQL语言
关系型数据库都是支持SQL的,虽然不同的数据库软件支持的SQL细节可能不太一样,但是整体差别不大。
相关操作
MySQL服务器是一个软件,这个软件运行软件过程中可以维护多个逻辑上的数据库
例如:实现一个商品管理系统,需要创建一个商品信息数据库,实现一个动物信息管理系统需要创建一个动物信息数据库,MySQL服务器可以放入这两个逻辑上的数据库。
1.查看数据库
代码:
show databases;
MySQL中的SQL绝大部分都要带分号,个别不需要
2.创建数据库
create database[数据库名];
3.使用数据库
当前有多个数据库,通过使用操作,就能选中某个数据库,接下来的命令都是针对这个数据库生效的。
use 数据库名;
4.删除数据库
drop database[数据库名];
输出: mysql> drop database test1;
Query OK, 6 rows affected (0.08 sec)
删除操作非常危险,一旦删除通过常规手段是无法找回的.
更好的删除操作:
drop database if exists 数据库名;
mysql> drop database if exists test1;
Query OK, 0 rows affected, 1 warning (0.00 sec)
常用数据类型
数据类型 | 大小 | 说明 | 对应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) | 同上 | 同上 | 同上 |
常用串字符类型
数据类型 | 大小 | 说明 | 对应Java类型 |
---|---|---|---|
VARCHAR (SIZE) | 0-65,535字节 | 可变长度字符串 | String |
TEXT | 0-65,535字节 | 长文本数据 | String |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | String |
BLOB | 0-65,535字节 | 二进制形式的长文本数据 | byte[] |
日期类型
数据类型 | 大小 | 说明 | 对应Java类型 |
---|---|---|---|
DATETIME | 8 字 节 | 范围从1000到9999年,不会进行时区的检索及转换。 | java.util.Date、java.sql.Timestamp |
TIMESTAMP | 4 字 节 | 范围从1970到2038年,自动检索当前时区并进行转换。 | java.util.Date、java.sql.Timestamp |
表的相关操作
使用表之前要先 use 数据库
mysql> use test;
Database changed
创建表
create table shop (字段名 类型 ,字段名 类型...);
mysql> create table shop(
-> id int,
-> name varchar(20)
-> );
Query OK, 0 rows affected (0.02 sec)
查看表
desc 表名;
创建表的时候如果表名或者列名和SQL中的关键字重复了,就会报错.
可以把名字冲突的部分用反引号引起来就能解决这个问题
查看有多少表
show tables;
创建一个复杂点的表
create table goods(
goods_id int,
goods_name varchar(50),
unit_price decimal(7,2),
category varchar(50),
provider varchar(50)
);
create table customer(
customer_id int,
name varchar(20),
address varchar(50),
email varchar(20),
sex varchar(5),
card_id varchar(20)
);
create table purchase (
order_id int,
customer_id int,
goods_id int,
nums int
)
mysql> show tables;
±---------------+
| Tables_in_test |
±---------------+
| customer |
| goods |
| purchase |
±---------------+
3 rows in set (0.00 sec)
查看一下customer表: