MySQL 基础命令

做为前端虽然数据库接触的很少,但当使用时总记不住命令确实有点尴尬,遂作此笔记,以方便查阅。html

登陆登出

mysql -h localhost -u root -p  //登陆
QUIT  // 登出

基本操做

ps: 又一次储存emoji表情时,出现了一次报错,由于UTF-8编码有多是两个、三个、四个字节,其中Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,因此致使了数据插不进去。
当时的解决方式是更改了某个表的字符集前端

ALTER TABLE tab-name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

注释:utf8mb4的最低mysql版本支持版本为5.5.3+mysql

  • 数据库查看sql

    • 查看全部数据库数据库

      • SHOW DATABASES;
    • 查看数据库变量服务器

      • SHOW VARIABLES;
      • 因为变量超多,因此使用过滤查看须要的字段:
      • 查看端口:SHOW VARIABLES LIKE 'PORT';
      • 查看可选字符: SHOW VARIABLES LIKE 'CHARACTER%';ide

        character_set_client      为客户端编码方式;
        
        character_set_connection  为创建链接使用的编码;
        
        character_set_database    为数据库的编码;
        
        character_set_results     为结果集的编码;
        
        character_set_server      为数据库服务器的编码;
      • 查看数据库数据存放路径编码

        • SHOW VARIABLES LIKE '%DATADIR%';
  • 数据库操做code

    • 建立数据库server

      • CREATE DATABASE name [CHARACTER SET utf8 COLLATE utf8_general_ci];
    • 修改数据库

      • ALTER DATABASE name CHARACTER SET utf8;
    • 查看建立数据库语句

      • SHOW CREATE DATABASE name
    • 删除数据库

      • DROP DATABASE name;
    • 使用数据库

      • USE database-name
    • 显示当前选择

      • SELECT DATABASE();
  • 数据表操做

    • 建立数据表:

      CREATE TABLE name (
        column-name data_type,
        ...
        )
    • 查看次数据表建立语句:

      • SHOW CREATE TABLE tab-name
    • 查看次数据库中的数据表:

      • SHOW TABLES;
    • 查看次数据库中的数据表:

      • DESC tab-name;
    • 查看数据列:

      • SHOW COLUMS FROM tab-name;
    • 插入数据:

      • INSERT tab-name [(column1,column2...)] VALUES (val1,val2...)
    • 更新数据:

      • UPDATE tab-name SET column1 = val1 , column2 = val2 [WHERE expr = val]
    • 外键添加:

      • FOREING KEY (column) REFERENCES tab-name (column)
    • 查看数据:

      • SELECT * FROM tab-name;
      • 查看约束 SHOW INDEXES FROM tab-name
      • 过滤&排序 [WHERE,GROUP BY(分组),HAVING,ORDER BY,LIMIT]()
    • 修改数据表:

      1. 添加列:ALTER TABLE tab-name ADD column data-type [FIRST | AFTER column-name](添加多列-add后跟小括号,但无位置关系)
      • 删除列:ALTER TABLE tab-name DROP column-name
      • 添加约束: ALTER TABLE tab-name PRIMARY KEY (column-name)
      • 删除主键约束:ALTER TABLE tab-name DROP PRIMARY KEY
      • 删除惟一约束:ALTER TABLE tab-name DROP {INDEX | KEY} index-name
      • 添加删除默认约束:ALTER TABLE tab-name ALTER column-name {SET DEFAULT default | DROP DEFAULT}
      • 数据表变动1:ALTER TABLE tab-name MODIFY column-name data-type [FIRST | AFTER column-name]
      • 数据表变动2:ALTER TABLE tab-name CHANGE old-name new-name data-type [FIRST | AFTER column-name]
    • 清空数据表:

      • DELETE FROM tab-name;
      • TRUNCATE TABLE tab-name
    • 删除数据表:

      • DROP tab-name

数据表均用到了的为sql语句查询,语句参考

帐户权限管理

查看帐户权限:

SHOW GRANTS; # 当前用户权限
SHOW PRIVILEGES;  # mysql 所支持的权限列表
SHOW GRANTS FOR user;  # 查看某用户

grant 权限名称[字段列表] on [数据库资源类型]数据库资源 to MySQL帐户1,[MySQL帐户2] [with grant option]

*.* 表示全部数据库,全部数据表

'user'@'%' user 帐号能够在任意的主机上进行登陆。

建立服务实例级帐号

grant all privileges on *.* to 'supperuser'@'%' identified by 'password' with grant option;

将建立一个名字为supperuser的帐号,拥有全部的数据库权限,而且具备grant 权限,能够建立其余拥有服务实例权限的其余用户。
建立数据库实例帐号

建立数据库实例帐号

grant all privileges on database_name.* to 'user'@'%' identified by 'userpass' with grant option;

将建立一个名字为user的帐号。拥有database_name 数据库的全部权限,能够随该库中的表进行全部操做。

建立数据表级别的帐号

grant all privileges on table tab_name.test to 'user'@'%' identified by 'userpass' with grant option;

将建立一个名字为user 的用户,对tab_name数据库中test拥有全部的权限。

权限更改

想要增长update, delete,alter 权限能够以下操做:

grant update,delete,alter on database_name.* to 'user'@'%' identified by 'userpass' with grant option;

想要移除insert 权限:

revoke insert on database_name.* from  'user'@'%';

用户管理

删除用户:

drop user user_name

参考文章roverliang

相关文章
相关标签/搜索