目录

一、SQL初学

二、MySQL基础知识

1、创建/删除/查看数据库表

2、增删改查

3、字段类型

4、浮点数和定点数


一、SQL初学

1、DDL/DML/DCL/TCL?

DDL(Data Definition Languages)语句:即数据库定义语句,用来创建数据库中的表、索引、

DML(Data Manipulation Language)语句:即数据操纵语句,用来查询、添加、更新、删除等,常用的语句关键字有:SELECT,INSERT,UPDATE,DELETE,MERGE,CALL,EXPLAIN PLAN,LOCK TABLE,包括通用性的增删改查。

DCL(Data Control Language)语句:即数据控制语句,用于授权/撤销数据库及其字段的权限(DCL is short name of Data Control Language which includes commands such as GRANT and mostly concerned with rights, permissions and other controls of the database system.)。常用的语句关键字有:GRANT,REVOKE。

2、SQL 语句后面的分号,分号是在数据库系统中分隔每条 SQL 语句的标准方法,但是不强制。

3、数据操作语言 (DML) 和 数据定义语言 (DDL)。

DML:SELECT、UPDATE、DELETE、INSERT INTO

DDL:CREATE DATABASE、ALTER DATABASE、CREATE TABLE、ALTER TABLE、DROP TABLE、CREATE INDEX、DROP INDEX

4、字符串

SQL 语句中含有字符串的时候,需要像 'abc' 这样,使用英文单引号'将字符串括起来,用来标识这是一个字符串。

列名不是字符串,不能使用单引号。在MySQL中可以用倒引号`把表名和列名括起来。

二、MySQL基础知识

1、创建/删除/查看数据库表

-- 创建数据库CREATE DATABASE demo;

-- 删除数据库DROP DATABASE demo;

-- 查看数据库SHOW DATABASES;

-- 创建数据表:CREATE TABLE demo.test( barcode text, goodsname text, price int);

CREATE TABLE(字段名 字段类型 PRIMARY KEY);
CREATE TABLE(字段名 字段类型 NOT NULL);
CREATE TABLE(字段名 字段类型 UNIQUE);

CREATE TABLE(字段名 字段类型 DEFAULT 值);-- 这里要注意自增类型的条件,字段类型必须是整数类型。
CREATE TABLE(字段名 字段类型 AUTO_INCREMENT);

-- 查看表结构DESCRIBE demo.test;

-- 查看所有表SHOW TABLES;

-- 添加主键ALTER TABLE demo.test ADD COLUMN itemnumber int PRIMARY KEY AUTO_INCREMENT;

-- 向表中添加数据INSERT INTO demo.test(barcode,goodsname,price)VALUES ('0001','本',3);

-- 修改字段类型语句ALTER TABLE demo.goodsmaster MODIFY COLUMN price DOUBLE;

-- 计算字段合计函数:SELECT SUM(price)FROM demo.goodsmaster;

2、增删改查

INSERT INTO 表名 [(字段名 [,字段名] ...)] VALUES (值的列表);
INSERT INTO 表名 (字段名)
SELECT 字段名或值
FROM 表名
WHERE 条件
DELETE FROM 表名
WHERE 条件

UPDATE 表名
SET 字段名=值
WHERE 条件

SELECT *|字段列表
FROM 数据源
WHERE 条件
GROUP BY 字段
HAVING 条件
ORDER BY 字段
LIMIT 起始点,行数

3、字段类型

在定义数据类型时,如果确定是整数,就用 INT;如果是小数,一定用定点数类型 DECIMAL;如果是字符串,只要不是主键,就用 TEXT;如果是日期与时间,就用 DATETIME。

  • 整数:INT。
  • 小数:DECIMAL。
  • 字符串:TEXT。
  • 日期与时间:DATETIME。

4、浮点数和定点数

MySQL 中使用浮点数和定点数来表示小数。
浮点类型有两种,分别是单精度浮点数(FLOAT)和双精度浮点数(DOUBLE);定点类型只有一种,就是 DECIMAL

浮点数适合一些取值范围较大,精度要求不高的场景,定点数适合取值范围相对较小,但是要求精确,无误差的场景。
浮点类型和定点类型都可以用(M, D)来表示,其中M称为精度,表示总共的位数;D称为标度,表示小数的位数。浮点数类型的取值范围为 M(1~255)和 D(1~30,且不能大于 M-2),分别表示显示宽度和小数位数。M 和 D 在 FLOAT 和DOUBLE 中是可选的,FLOAT 和 DOUBLE 类型将被保存为硬件所支持的最大精度。DECIMAL 的默认 D 值为 0、M 值为 10。

 三、日志更新redo log和binlog

MySQL 里面最重要的两个日志,物理日志redo log和逻辑日志binlog。

redo log:InnoDB 引擎特有的日志,当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log 里面,并更新内存,这个时候更新就算完成了。同时,InnoDB 引擎会在适当的时候(不忙的时候),将这个操作记录更新到磁盘里面。如果数据库发生故障重启,redo log仍保留之前提交的记录,待系统恢复后再重新写入,这个能力称为 crash-safe。

redo log 是固定大小的,循环写,write pos 是当前记录的位置,一边写一边后移,checkpoint 是当前要擦除的位置,也是往后推移并且循环的,擦除记录前要把记录更新到数据文件。

将MySQL的关键字替换为达梦的关键字 mysql修改语句关键字_数据库

binlog:是记录数据库的操作记录的日志。

redo log和binlog的区别

(1)redo log 是 InnoDB 引擎特有的;binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用。

(2)redo log 是物理日志,记录的是“在某个数据页上做了什么修改”;binlog 是逻辑日志,记录的是这个语句的原始逻辑,比如“给 ID=2 这一行的 c 字段加 1 ”。

(3)redo log 是循环写的,空间固定会用完;binlog 是可以追加写入的。“追加写”是指 binlog 文件写到一定大小后会切换到下一个,并不会覆盖以前的日志。