学习MySQL——创建和管理表

发布于:2022-12-02 ⋅ 阅读:(318) ⋅ 点赞:(0)

一、标识符的命名规则

  1. 数据库名、表名不得超过30个字符;变量名限制为29个。
  2. 必须只能包含A-Z、a-z、0-9、_  共63个字符。
  3. 数据库名、表名、字段名等对象中间不要包含空格。
  4. 数据库、表、字段均不能重名。
  5. 必须保证字段没有和保留字、关键字以及数据库系统或常用方法冲突,如果必须使用,则应该使用``(着重号)引起来。

二、MySQL中的数据类型

整数类型 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT
浮点类型 FLOAT、DOUBLE
定点数类型 DECIMAL
位类型 BIT
日期时间类型 YEAR、TIME、DATE、DATETIME、TIMESTAMP
文本字符串类型 CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT
枚举类型 ENUM
集合类型 SET
二进制字符串类型 BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB
JSON类型 JSON对象、JSON数组
空间数据类型 单值:GEOMETRY、POINT、LINESTRING、POLYGON;
集合:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION

其中,常用的几种类型介绍如下:

数据类型 描述
INT 从-2^31到2^31-1的整型数据。存储大小为4个字节。
CHAR(size) 定长字符数据。若未指定,默认为1个字符,最大长度255
VARCHAR(size) 可变长字符数据,根据字符串实际长度保存,必须指定长度。
FLOAT(M,D) 单精度,占用4个字节,M=整数位+小数位,D=小数位。D<=M<=255,0<=D<=30,默认M+D<=6
DOUBLE(M,D) 双精度,占用8个字节,D<=M<=255,0<=D<=30,默认M+D<=15
DECIMAL(M,D) 高精度小数,占用M+2个字节,D<=M<=65,0<=D<=30,最大取值范围与DOUBLE相同。
DATE 日期型数据,格式"YYYY-MM-DD"
BLOB 二进制形式的长文本数据,最大可达4G
TEXT 长文本数据,最大可达4G

三、创建和管理数据库

  1. (1) 创建数据库:CREATE   DATABASE   数据库名;

      (2)  创建数据库并指定字符集:CREATE   DATABASE   数据库名 CHARACTER SET 字符集;

      (3)  判断数据库是否存在,不存在则创建数据库,如果已经存在,则忽略本条创建语句(推荐):

    CREATE DATABASE IF NOT EXISTS 数据库名;

        备注:数据库(DATABASE)不能改名,一些可视化工具可以改名,它是通过新建库,把所有表复制到新库,再删除旧库完成改名操作的。

  1. 使用数据库

​ (1)查看当前的所有数据库:SHOW DATABASES ;

​ (2)查看当前正在使用的数据库:SELECT DATABASE();

​ (3)查看指定库下的所有表:SHOW TABLES FROM 数据库名;

​ (4)查看数据库的创建信息:SHOW CREATE DATABASE 数据库名;

​ (5)使用、切换数据库:USE 数据库名;

  1. 修改数据库

    (1)更改数据库字符集:ALTER DATABASE 数据库名 CHARACTER SET 字符集; #比如gbk,utf8等

    (2)删除指定的数据库:DROP DATABASE 数据库名; 或者DROP DATABASE IF EXISTS 数据库名;

四、创建表

创建方式:

CARATE TABLE IF NOT EXISTS 表名(

字段1,数据类型 [约束条件] [默认值],

字段2,数据类型 [约束条件] [默认值],

字段3,数据类型 [约束条件] [默认值],

[表约束条件]

);

必须指定:表名、列名(字段名)、数据类型、长度

可选指定:约束条件、默认值

创建表举例

CREATE TABLE IF NOT EXISTS tab_01(
tab_id INT,
tab_name VARCHAR(20),
salary_m DOUBLE,
birthday DATE
);

DESC tab_01; (DESC 表名;表示查看表结构)

使用**SHOW CREATE TABLE 表名;**语句不仅可以查看表创建时的详细语句,还可以查看存储引擎和字符编码。

在这里插入图片描述

五、修改表

修改表指的是修改数据库中已经存在的数据表的结构

  1. 追加一个列

    语法格式:ALTER TABLE 表名 ADD 字段名 字段类型 (FIRST|AFTER 字段名);

    举例:ALTER TABLE tab_01

    ADD job_id VARCHAR(15);

    语法格式最后的 **(FIRST|AFTER 字段名)**表示可以将想要追加的一个列指定位置,FIRST为追加到第一列,**AFTER 表名;**表示追加到指定列后面的一列。

  2. 修改一个列

    可以修改列的数据类型,长度,默认值和位置。语法如下:

    ALTER TABLE 表名 MODIFY 字段名1 字段类型 (FIRST|AFTER 字段名2);

    举例:ALTER TABLE tab_01
    MODIFY job_id VARCHAR(30);

  3. 重命名一个列

    语法格式如下:ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;

    举例:ALTER TABLE tab_01
    CHANGE tab_name last_name VARCHAR(20);

  4. 删除一个列

    语法如下:ALTER TABLE 表名 DROP 字段名;

    举例:ALTER TABLE tab_01
    DROP birthday;

  5. 修改表名

    语法如下:RENAME TABLE 表名 TO 新表名;

    ​ 或者ALTER TABLE 表名 RENAME TO 新表名; (TO可以省略)

    举例:RENAME TABLE tab_01 TO tab_02;

六、删除表

在MySQL中,


  • 当一张数据表没有与其他任何数据表形成关联关系时,可以将当前数据表直接删除

  • 数据和结构都被删除

  • 所有正在运行的相关事务被提交

  • 所有相关索引被删除

语法格式:DROP TABLE IF EXISTS 表名1[,表名2,…表名n];

举例:DROP TABLE tab_02;

注意:DROP TABLE 语句不能回滚

七、清空表

语法格式:TRUNCATE TABLE IF EXISTS 表名1[,表名2,…表名n];

注意:TRUNCATE TABLE 语句会

  • 删除表中的所有数据
  • 释放表的存储空间
  • 保留表结构

同时,TRUNCATE语句不能回滚,而使用DELETE语句删除数据,可以回滚(使用语句ROLLBACK;恢复数据内容)