1. 数据库概要
1.1 特点
- 可以通过某种特定的操作语言进行增删改查等数据操作
- 可以通过某种特定的数据定义语言来建立新的数据库
- 支持大量,长时间的存储,并在数据查询和更新时支持对数据的有效存储
- 具有持久性,面对故障、错误或用户错误使用数据库时,数据库可以恢复保证数据一致性
- 可以控制多个用户对数据的同时存取,不允许相互干扰,也不允许对数据不完整的操作
1.2 相关概念
- 数据: 数据库存的数据
- 元数据: 描述数据库结构及其约束的数
- 日志记录: 修改信息等
- 统计记录: 数据特征的数据,例如,库大小等
- 索引: 对数据库数据有效存取的数据结构
2. 关系型数据库(Relational DBMS)
2.1 基本概念
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类,合并,连接或选取等运算实现数据的管理。
2.2 关系型数据库的一些主要概念
- 表(table)
- 列(column)
- 记录(record)
- 关系(relation)
- 键值(key)
2.3 Schema模式
数据库的组织和结构,就是数据库对象的集合,所谓的数据库对象也就是常说的表,索引,视图,存储过程等。
2.4 我们怎么使用数据库?
- 先清楚储存什么样的数据到数据库
- 根据需求创建数据库结构
- 之后可以用来怎样查询
3. SQL语言
- DDL(Data Definition Language)——create,drop,alter,declare
- DML(Data Manipulate Language)——select,delete,update,insert
- DCL(Data Control Language)——grant ,revoke,commit,rollback
3.1 创建
1. create
- 数据库
-- 创建数据库
create database/schema if not exists test;
注:
。与关键字重名处理方式,加` ` , 例如:`database`, 一般不建议使用关键词作为数据库名或表明
。使用数据库的命令:use test;
- 表格
-- 创建表格
create table t1;
2. drop
- 数据库
-- 删除数据库
drop database if exists test;
- 表格
-- 删除表格
drop table t1;
3.2 语句——select
-- 查询表中所有信息
select * from table;
-- 查询sql版本
select version();
3.3 数据类型
- 数值
- 日期和时间
- 字符串
- 空间数据
- JSON
数值型存储空间
数据类型 | 存储要求 |
---|---|
tinyint | 1 byte |
smallint | 2 bytes |
mediumint | 3 bytes |
int, integer | 4 bytes |
bigint | 8 bytes |
float (p) | 4 bytes, ; 8 bytes |
float | 4 bytes |
double, real | 8 bytes |
decimal(M,D), numerical(M,D) | |
bit(M) | 大概是 bytes |
4. 创建表单
4.1 创建表格
1. 创建表格t1,包含3列d_num,c_num,e_num
create table t1(
d_num int,
c_num int,
e_num int);
2. 插入数据
-- 插入完整的列数据,可省略列名
insert into t1
values(1,2,3),(4,5,6);
-- 部分列插入数据,需要指明列名
insert into t1(d_num,e_num)
values(1,2),(3,5);
3. 浮点
DECIMAL Fixed-Point Types 准确值
- FLOAT and DOUBLE Floating-Point Types 近似值
- M 总共多少位, D小数点后有几位
- FLOAT(M,D) , DOUBLE PRECISION(M,D)
- DECIMAL(5,2) , -999.99 to 999.99
- DECIMAL 最多65位
- decimal 必须指定位数
- Float,Double 可以不指定
decimal(M,D)
create table t3 (
d1 decimal(5,2), d2 double(5,2),
d3 float(5,2), d4 decimal,
d5 double, d6 float);
insert into t3
values
(34.432,34.432,34.432,34.432,34.432,34.432),
(34,34,34,34,34,34),
(34.439,34.439,34.439,34.439,34.439,34.439);
select * from t3;
float
create table decimal_float (dml decimal(10,2), flt float(10,2));
insert into decimal_float values (64.83, 74.88);
insert into decimal_float values (25.99, 45.99);
SELECT ( 1.0000000 * flt ) FROM decimal_float;
SELECT ( 1.0000000000 * flt ) FROM decimal_float;
SELECT ( 1.000000000000000 * dml ) FROM decimal_float;
4. char和vchar
- char:字符串型,定长
- vchar:字符串型,不定长
create table vc(v VARCHAR(5),c char(5));
insert into vc values("ab ","ab ");
select concat("(",v,")"),concat("(",c,")") from vc;
- concat() 函数是连接作用,比如
concat("ac","b");
,输出为“acb” - text 数据结构存放超长数据
- blob存放二进制数据
5. enum 和 set
- enum像单选
- set像多选
create table fonts(
name varchar(40),
color enum("red","green","blue"),
attribute set("bold","italic","underline"));
insert into fonts(color) values("red");
insert into fonts(attribute) values("bold");
insert into fonts(attribute) values("bold,italic");
select * from fonts;
- 在此例子中,color的值不能为enum中的组合,如不能为“red,blue”,而attribute的值可以为set中的组合,如“bold,italic”
- 在插入color时,可以用数字,如
insert into fonts(color) values(2);
,则输出为"green",即要从1开始 - 在插入attribute时,也可以用数字,其中(“bold”,“italic”,“underline”)所对应的数字分别为(1,2,4)例如
insert into fonts(attribute) value(7);
,则输出为“bold,italic,underline”
6. 时间戳
create table if not exists data_time_type(
employee_date date comment '1973-12-30',
departure_date datetime comment'00:00:00 to 9999-12-31 23:59:59',
dpt_datetime datetime(6),
details_datetime timestamp comment'1970-01-01 00:00:01 UTC 2038-01-19 03:14:07');
insert into data_time_type(
employee_date,
departure_date,
dpt_datetime,
details_datetime)
value
('1973-12-30','1234-12-31 23:59:59','1234-12-31 23:59:59','2028-01-19 03:14:07',
'1973-12-30','1234-12-31 23:59:59','1234-12-31 23:59:59','2028-01-20 03:14:07');
select * from data_time_type;
在计算机应用上,2038年问题可能会导致某些软件在2038年1 月19日3时14分07秒之后无法正常工作。
所有使用POS IX时间表示时间的程序都将受其影响,因为它们以自1970年1月1日经过的秒数(忽略闰秒)来表示时间。这种时间表示法在类Unix (Unix-like) 操作系统上是一个标准
6. 常用的一些定义
- MySQL本身硬性要求列数不能超过40962,实际往往限制会更严,行的大小不超过65, 535 bytes
- “性别”,“国家民族”“状态=> ENUM
- IP地址存=> UNS IGNED INT
- 尽可能的使用NOT NULL
- 固定长度的表会更好
- 密码怎么保存?vchar
转载:https://blog.csdn.net/qq_40764503/article/details/105018127
查看评论