Mysql 基础(一)

Mysql 基础(一)

数据库

  • 数据库 DataBase ( DB ):储存数据的仓库,数据有组织的进行存储
  • 数据库管理系统 DataBase Management System ( DBMS ): 操纵和管理数据库的大型软件
  • Structured Query Language ( SQL ): 操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准

Mysql 数据库

  • 关系型数据库:建立在关系模型的基础上,由多张表相互连接的二维表组成的数据库

  • 特点:

    • 使用表存储数据,格式统一,便于维护
    • 使用 SQL 语言操作,标准统一,方便使用
  • 数据模型

    客户端 连接 DBMS, 一个DBMS 可以创建多个数据库,每个数据库可以创建多张表

SQL

通用语法

  1. SQL 语句可以单行或多行书写,以分号结尾
  2. SQL 语句可以使用空格或缩进来增加可读性
  3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写
  4. 注释
    • 单行注释: --#
    • 多行注释 /* 注释内容 */

SQL 分类

  • DDL (Data Definition Language) 数据定义语言,用来定义数据库对象(数据库,表,字段)
  • DML(Data Manipulation Language) 数据操作语言,用来对数据库表中数据进行增删改
  • DQL(Data Query Language) 数据查询语言,用来查询数据库中表的记录
  • DCL(Data Control Language) 数据控制语言,用来创建数据库用户,控制数据库访问权限

DDL

数据库操作

  • 查询所有数据库

    1
    SHOW DATABASES;
  • 查询当前数据库

    1
    SELECT DATABASE();
  • 创建数据库

    1
    CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集][COLLATE 排序规则];
  • 删除数据库

    1
    DROP DATABASE [IF EXISTS]数据库名;
  • 使用数据库

    1
    USE 数据库名;
  • 查看数据库默认编码格式

    1
    show variables like '%char%';
  • 修改数据库默认编码格式

    1
    2
    set character_set_server=utf8;
    set character_set_database=utf8;

表操作

查询
  • 查询当前数据库所有表

    1
    SHOW TABLES;
  • 查询表结构

    1
    DESC 表名;
  • 查询指定表的建表语句

    1
    SHOW CREATE TABLE 表名;
创建
  • 创建表

    1
    2
    3
    4
    5
    6
    CREATE TABLE 表名(
    字段1 字段1类型[COMMENT 字段1注释],
    字段2 字段2类型[COMMENT 字段2注释],
    ...
    字段n 字段n类型[COMMENT 字段n注释]
    )[COMMENT 表注释];
修改
  • 向表中添加字段

    1
    ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释][约束];
  • 修改表中字段

    • 修改数据类型

      1
      ALTER TABLE MODIFY 字段名 新字段类型(长度);
    • 修改字段名和数据类型

      1
      ALTER TABLE CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释][约束];
  • 删除字段

    1
    ALTER TABLE 表名 DROP 字段名;
  • 修改表名

    1
    ALTER TABLE 表名 RENAME TO 新表名;
删除
  • 删除表

    1
    DROP TABLE [IF EXISTS] 表名;
  • 删除指定表并重新创建表

    1
    TUNRNCATE TABLE 表名;

数据类型

数值类型
类型 大小 有符号范围(SIGNED) 无符号范围(UNSIGNED) 描述
TINYINT 1 byte (-128, 127) (0, 255) 小整数
SMALLINT 2 bytes (-32768, 32767) (0, 65535) 大整数
MEDIUMINT 3 bytes (-8388608, 8388607) (0, 16777215) 大整数
INT或INTEGER 4 bytes (-2147483648, 2147483647) (0,4294967295) 大整数
BIGINT 8 bytes (-2^63, 2^63-1) (0, 2^64 -1) 大整数
FLOAT 4 bytes 单精度浮点数
DOUBLE 8 bytes 双精度浮点数
DECIMAL 依赖于D和M 依赖于D和M 小数值(精确定点数)

示例

  • age TINYINT UNSIGNED; 无符号小整数
  • score DOUBLE(4,1); 4位数字,1位小数
字符串
类型 大小 描述
CHAR 0-255 bytes 定长字符串
VARCHAR 0-65535 bytes 变长字符串
TINYBLOB 0-255 bytes 不超过255字节的二进制数据
TINYTEXT 0-255 bytes 短文本字符串
BLOB 0-65535 bytes 二进制形式长文本数据
TEXT 0-65535 bytes 长文本数据
MEDIUMBLOB 0-16777215 bytes 二进制形式的中等长度文本数据
MEDIUMTEXTONGBLOB 0-16777215 bytes 中等长度文本数据
LONBLOB 0-4294967295 bytes 二进制形式的极大文本数据
LONGTEXT 0-4294967295 bytes 极大文本数据

示例

  • CHAR(10) 十字节定长字符串,空白用空格代替
  • VARCHAR(10) 最长十字节变长字符串,根据实际动态选取长度
时间日期
类型 大小 范围 格式 描述
DATE 3 1000-01-01至 9999-12-31 YYYY-MM-DD 日期值
TIME 3 -838:59:59 至 838:59:59 HH:MM:SS 时间值或连续时间
YEAR 1 1901 至 2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00 至 9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期时间值
DATESTAMP 4 1000-01-01 00:00:00 至 2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 混合日期时间值,时间戳

Mysql 基础(一)
http://mrzzzz1.github.io/2023/03/21/mysql1/
作者
Mrzzzz1
更新于
2023年3月22日
许可协议