MariaDB之SQL语句基础

Posted ckh2014

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

  

 

 

 

 

 

 

 

 

 

 

以上是关于MariaDB之SQL语句基础的主要内容,如果未能解决你的问题,请参考以下文章

MySQL基础之MySQL必知必会(十六)创建高级联结

SQL基础之XML

动态SQL基础概念复习(Javaweb作业5)

mariadb的select语句

mysql/mariadb知识点总结 之 事务总结

mysql/mariadb知识点总结 之 事务总结