【MYSQL】2025数据库最全详解·基础篇

1.基础命令

启动

mysql -u root -p
  • -u表示用户
  • root表示最高权限的用户
  • -p表示接下来可能要输入密码了
  • 也可不回车直接输入密码(不需要空格)
  • 形如:但是此时密码是显式的,所以不推荐
mysql -u root -p12345

关闭

  • 直接输入exit
  • 直接关闭cmd命令窗口

2.数据库里面的语句

显示数据库信息

  • 注意带分号,因为已经在数据库里了,执行的是数据库的语句
show databases;
  • 显示结果
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
  • information_schema(信息架构)

    作用:

    • 存储 数据库元数据(metadata),类似数据库的“目录”。
    • 包含数据库、表、列、索引、权限等信息。
    • 只能查询,不能修改
  • mysql(核心数据库)

作用:

  • 存储 MySQL 用户、权限、系统配置 等重要信息。

  • 管理 MySQL 的 用户账号权限控制
    注意:不要随意修改 mysql 库,否则可能导致 MySQL 不能正常工作!

  • performance_schema(性能监控)

作用:

  • 用于 监控 MySQL 性能,包括查询耗时、资源使用情况、系统负载等。

  • 默认禁用,但可以开启进行性能分析。

  • sys(用户友好的性能视图)

    作用:

    • 依赖 performance_schema,提供 更直观的性能分析视图。
    • 用于数据库 优化、慢查询分析。

创建数据库

简易版,若数据库已经存在则报错
create database <数据库名字>;
一般版,若不存在再创建(有了一道检查程序)
create database if not exists <数据库名字>;
更高逼格的格式
create database if not exists `<数据库名字>`;

删除数据库

简易版,若数据库不存在则报错
drop database <数据库名字>;
一般版,若存在再删除(有了一道检查程序)
drop database if exists <数据库名字>;
更高逼格的格式
drop database if exists `<数据库名字>`;

查看数据库是如何创建的

后面的/是字符编码,下面说/

show create database <数据库名字>;

字符编码

知识点:
  • 乱码问题就是字符编码不同
  • 常见的有GBKUTF-8
  • GBK适配与中文,UTF-8有的不适配,注意大部分用的都是UTF-8,所以如果要设置数据库字符编码格式,得设置utf-8,不要设置为GBK
  • 注意设置为utf-8的时候输入的是utf8,没有杠
    ####创建时使用想要的字符编码格式
    没有特殊要求,不需要这么创建,直接默认就行
create database if not exists <数据库名字> character set <字符编码格式>;

####修改已有数据库的字符编码
alter:更改,修改的意思,请记住这个单词,后续还得用

alter database  <数据库名字> charset=<字符编码格式>;

3.数据库下的表

引入

  • 数据库下面会放多个表,表是同类物品的总和

使用数据库

use <数据库名字>;

展示数据库中的所有表

tables的s别忘了

show tables;

创建表

  • 类比创建数据库
  • 括号里是表内容。也就是表头,对象名在前,类型在后
  • 注意字符串是用varchar(字符长度(最大))
create table <表名>(id int,name varchar(30));
更完整,更有逼格的创建表
  • auto_increment(自动增长的):表示id是自己随着插入数据自动增长的
  • primary key(主键):表明这个是该表的唯一标识符
    • 每个表只能有一个主键。
    • 主键的值必须唯一,且不能为空(NOT NULL)。
    • 主键通常是整型(INT)并自增(AUTO_INCREMENT),但也可以是字符串
  • comment(评论):做注释的意思
  • not null :不能为空
  • default ‘ ’:如果是空则显示单引号的值
  • engine(引擎)=innodb:
    • 在 MySQL 8.0 及以上版本,InnoDB 是默认存储引擎,因此不需要手动指定
create table if not exists teacher(
    id int auto_increment primary key comment 'primary key id',
    name varchar(30) not null comment 'name',
    adress varchar(100) default 'not know' comment 'adress'
    )engine=innodb;

展示创建表时的创建信息

  • 主要看的是表创建时的信息(语句)
show create table teacher
显示
| teacher | CREATE TABLE `teacher` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'primary key id',
  `name` varchar(30) NOT NULL COMMENT 'name',
  `adress` varchar(100) DEFAULT 'not know' COMMENT 'adress',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |

查看表的列(字段)结构

  • DESCRIBE teacher; 的缩写(describe)
  • 看的更清晰,主要看的是表的基本信息
desc teacher;
显示
+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| id      | int         | NO   | PRI | NULL    | auto_increment |
| name    | varchar(30) | NO   |     | NULL    |                |
| address | varchar(100)| YES  |     | not know|                |
+---------+-------------+------+-----+---------+----------------+

删除表

  • 与删除数据库很像
删除一张表
drop table if exists <表名>;
删除多张表
drop table if exists <表名>,<表名>;

修改表

向表末尾添加字段
alter table <表名> add <要添加的字段>;
向表指定字段后添加字段
alter table <表名> add <要添加的字段> after <指定的字段>;
向表最开头插入字段
alter table <表名> add <要添加的字段> first;
表中删除字段
alter table <表名> drop <要删除的字段>;
修改表名
alter table <表名> rename <修改后的表名>;
修改字段名和类型
alter table <表名> change <需要修改的字段> <修改后的字段及类型>;
只修该字段的类型
alter table <表名> modify <需要修改的字段> <修改后的字段的类型>;

插入数据

完整的插入语句
  • 需注意,前面的字段名,顺序可以随意放,但是values中的值要与前面的一一对应
  • 不想填写可以填NULL,但得确保,填的是not null的
  • 同时对于自增的主键,可以填null,他会自动依次按序给值,但是不能给重复的
insert into <表名>(字段名,字段名,字段名....) values(字段对应的值,字段对应的值....);
省略插入语句
  • 此时values中的值要与decs展示表中的对应所有字段
  • 不想填写可以填NULL,但得确保,填的是not null的
  • 若想省略写不填的,可以使用上面那个方法,那个可以在前面的字段里省略除了必须出现的字段
insert into <表名> values(字段对应的值,字段对应的值....);
一次性插入多条语句
  • 直接在后面跟逗号和括号就行了
insert into <表名> values(字段对应的值,字段对应的值....),(.....),(....);

查看表内容

  • select 选择
  • *号的意思是查询所有的
  • from 从哪张表
  • 但是查询的性能不高,尽量明确字段查询,之后会看到
select *from <表名>;

删除数据

  • 需注意的是,如果该字段是int类型,可以用大于小于之类的进行批量删除
delete from <表名> where <字段名>=<情况>;
删除所有数据
  • 这是一条一条删除数据,所以在效率上比较慢
  • 同时不推荐,因为在重新插入数据,如果不指定会自增的主键,他会从上次从创建国数据的编号往下编,而下面truncate可以从开头开始创建
delete from <表名>;
  • 这个是直接把表废除,然后再重新创建一个空表给你
truncate table <表名>;

更新数据

  • 注意,如果没有条件,即没有where和之后的条件,就会使全表进行修改
  • 后面的的可以用or进行多个修改
  • 修改的字段也可以用逗号隔开,进行多个字段内容修改。
update <表名> set <修改的东西> where <找到修改的条件>;

基础查询表

  • 字段可以一个可以多个,按需选择
select <字段1>,<字段2> from <表名>

知识:

数据库定义语言(DDL)

  • create drop alter show

数据操作语言 (DML)

  • insert delete updata select

你可能感兴趣的:(mysql,数据库,mysql,oracle)