• 【SQL基础】三种类别语句


    SQL 语句主要可以划分为以下 3 个类别。

    DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。

     就是对数据库内部的对象进行创建、删除、修改的操作语言

    DML(Data Manipulation Language)语句 :数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、udpate 和select 等。

    对数据库中表记录的操作

    DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。

    主要是DBA用来管理系统中的对象权限时所使用,一般的开发人员很少使用



    安装MySQL 时系统自动创建的,其各自功能如下。
    information_schema:主要存储了系统中的一些数据库对象信息。比如用户表信息、列信息、权限信息、字符集信息、分区信息等。
    cluster:存储了系统的集群信息。
    mysql:存储了系统的用户权限信息。
    test:系统自动创建的测试数据库,任何用户都可以使用。


    1.DDL

    (1).创建数据库

    create database dbname;

    可以用  show databases;  来查看有哪些数据库

    选择数据库 ;

    use dbname;

    (2).删除数据库

    drop database dbname;

    (3).创建表

    create table tablename (column_name_1 column_type_1 constraints,column_name_2  column_type_2  constraints , ……column_name_n  column_type_n constraints);
     

    可以用 下面的语法查看表的定义:

    desc tablename; 

    (4).删除表

    drop table tablename;

    (5).修改表

    修改表类型:

    ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name];

    增加表字段:

    ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name];

    删除字段:

    ALTER TABLE tablename DROP [COLUMN] col_name;

    字段改名:

    ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name];

       注意:change 和 modify都可以修改表的定义,不同的是 change 后面需要写两次列名,不方便。但是 change 的优点是可以修改列名称,modify则不能。
    修改字段排列顺序:
    前面介绍的的字段增加和修改语法(ADD/CNAHGE/MODIFY)中,都有一个可选项 [first|aftercolumn_name],这个选项可以用来修改字段在表中的位置,默认 ADD 增加的新字段
    是加在表的最后位置,而 CHANGE/MODIFY 默认都不会改变字段的位置。
        注意:CHANGE/FIRST|AFTER COLUMN 这些关键字都属于 MySQL 在标准 SQL 上的扩展,在其他数据库上不一定适用。

    (6).表改名

    ALTER TABLE tablename RENAME [TO] new_tablename;

    2.DML

    (1).插入记录

    一条记录:

    INSERT INTO tablename (field1,field2,……fieldn) VALUES(value1,value2,……valuesn); /*field和value一一对应,field可以省略*/

    多条记录:

    INSERT INTO tablename (field1, field2,……fieldn)
        VALUES
        (record1_value1, record1_value2,……record1_valuesn),
        (record2_value1, record2_value2,……record2_valuesn),
        ……
        (recordn_value1, recordn_value2,……recordn_valuesn)
    ;
    /*field可以省略*/

    (2).更新记录

    更新一个表中的数据:

    UPDATE tablename SET field1=value1,field2.=value2,……fieldn=valuen [WHERE CONDITION];

    更新多个表中的数据:

    UPDATE t1,t2…tn set t1.field1=expr1,tn.fieldn=exprn [WHERE CONDITION]; /*t为表名*/

    (3).删除记录

    删除一个表中记录:

    DELETE FROM tablename [WHERE CONDITION];

    删除多个表中记录:

    DELETE t1,t2…tn FROM t1,t2…tn [WHERE CONDITION];

        注意:不管是单表还是多表,不加 where 条件将会把表的所有记录删除,所以操作时一定要小心。

    (4).查询记录

    基本的语法:

    SELECT * FROM tablename [DISTINCT] [WHERE CONDITION]; /*distinct是消除重复的记录,where条件查询*/

    排序和限制:

    SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC],field2 [DESC|ASC],……fieldn [DESC|ASC]];
    /* DESC 和 ASC 是排序顺序关键字,DESC 表示按照字段进行降序排列,ASC 则表示升序排列,如果不写此关键字默认是升序排列。ORDER BY 后面可以跟多个不同的排序字段,并且每个排序字段可以有不同的排序顺序。*/

    限制显示:

    SELECT ……[LIMIT offset_start,row_count];

        注意:limit 属于 MySQL 扩展 SQL92 后的语法,在其他数据库上并不能通用。limit 经常和 order by 一起配合使用来进行记录的分页显示。
    聚合:

    SELECT [field1,field2,……fieldn] fun_name
    FROM tablename
    [WHERE where_contition]
    [GROUP BY field1,field2,……fieldn
    [WITH ROLLUP]]
    [HAVING where_contition]

    对其参数进行以下说明。

     fun_name 表示要做的聚合操作,也就是聚合函数,常用的有 sum(求和)、count(*)(记录数)、max(最大值)、min(最小值)。

    GROUP BY 关键字表示要进行分类聚合的字段,比如要按照部门分类统计员工数量,部门就应该写在 group by 后面。

     WITH ROLLUP 是可选语法,表明是否对分类聚合后的结果进行再汇总。

     HAVING 关键字表示对分类后的结果再进行条件的过滤

        注意:having 和 where 的区别在于 having 是对聚合后的结果进行条件的过滤,而 where 是在聚合前就对记录进行过滤,如果逻辑允许,我们尽可能用 where 先过滤记录,
    这样因为结果集减小,将对聚合的效率大大提高,最后再根据逻辑看是否用 having 进行再过滤。

    (5).子查询:

    记录联合:

    SELECT * FROM t1
    UNION|UNION ALL
    SELECT * FROM t2
    ……
    UNION|UNION ALL
    SELECT * FROM tn;

        注意:UNION 和 UNION ALL 的主要区别是 UNION ALL 是把结果集直接合并在一起,而 UNION 是将UNION ALL 后的结果进行一次 DISTINCT,去除重复记录后的结果。

    3.DCL

  • 相关阅读:
    javascript 日期月份加减
    ActiveRecord 的类型初始值设定项引发异常
    angularjs $q、$http 处理多个异步请求
    angular.foreach 格式
    PHP基础知识2
    第一个月的学习总结
    JavaScript的学习5
    JavaScript的学习4
    JavaScript的学习3
    JavaScript的学习2
  • 原文地址:https://www.cnblogs.com/libra-yong/p/6428339.html
Copyright © 2020-2023  润新知