zoukankan      html  css  js  c++  java
  • 数据库学习小记(长期更新)

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

    环境: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”即可

  • 相关阅读:
    mysql常用方法案例
    springboot整合mybatis
    mysql自定义函数统计订单状态:GET_ORDER_STATUS()
    mysql计算时间差-本例为计算分钟差然后/60计算小时保留一位小数,由于直接得小时只会取整
    mysql字段值为null时排序问题
    对象与内存(一)
    java基础提升(关于数组)
    项目的部署
    myeclipse中ssm的搭建
    ui自动化笔记 selenium_webdriver,ui自动化框架(web)
  • 原文地址:https://www.cnblogs.com/JHSeng/p/10714042.html
Copyright © 2011-2022 走看看