zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    【Leetcode】【Easy】Remove Duplicates from Sorted List
    【Leetcode】【Easy】Pascal's Triangle II
    【Leetcode】【Easy】Pascal's Triangle
    【Leetcode】【Easy】Binary Tree Level Order Traversal II
    【Leetcode】【Easy】Binary Tree Level Order Traversal
    【Leetcode】【Easy】Maximum Depth of Binary Tree
    【Leetcode】【Easy】Minimum Depth of Binary Tree
    【Leetcode】【Easy】Balanced Binary Tree
    【Leetcode】【Easy】Symmetric Tree
    如何使用Action.Invoke()触发一个Storyboard
  • 原文地址:https://www.cnblogs.com/libra-yong/p/6428339.html
Copyright © 2011-2022 走看看