zoukankan      html  css  js  c++  java
  • MariaDB之SQL语句基础

    数据库组件:

      数据库:database
      表: table
      索引:index
      视图:view
      用户:user
      权限:privileges
      存储过程:procedure
      存储函数:function
      触发器:trigger
      事件调度器:event scheduler

    DDL:Data Defination Language,数据定义语言

    CREATE, DROP, ALTER

    DML: Data Manipulation Language,数据操作语言

    INSERT, DELETE, UPDATE, SELECT

    DCL: Data Control Language,数据控制语言

    GRANT, REVOKE

    数据类型:  

       字符:
         定长字符:CHAR(#)不区分大小写, CHARBINARY(#)区分大小写      变长字符: VARCHAR(#)不区分大小写, VARCHARBINARY(#)区分大小写
      
         内建类型:ENUM, SET          
         对象存储:
           TEXT:不区分字符大小写,最大可达到4G
           BLOB: 区分字符大小写
       数值型
             精确数值型
                 整型: int
                   tinyint:1byte
                   smallint: 2bytes
                     mediumint:3bytes
                     int: 4bytes
                     bigint: 8bytes
                 十进制: decimal
              近似数值型
                 单精度浮点型
                     float
                 双精度浮点型
                     double
       日期时间型:
             日期: DATA
             时间: TIME
             日期时间:DATETIME
             时间戳: TIMESTAMP
             年份: YEAR(2), YEAR(4)
       修饰符:
          所有类型使用:
              NOT NULL
              DEFAULT
              PRIMARY KEY
              UNIQUE KEY
          数值型使用:
              UNSIGNED
              AUTO_INCREMENT

    DDL: CREATE、DROP、ALTER

      数据库:  

      创建数据库:CREATE DATABASE|SCHMA [IF NOT EXISTS]'DB_NAME';
        # CREATE DATABASE test CHARACTER SET = utf8;   删除数据库:DROP DATABASE
    |SCHEMA [IF EXISTX] 'DB_NAME';  
            # DROP DATABASE [IF EXISTS] test;     设置字符集:  CHARACTER SET [=]
    'character set name'     设置排序规则: COLLATE 'collate name'     查看支持的所有字符集: SHOW CHARACTER SET;     查看支持的所有排序规则:SHOW COLLATIONS;
      
        获取命令使用帮助:
          msyql> HELP KEYWORD;
        查看数据库:SHOW DATABASES;
        查看数据库创建命令: SHOW CREATE DATABASE test G

       表: 

    创建表:CREATE TABLE [IF NOT EXISTS] 'tb_name' (col type1,col type2...) 
      表选项:
        设置存储引擎:   ENGINE [=] engine_name
        指明行格式: ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSE|REDUNANT|COMPACT}     查看存储引擎: SHOW ENGINES;   获取帮助:    mysql> HELP CREATE TABLE   查看表创建命令:SHOW CREATE TABLE table_name;或 SHOW CREATE TABLE table_name G   查看表状态:  SHOW TABLE STATUS LIKE 'table_name'G
      # CREATE TABLE students (id int(10) UNSIGNED NOT NULL PRIMARY KEY,name VARCHAR(20) NOT NULL,age TINYINT(3) UNSIGNED);
      # CREATE TABLE students2 (id int(10) UNSIGNED NOT NULL,name VARCHAR(20) NOT NULL,age TINYINT(3) UNSIGNED,PRIMARY KEY(id,name));
        # 描述表结构: DESC student; 删除表: DROP TABLE [IF EXISTS] 'tbl_name';
        # DROP TABLE [IF EXISTS] students; 修改表:ALTER TABLE 'tbl_name'
        字段:
          添加字段: add
            Add col1 data_type [FIRST|AFTER col_name]
              # ALTER TABLE 'user' ADD gender ENUM('m','f');
          删除字段:drop
              # ALTER TABLE students DROP gender;
          修改字段:
            修改字段名称:change  
              # ALTER TABLE students CHANGE id sid int UNSIGNED NOT NULL;
            修改字段属性定义: modify
              # ALTER TABLE students MODIFY sid tinyint UNSIGNED NOT NULL;
            修改字段默认值: alter
              # ALTER TABLE students ALTER gender SET DEFAULT 'm';
        索引:实际应用中不建议修改索引
          添加索引:add
            # ALTER TABLE students ADD UNIQUE KEY(name);  
            # ALTER TABLE students ADD INDEX(age);
          删除索引:drop
            # ALTER TABLE students DROP age;
          
        表选项:

      索引:特殊数据结构,定义在查找时作为查找条件的字段

    创建索引: CREATE INDEX index_name ON tbl_name(index_col_name,...);
    删除索引: DROP INDEX index_name ON tbl_name;
    查看表上的索引:SHOW INDEXES FROM [db_name.]tbl_name;
            # SHOW INDEXES FROM test.students;

    DML: INSERT、DELETE、SELECT、UPDATE

      INSERT INTO: 

      INSERT [INTO] tbl_name [(col1,col2,...)] { VALUES | VALUE } (VAL1,...),(...)...
       # INSERT INTO students VALUES(1,'alen','m'),(2,'张三','f');

      SELECT:

      SELECT col1,col2,... FROM tbl_name [WHERE clause][ORDER BY 'col_name'][LIMIT [m,]n]
        字段表示法:
          *:所有字段
          as: 字段别名,col1 AS alias1;

      DELETE:

      DELETE FROM tbl_name [WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n];

      UPDATE:

      UPDATE tbl_name SET col1=new_val1, col2=new_val2,..[WHERE clause] [ORDER BY 'col_name' [DESC]] [limit [m,]n];

     DCL: GRANT、REVOKE

    用户账号及权限管理:

      用户账号:'user'@'host'   

        user:用户名
        host: 此用户访问mysqld服务时允许通过哪些主机远程创建连接
          IP、网络地址、主机名、通配符(%和_)
        禁止检查主机名:
          my.cnf--> skip_name_resolve = yes

      创建用户账号: 

      CREATE USER 'username'@'host' [IDENTIFIED BY 'password']
            #  CREATE USER 'wpuser'@'%' IDENTIFIED BY 'wppassword';
            #  SELECT User,Host,Password FORM user;

      删除用户: 

      DROP USER 'username'@'host';
        # DROP USER 'wpuser'@'host';

      授权:

        授权级别: 管理权限、数据库、表、字段、存储例程   

       GRANT pri_type,... ON [object_type] db_name.tb_name TO 'user'@'host' [IDENTIFIED BY 'password'] [WITH GRANT OPTION];
          priv_type: ALL [PRIVILEGES]       db_name.tb_name;
    *.*: 指定库的所有表;
             db_name.*:指定库的所有表; db_name.tb_name: 指定库的指定表; db_name.routeine_name:指定库的存储例程;

       查看指定用户获得的授权:  

       SHOW GRANTS FOR 'root'@'localhost';
             # SHOW GRANTS FOR 'wpuser'@'%';
             # SHOW GRANTS FOR CURRENT_USER;

      回收授权: 

       REVOKE priv_type,... ON db_name.tb_name FROM 'user'@'host';
          # USE mysql;
          # REVOKE DELETE ON test.* FROM 'wpuser'@'%';
          # SHOW GRANTS FOR 'wpuser'@'%';

      Note: MariaDB服务器进程启动时会读取mysql库中的所有授权表至内存中;
        1. GRANT或REVOKE等执行权限操作会保存于表中,MariaDB的服务进程会自动重读授权表;
        2.对于不能够或不能及时重读授权表的命令,可手动让MariaDB的服务进程重读授权表
          # FLUSH PRIVILEGES

      

  • 相关阅读:
    python基础-递归
    python基础-三元表达式/列表推导式/生成器表达式
    python基础-生成器
    python基础-迭代器
    python基础-函数
    python基础-文件操作
    Docker(六)安装Red5进行rtmp推流
    Docker(五)安装Fastdfs
    Docker(四)安装Redis
    Docker(三)安装Mysql
  • 原文地址:https://www.cnblogs.com/ckh2014/p/10799433.html
Copyright © 2011-2022 走看看