跳至主要內容

MySQL 基本知识

pptg大约 2 分钟

1. 基本概念

1.1 术语

  • 数据库(database)
  • 数据表(table)
  • 模式(schema): mysql中和database一样
  • 列(column)
  • 行(row)
  • 主键(primary key)

1.2 语言

  • 数据定义语言(DDL): CREATE、ALTER、DROP
  • 数据操纵语言(DML): INSERT、UPDATE、DELETE、SELECT
  • 事务控制语言(TCL): COMMIT、ROLLBACK
  • 数据控制语言(DCL): GRANT、REVOKE, 用于控制权限

1.3 数据类型

  1. 整型:TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT分别使用 8, 16, 24, 32, 64 位存储空间
  2. 浮点数:
    • 32位FLOAT 和 64位DOUBLE 为浮点类型,CPU 原生支持浮点运算
    • DECIMAL 为高精度小数类型。CPU 原生支持 DECIMAl运算,因此 DECIMAL 的计算比浮点类型需要更高的代价
  3. 字符串
    • CHAR是定长的,不会保留字符串末尾的空格
    • VARCHAR是变长的,会保留字符串末尾的空格
  4. 时间和日期
    • DATETIME能够保存从 1001 年到 9999 年的日期和时间,精度为秒,使用 8 字节的存储空间,和时区无关
    • TIMESTAMP和 UNIX 时间戳相同,保存从 1970 年 1 月 1 日午夜(格林威治时间)以来的秒数,使用 4 个字节,只能表示从 1970 年 到 2038 年,和时区有关
  5. 大规模数据存储:MySQL把每个BLOB和TEXT值当做一个独立的对象。当BLOB和TEXT值太大时,InnoDB会使用专门的“外部”存储区域来进行存储,此时每个值在行内需要1~4个字节存储一个指针,然后在外部存储区域存储实际的值
    • BLOB存储二进制
    • TEXT存储字符

1.4 常见操作

# 删除
# id = 1,  非事务, 非触发器, 但会保留结构
TRUNCATE TABLE user;
# id = auto, 事务, 触发器
DELETE FROM user;
# 完全清除, 非事务, 非触发器
DROP TABLE user;

# 查找
# 去重3
SELECT DISTINCT name FROM user;
# 限制(3-5行)
SELECT * FROM user LIMIT 2, 3;
SELECT * FROM user LIMIT 3 OFFSET 2; 

# 排序, 先排前再排后
SELECT * FROM user
ORDER BY age DESC, name ASC;

# 分组
SELECT category, COUNT(*) 
FROM domain.domain
GROUP BY category 
HAVING COUNT(*) > 1000;