MySQL之sql语句

关系型数据库的常见组件:

数据库:database  
表:table  
  行:row
  列:column
索引:index  
视图:view
用户:user
权限:privileges

存储过程:procedure
存储函数:function
触发器:trigger
事件调度器:event scheduler

SQL语句:

DDL:Data Defination Language,数据定义语言  //创建或删除数据库组件的
  CREATE,DROP,ALTER
DML:Data Manipulation Language,数据操纵语言  //主要是向表中插入数据,删除数据,修改数据,查询数据
  INSERT(REPLACE),DELETE,UPDATA,SELECT
DCL: Data Control Language,数据控制语言,主要用来控制权限,授权和收回权限等
  GRANT,REVOKE  
数据类型:
    字符型
    定长字符型:CHAR(#),BINARY(#)  //varchar最多65535个  
    变长字符型:VARCHAR(#),VARBINARY(#)  //char最多255个字符
    
    对象存储:
      TEXT:变长的,不区分大小写,text最大可存储44G个字符
      BLOB:变长的,区分字符大小写
    内置类型:
      ENUM
      SET 数值
    精确数值型
      整型:int
        tinyint:1bytes
        smallint:2bytes
        mediumint:3bytes
        int:4bytes
        bigint:8bytes
      十进制:decimal
    近似数值型
      单精度浮点型
        float
      双精度浮点型
        double
  日期时间型:
    日期:DATE
    时间:TIME
    日期时间:DATETIME
    时间戳:TIMETAMP
    年份:YEAR(2),YEAR(4)
修饰符:
  所有类型适用:
    NOT NULL  //非空约束
    DEFAULT VALUE    //设定默认值
    PRIMARY KEY  //定义单个字段为主键
    UNIQUE KEY  //定义单个字段受唯一性约束
  数值型使用:
    UNSIGNED  //无符号,仅用来表示正数
    AUTO_INCREMENT  //自增长

DDL:CREATE,DRRP,ALTER

数据库:
  CREATE DATABASE|SCHEMA [IF NOT EXISTS] 'DB_NAME';
  DROP DATABASE|SCHEMA [IF EXISTX] 'DB_NAME';  
    CHARACTER SET [=] 'character set name'  //指明字符集
    COLLATE [=] 'collate name'  //指明排序规则
    查看支持的所有字符集:SHOW CHARACTER SET; 
    查看支持的所有排序规则:SHOW COLLATION;  
    查看数据库:SHOW DATABASES;
获取命令使用帮助:
  mysql> HELP KEYWORD   比如:HELP CREATE DATABASE;

 

表:
  创建表:
  CREATE TABLE [IF NOT EXISTS] tb_name (col1 datatype 修饰符,col2 datatype 修饰符) ENGINE='engine_name'
  col1 type1
  PRIMARY KEY(col1,col2,...)
  INDEX(col1,...)
  UNIQUE KEY(col1,...)
主键示例:
mysql> USE testdb; Database changed mysql> CREATE table tb1 (id int UNSIGNED NOT NULL PRIMARY KEY,name VARCHAR(20) NOT NULL,age tinyint UNSIGNED);  //指明单个主键 mysql> CREATE table tb2 (id int UNSIGNED NOT NULL,name VARCHAR(20) NOT NULL,age tinyint UNSIGNED,PRIMARY KEY(id,name));  //组合主键
  查看所有的引擎:SHOW ENGINES;
  查看表:SHOW TABLES [FROM db_name];
  查看表结构:DESC [db_name.]tb_name;
获取帮助:
  mysql> HELP CREATE TABLE;
查看创建命令:
  mysql> SHOW CREATE TABLE  tb1_name;

  查看表状态:

    SHOW TABLE STATUS LIKE 'tb1_name'G;  //G表示竖排查看

  删除表:

    DROP TABLE [IF EXISTS] tbl_name;

  修改表

    ALTER TABLE 'tbl_name'

字段:
  添加字段:add
    ADD col1 data_type [FIRST|AFTER col_name]
     示例:mysql> ALTER TABLE tb1 ADD gender ENUM('m','f');
  删除字段:drop   
    示例:mysql> ALTER TABLE tb1 DROP sid;
  修改字段:alter,change,modify  //如果修改字段名称使用change,修改字段的属性定义使用modify,删除字段的默认值使用alter
    示例:将字段名id改为sid
    mysql> ALTER TABLE tb1 CHANGE id sid int UNSIGNED NOT NULL; 
索引
  添加索引:add
   示例;
     添加唯一键索引:mysql> ALTER TABLE tb1 ADD UNIQUE KEY(name);
     添加索引:mysql> ALTER TABLE tb1 ADD INDEX(age);
  删除索引: drop
    示例:mysql> ALTER TABLE tb1 DROP age;
查看表上的索引:SHOW INDEXES FROM [db.name.]tbl_name;
表选项

 

索引:

 

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

 

索引:可以有索引名称
创建索引:
    CREATE INDEX index_name ON tbl_name (index_col_name,...);
删除索引:
  DROP INDEX index_name ON tbl_name;
   示例:DROP INDEX name ON tb1;

DML:INSERT,DELETE,SELECT,UPDATE

INSERT INTO:
  INSERT [INTO] tbl_name [(col_name,...)] {VALUES|VALUE}(val1,...),(...),...
示例:mysql> INSERT INTO tb1 VALUES(1,'yang guo','m'),(2,'guo xiang','f');
DELETE:
  DELETE FROM tb1_name [WHERE clause] [ORDER BY 'col_name' [DESC]][LIMIT [m,]n];  
SELECT:
  SELECT col1,col2,... FROM tbl_name [WHERE clause][ORDER BY 'col_name' [DESC]][LIMIT [m,]n];  
    字段表示法:
      *:所有字段
      as:字段别名,col1 AS alias1;

    WHERE clause"
      操作符:
        >,<,>=,<=,==,!=
        BETWEEN ... AND ...
        LIKE:
          %:任意长度的任意字符
          _:任意单个字符
        RLIKE:基于正则表达式匹配
        IS NULL
        IS NOT NULL
          
      条件逻辑操作:
        and
        or
        not
UPDATE:
  UPDATE tbl_name SET col1=new_val1,col2=new_val2,... [WHERE clause] [ORDER BY 'col_name' [DESC]][LIMIT [m,]n];

用户账号及权限管理:

用户账号:'user'@'host'
  user:用户名   host:此用户访问mysqld服务时允许通过哪些主机远程创建连接;     host可以使用IP、网络地址、主机名、通配符(%和_);
禁止检查主机名:
my.cnf,[mysqld]
skip_name_resolve=yes

创建用户账号:

CREATE USER 'username'@'host' [IDENTIFIED BY 'password'];
示例:mysql> CREATE USER 'wpuser'@'%' IDENTIFIED BY 'wpp@ss';
远程登录 # mysql -uwpuser -h192.168.2.20 -p

删除用户:

DROP USER 'username'@'host' ...;

授权:

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

GRANT priv_type,... ON [object_type] db_name.tb_name TO 'user'@'hsot' [IDENTIFIED BY 'password'][WITH GRANT OPTION];
  priv_type:ALL [PRIVILEGES]
  db_name.tb_name:
    *.*:所有库的所有表
    db_name.*:指定库的所有表
    db_name.tb_name:指定库的指定表
    db_name.routine_name:db_name后面跟的是一个存储例程或存储函数
  WITH GRANT OPTION:user获得的授权能够转授给其他用户
授权示例:
GRANT SELECT,DELETE ON testdb.* TO 'testuser'@'%' IDENTIFIED BY 'testpass';

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

SHOW GRANTS FOR 'user'@'host';  //比如:
示例:
SHOW GRANTS FOR 'wpuser'@'%';
SHOW GRANTS FOR CURRENT_USER;    //查看当前用户的授权

回收权限:

REVOKE priv_type,...ON db_name.tb_name FROM 'user'@'host';
示例:REVOKE DELETE ON testdb.* FROM 'testuser'@'%';

注意:MariaDB服务进程启动时会读取mysql库中的所有授权表至内存中

(1)GRANT或REVOKE等执行权限操作会保存于表中,MariaDB的服务进程会自动重读授权表
(2)对于不能够或不能及时重读授权表的命令,可手动让MariaDB的服务进程重读授权表
   mysql> FLUSH PRIVILEGES;

 

原文地址:https://www.cnblogs.com/ckh2014/p/14253588.html