SQL:DDL语句:增删查改
腚论
2024年10月21日 21:10
收录于文集
共92篇

10月21号笔记

今日所学:DDL语句:增删查改

DDL语句,主要用于数据表的定义以及数据库字段的定义等。

数据库操作:

1、查询所有数据库:

show databases;

2、查询单个数据库:

select database();

3、创建数据库:

create database [if not exists] 数据库名称 [default charset 字符集] [排序规则];

4、删除:

Drop database 数据库名称;

5、使用:

Use 数据库名称;

上述所提及到的if not exist是用于在数据库已经存在下,进行一个基本的存在性检验的基本操作。

字符集:字符集本质上是一个符号表,用于声明其所在的一个指定数据库中的数据放置格式,这样的一个格式就会被数据库作为规范来作为数据的识别、存储和展示的标准和规则。其规范的对象为字符、数字、符号。给每个字符都分配独一无二的二进制编码。

*注意:在构建数据库选择字符集时,不建议使用utf-8作为字符集,这是由于其只支持三个字节的文字表示,而对于某些需要四个字节存储的数据就相对困难了。

如果考虑需要使用4字节,可以使用utf-8mb4标准,下列为构建名为“helloworld”的数据库,且其默认的字符集为utf-8mb4;

create database helloworld default charset utf8mb4;

本质上,上述的use操作是将对应的数据指针转移到use指向的那个数据库,然后打开。

 

表操作:

*注意:后续所提及的表操作,要先进入到表中。

查询部分:

1、查询数据库中的所有表:

show tables;

2、查询表结构:

Desc table名称;

3、查询指定的建表语句:

show create table 对应表名称;

创建部分:

创建表:

Create table 表名称(

字段1 字段1数据类型,

字段2 字段2数据类型,

......

)

事例如下:

create table if not exists student(

name varchar(10) comment "姓名",

    age int comment "年龄",

    date date comment "出生日期"

);

使用show create 之后可以看到注释的内容,而简单的desc不会。

'student', 'CREATE TABLE `student` (

  `name` varchar(10) DEFAULT NULL COMMENT \'姓名\',

  `age` int DEFAULT NULL COMMENT \'年龄\',

  `date` date DEFAULT NULL COMMENT \'出生日期\'

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci'

其中还定义了对应引擎和其他的东西,这些往往是默认构建的。

 

其中,字段的数据类型可以细分为如下打表:

1、整数类型

TINYINT:非常小的整数

SMALLINT:小的整数

MEDIUMINT:中等大小的整数(在某些DBMS中不存在)

INT 或 INTEGER:标准的整数

BIGINT:大的整数

2、浮点数类型

FLOAT:单精度浮点数

DOUBLE 或 DOUBLE PRECISION:双精度浮点数

REAL:根据DBMS,可能是FLOAT或DOUBLE的别名

DECIMAL 或 NUMERIC:定点数,用于存储精确的小数(例如,财务计算)

3、日期和时间类型

DATE:日期值(YYYY-MM-DD)

TIME:时间值(HH:MM:SS)

DATETIME 或 TIMESTAMP:日期和时间值(YYYY-MM-DD HH:MM:SS),TIMESTAMP通常带有时区信息

YEAR:年份值(四位数)

5、字符串类型

固定长度字符串

CHAR(n):固定长度的字符数据,长度为n

6、可变长度字符串

VARCHAR(n) 或 VARCHAR2(n)(在Oracle中):可变长度的字符数据,最大长度为n

TEXT 或 LONGTEXT(在MySQL中):用于存储大量文本数据

7、二进制数据类型

BINARY(n):固定长度的二进制数据

VARBINARY(n):可变长度的二进制数据

BLOB(Binary Large Object):用于存储二进制大对象,如图像或文件

TINYBLOB, MEDIUMBLOB, LONGBLOB(在MySQL中):不同大小的BLOB类型

8、布尔类型

BOOLEAN 或 BOOL:存储真/假值(某些DBMS中可能作为TINYINT(1)的别名)

9、枚举和集合类型

ENUM:枚举类型,值来自一个预定义的集合

SET:集合类型,可以存储零个或多个预定义的值(MySQL特有)

10、JSON类型

JSON:用于存储JSON格式的数据(在现代DBMS如MySQL、PostgreSQL中支持)

11、空间和地理数据类型

GEOMETRY 及其子类型(如POINT, LINESTRING, POLYGON等):用于存储地理空间数据(如MySQL的GIS扩展)

12、自定义和域类型

在某些DBMS中,还可以定义自定义数据类型或域(domain),以复用特定的数据类型定义。

总之,在基本使用时,在已有一个规范长度下,固定优于变动,只有在需要变动时在确定变动。

 

修改操作:

添加字段:

alter table 所需要修改的表名称 add 所添加的字段 字段类型 comment 注释内容;

如:alter table student add gender bool comment "性别";

重新设置数据类型:

alter table 所需要修改的表名称 modify 修改字段 目标字段类型 comment 注释内容;

如:alter table student modify gender bool comment "性别";

修改字段名称和字段类型:

alter table 所需要修改的表名称 change 旧名称 新名称 新类型 comment 注释内容;

如:alter table student change gender gen bool comment "性别";

删除操作: 删除字段:

alter table 所需要修改的表名称 drop 目标字段名称;

如:alter table student drop gen;

修改表名称:

alter table 修改的表名称rename to 重命名后的表名称;

如:alter table student rename to hhh;

直接删除表:

drop table 删除目标表名称;

如:drop table hhh;

删除指定表,重新创建表:

truncate table 洗表目标表名称;

如:truncate table hhh;

*注意:这里所说的“删除”是真删除,内部数据也会一同被删去。