小言_互联网的博客

MySQL(1)

305人阅读  评论(0)

1. 数据库概要

1.1 特点

  1. 可以通过某种特定的操作语言进行增删改查等数据操作
  2. 可以通过某种特定的数据定义语言来建立新的数据库
  3. 支持大量,长时间的存储,并在数据查询和更新时支持对数据的有效存储
  4. 具有持久性,面对故障、错误或用户错误使用数据库时,数据库可以恢复保证数据一致性
  5. 可以控制多个用户对数据的同时存取,不允许相互干扰,也不允许对数据不完整的操作

1.2 相关概念

  • 数据: 数据库存的数据
  • 元数据: 描述数据库结构及其约束的数
  • 日志记录: 修改信息等
  • 统计记录: 数据特征的数据,例如,库大小等
  • 索引: 对数据库数据有效存取的数据结构

2. 关系型数据库(Relational DBMS)

2.1 基本概念

关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类,合并,连接或选取等运算实现数据的管理。

2.2 关系型数据库的一些主要概念

  • 表(table)
  • 列(column)
  • 记录(record)
  • 关系(relation)
  • 键值(key)

2.3 Schema模式

数据库的组织和结构,就是数据库对象的集合,所谓的数据库对象也就是常说的表,索引,视图,存储过程等。

2.4 我们怎么使用数据库?

  1. 先清楚储存什么样的数据到数据库
  2. 根据需求创建数据库结构
  3. 之后可以用来怎样查询

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, 0 p 24 0\leq p \leq 24 ; 8 bytes 25 p 53 25 \leq p \leq53
float 4 bytes
double, real 8 bytes
decimal(M,D), numerical(M,D)
bit(M) 大概是 ( M + 7 ) / 8 (M+7)/8 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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场