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”即可

  • 相关阅读:
    109 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 05 问题解析--通过一个方法完成学生和专业的双向关联
    108 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 04 问题解析--数组未实例化造成的空指针异常
    107 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 03 编写方法完成学生个数统计功能
    106 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 02 新增属性完成学生信息存储
    105 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 01 新增需求及分析
    session与cookie的区别和联系
    session和cookie的区别
    Web服务器主动推送技术
    webSocket的场景应用
    TCP、Http和Socket 优劣比较
  • 原文地址:https://www.cnblogs.com/JHSeng/p/10714042.html
Copyright © 2011-2022 走看看