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;
*注意:这里所说的“删除”是真删除,内部数据也会一同被删去。