数据库学习小记(长期更新)

这学期学院开设了数据库课程,故作此文以备复习之需。

环境:Manjaro Linux 18.0.4

数据库:MariaDB 10.3.13-4

工具:mycli 1.19.0-3

为什么用MariaDB而不用MySQL就不多说了,前者是后者的开源版本且大多数情况下(原因且看百度)都兼容后者。mycli这个工具在命令行非常好用。


【服务相关命令(适用于Linux)】

启动服务:systemctl start mysqld

关闭服务:systemctl stop mysqld.service

登录sql服务器:mycli -u [account_name]

在命令行中可以用mysqladmin来实现对mysql服务的操作,这里先不详述。

以下命令均在SQL交互式环境中执行。"[ ]"及其内容需替换为所需内容。

【账户相关命令】
创建账户: create user '[user_name]'@'[location]' identified by '[password]';
删除账户: drop user '[user_name]'@'[location]';
给指定账户在数据库的表上赋予权限: grant [privileges] on [database_name].[table_name] to '[user_name]'@'[location]';
删除指定账户在数据库的表上的权限: revoke privilege on [database_name].[table_name] from '[user_name]'@'[location]';
展示指定账户在数据库的表上的权限: show grants for '[user_name]'@'[location]';
刷新权限: flush privileges;
给指定账户设置密码: set password for '[user_name]'@'[location]' = password('[new_password]');

【数据库相关操作】
创建新数据库: create database [database_name];
删除数据库: drop database [database_name];
展示现有的所有数据库名称:show databases;
使用数据库: use [database_name];

【表相关操作】
展示数据库的所有表: show tables;
创建表: create table [table_name]([name] [type], ...);
删除表: drop table [table_name];
展示表中特定信息: select [...] from [table_name] where [...]
给特定表添加主键索引: alter table [table_name] add primary key ([column_name]);
给特定表添加唯一索引: alter table [table_name] add unique ([column_name]);
给特定表添加索引: alter table [table_name] add index [index_name] ([column_name]);
给特定表添加索引(与多列相关): alter table [table_name] add index [index_name] ([column_name_1], [column_name_2], ...);
给特定表添加外键: alter table [table_name] add foreign key([column_name]) references [table_name]([column_name]) on delete set null
给特定表添加新的一列: alter table [table_name] add column [column_name] [attribute]
删除特定表的索引: drop index [index_name] on [table_name]
更改表中特定列的数据类型: alter table [table_name] modify column [column_name] [attribute]
删除表中某个index的约束: alter table [table_name] drop index [index_name]
清空表的所有数据(但保留结构): truncate table [table_name]

【查看元数据】
查看数据库的DDL:show create database [database_name];
列出指定数据库的所有表: show tables from [database_name];
查看表的描述性信息: show table status;       show table status from [database_name];
查看表的DDL: show create table [table_name];
查看列信息: show columns from [table_name];
查看索引信息: show index from [table_name];

【视图相关命令】
创建视图: create view [view_name] as select * from [table_name]
展示视图中特定信息: select [...] from [view_name] where [...]
查看视图状态信息: show tables status like '[view_name]'
修改视图信息: update [view_name] set [column_name] = '[...]' where [...]
删除视图: drop view [view_name]

【导出sql文件(在终端内运行)】

mysqldump -u [account_name] -p [database_name] > [filename_with_full_path]

【使用过程中遇到的坑】

从windows系统导出的sql文件(使用MySQL 8.0),在linux下(使用MariaDB 10.3)导入时会遇到无法导入的情况,报错:Unknown collation: 'utf8mb4_0900_ai_ci'

出错原因:不明

解决方案:用文本编辑器打开sql文件,把所有的“utf8mb4_0900_ai_ci”替换为“utf8_general_ci”,“utf8mb4”替换为“utf8”即可

原文地址:https://www.cnblogs.com/JHSeng/p/10714042.html