【MySQL】02 数据库的基本操作

数据库基础知识

创建和查看数据库

sql 复制代码
create database 数据库名称; # 创建数据库
show databases; #查看数据库
show create database 数据库名称;# 查看数据的的详细信息

修改数据库

sql 复制代码
alter database 数据库名称 default character set utf-8 collate utf-8_bin;
# 更改数据库的编码是utf-8

删除数据库

plsql 复制代码
drop database 数据库名称;

数据类型

整型

  • TINYINT 1byte
  • SMALLINT 2byte
  • MEDIUMINT 3byte
  • INT 4byte
  • BIGINT 8byte

通用使用int,再就是bigint,一个byte的取值范围是 28,无符号位为0255,有符号位-128127;

smallint的范围是216=65535,

浮点型和定点数类型

  • float 4byte
  • double 8byte
  • decimal(m,d) 定点数据类型

decimal(6,2):总位数6位,小数位2位;

日期与时间类型

  • year 年
  • date 年-月-日
  • time 时:分:秒
  • datetime YYYY-MM-DD HH:MM:SS
  • timestamp YYYY-MM-DD HH:MM:SS

date

  1. yyyy-mm-dd
  2. current_date/now(),表示输入当前系统时间;

time

  1. 表示时间值,hh:mm:ss;
  2. D HH:MM:SS,D*24 +HH 是当前的小时数;
  3. current_date/now(),表示输入当前系统时间;

datetime

  1. 使用now输入当前系统的日期和时间

timestamp

  1. 使用current_timestamp 输入系统当前日期和时间
  2. 输入null时,系统输入当前日期时间
  3. 无任何输入时,输入当前日期和时间

字符串

字符串

  • char 定长
  • varchar 可变长

二进制数据

  • binary 定长二进制数据
  • varbinary 可变长二进制数据

Text

0~65535Byte

大文本类型,文章内容,评论信息等

BLOB

特殊的二进制类型,表示数据量很大的二进制数据;

ENUM

枚举类型

sql 复制代码
truncate table_test ; 

ALTER TABLE db_02.table_test ADD `rank` ENUM ("1","2","3","4");

insert into table_test (id,name,create_data,`rank`) values (12,'dept',now(),1);

select * from table_test tt ;

set类型

同enum类型同理

ENUM和SET类型的区别:
ENUM类型:

  • ENUM类型字段只能从定义时的预定义值列表中选择单个值。
  • 这个值列表最多可以包含65535个不同的成员。
  • 例如,定义为ENUM("N","Y")的字段,其值只能是"N"或"Y"。
  • 在内部,MySQL按照定义时的顺序为每个枚举值分配一个数字,从1开始。
  • ENUM值在内部以数值形式存储。
    SET类型:
  • SET类型字段可以从定义时的预定义值列表中选择多个值。
  • 值列表最多可以包含64个不同的成员。
  • 空字符串("")也是一个有效的SET值。
  • 在内部,MySQL为SET中的每个值分配一个位,而不是顺序编号。
  • 每个位的值对应一个位位置:第一个值对应位0,第二个值对应位1,依此类推。
  • 如果某个位的值为1,则表示该SET值包含对应的预定义值;如果为0,则不包含。
  • 如果所有位都清零(即数值形式的SET值为0),则表示该SET字段值为空字符串。
    在设计和使用数据库时,了解这些类型的特点和存储方式可以帮助更有效地利用它们。

bit类型

二进制数据存储

数据表的基本操作

创建数据表

sql 复制代码
CREATE TABLE `table_test` (
  `id` int DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `create_data` date DEFAULT NULL,
  `rank` enum('1a','2b','3c','4d') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL
) ENGINE=Inno

查看数据表

  1. show create table 表名
  1. desc 表名

修改数据表

使用alter关键字

  1. 修改表名 alter table 旧表名 rename 新表名
  2. 修改字段名 alter table 表名 change 旧字段名 新字段名 新数据类型
  3. 修改字段的数据类型 alter table 表名 modify 字段名 数据类型
  4. 添加字段 alter table 表名 add 新字段名 新的字段类型 [约束条件] [first|after 已存在的字段名]
  5. 删除字段 alter table 表名 drop
  6. 修改字段的排列位置 alter table 表名 modify 字段名 数据类型 first|after 字段名

删除数据表

drop table 表名,清除所有跟表有关的数据;

表的约束

主键约束 primary key

使用主键约束可以快速定位表中的信息,提高效率,设置主键通过primary key关键字设置,标识唯一标记性记录;

  1. 单字段主键

字段名 数据类型 primary key

sql 复制代码
create table example (
  id int primary key,
  name varchar(255)
);
  1. 多字段主键

primary key (字段名1,字段名2,···,字段名n)

sql 复制代码
create table example02 (
  id int,
  name varchar(255),
  primary key(id,name)
);

外键约束 foreign key

外键约束涉及到多表操作

非空约束 not null

非空约束设置字段不能为空,非空约束的关键字为not null

字段名 数据类型 not null;

sql 复制代码
create table example (
  id int,
  name varchar(255) not null
);

唯一约束 unique

唯一约束保证数据表中字段的唯一性,表示表中的字段值不能重复出现,通过关键字unique确定;

sql 复制代码
create table example (
  id int unique,
  name varchar(255)
);

场景:

  • PK主键适用于 自增场合,数据查询时索引使用,提高sql执行效率;
  • unique 唯一键适用于统计登录信息,唯一性信息,可能会被删掉之后再添加 的场景;

默认约束 default

设置默认值,char型设置空,enum类型设置默认值等

字段名 数据类型 default 默认值;

sql 复制代码
create table example (
  id int unique,
  name varchar(255) default ' '
);

设置name的默认值为一个空格;

字段自动增加 auto_increment

字段名 数据类型 auto_increment;

sql 复制代码
create table example (
  id int unique auto_increment,
  name varchar(255) default ' '
);

正常都是结合pk使用

索引

索引是提高查询效率的一大重要组成;

概念

  1. 普通索引

由key和index定义的,是MySQL的基本索引类型,可以创建在任何数据类型中,其值的唯一性是由字段本身的约束条件决定的

  1. 唯一性索引

由unique决定的

  1. 全文索引

使用fulltext设置全文索引,只支持在char、varchar和text类型,且只允许myISAM存储引擎

  1. 单列索引

单列索引指在多个字段上创建索引,只有在查询条件中使用第一个字段,这个索引才会被使用;

  1. 多列索引

空间索引由spatial定义的索引,只能创建在空间数据类型的字段。有4种空间数据类型;

索引虽然可以提高查询速度,但是同时也会占用一些磁盘空间

创建索引的方式

创建表的时候创建

sql 复制代码
create table 表名(
  字段名 数据类型 [约束条件],  
  字段名 数据类型 [约束条件],
  字段名 数据类型 [约束条件]
  [unique|fulltext|spatial] index|key [别名] (字段名 [(长度)] [ASC|DESC])
);

create index 在已经创建的表上创建索引

sql 复制代码
create [unique|fulltext|spatial] index 索引名
on 表名 (字段名 [(长度)] [ASC|DESC])
sql 复制代码
create index index_id01 on example_tbl01(id);

index是普通索引,需要别的 在前面加上其他关键字;

使用alter table更改建表文的结构,在表上创建索引

sql 复制代码
alter table 表名 add [unique|fulltext|spatial] index 索引名
on 表名 (字段名 [(长度)] [ASC|DESC])
sql 复制代码
alter table book add index index_uid(id);

删除索引

使用alter table 删除索引

sql 复制代码
alter table 表名 drop index 索引名;
alter table table_01 drop index table_idx01;

使用drop index 删除索引

sql 复制代码
drop index 索引名 on 表名; 
drop index table_idx01 on table_01;
相关推荐
jnrjian1 小时前
Oracle hints 空格要求
sql·oracle
m***66731 小时前
SQL 实战—递归 SQL:层级结构查询与处理树形数据
java·数据库·sql
昙鱼1 小时前
Markdown文件导入Milvus向量数据库完整指南
数据库·ai·milvus
A__tao1 小时前
gotool.top 的 SQL 转 Markdown
数据库·sql
Austindatabases2 小时前
基于SQLite如何设计应用程序,拆散,散,还的散!
数据库·sqlite
马克学长4 小时前
SSM面向乡村振兴服务的产教融合服务平台521gh(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·乡村振兴·ssm 框架·服务平台
u***27614 小时前
C#数据库操作系列---SqlSugar完结篇
网络·数据库·c#
Y***K4345 小时前
MySQL网站
数据库·mysql
q***44815 小时前
postgresql链接详解
数据库·postgresql