zoukankan      html  css  js  c++  java
  • 【学习总结】SQL学习总结之SQL语法

    【学习总结】SQL学习总结-总

    ================================================

    二、SQL语法

    SQL SELECT 语句

    • 介绍

      • SELECT 语句用于从数据库中选取数据。
      • 结果被存储在一个结果表中,称为结果集。
    • SQL SELECT 语法

      • 选取特定列组成新表返回:SELECT column_name,column_name FROM table_name;
        • 例如:SELECT name,country FROM Websites;
      • 选取所有列即原表返回:SELECT * FROM table_name;
        • 例如:SELECT * FROM Websites;

    SQL SELECT DISTINCT 语句

    • 介绍

      • 在表中,一个列可能会包含多个重复值,有时仅希望列出不同(distinct)的值。
      • DISTINCT 关键词用于返回唯一不同的值。
    • SQL SELECT DISTINCT 语法

      • 默认去掉所选取列的重复值并返回新表:
        • SELECT DISTINCT column_name,column_name FROM table_name;
      • 例如:SELECT DISTINCT country FROM Websites;

    SQL WHERE 子句

    • 介绍

      • WHERE 子句用于过滤记录,提取那些满足指定条件的记录。
    • SQL WHERE 语法

      • 选取列并返回符合指定条件的新表:
        • SELECT column_name,column_name FROM table_name WHERE column_name operator value; -- “列名+操作符+值”
      • 例如:从 "Websites" 表中选取国家为 "CN" 的所有网站:
        • SELECT * FROM Websites WHERE country='CN';
      • 例如:从 "Websites" 表中选取id为1的所有网站:
        • SELECT * FROM Websites WHERE id=1;
    • 文本字段 vs. 数值字段

      • SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。-- ( 'CN' )
      • 如果是数值字段,请不要使用引号。-- (id=1)
    • WHERE 子句中的运算符



    SQL AND & OR 运算符

    • 介绍

      • AND & OR 运算符用于基于一个以上的条件对记录进行过滤。
      • 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
      • 如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
    • AND 运算符语法

      • 选取同时满足两个条件的列并返回新表:
        • SELECT * FROM tablename WHERE column_name operator value AND column_name operator value;
      • 例如:从 "Websites" 表中选取国家为 "CN" 且alexa排名大于 "50" 的所有网站:
        • SELECT * FROM Websites WHERE country='CN' AND alexa > 50;
    • OR 运算符语法

      • 选取满足任一条件的列并返回新表:
        • SELECT * FROM Websites WHERE column_name operator value OR column_name operator value
      • 例如:从 "Websites" 表中选取国家为 "USA" 或者 "CN" 的所有客户:
        • SELECT * FROM Websites WHERE country='USA' OR country='CN';
    • AND & OR 结合

      • 例如:从 "Websites" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站:
        • SELECT * FROM Websites WHERE alexa>15 AND (country='CN' OR country='USA');

    SQL ORDER BY 关键字

    • 介绍

      • ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
      • ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字(descent下降); ASC(ascent上升)。
    • SQL ORDER BY 语法

      • 根据某列或某几列按照升序或降序排列后返回新表:
        • SELECT column_name, column_name FROM table_name ORDER BY column_name, column_name ASC | DESC
      • 例如:从 "Websites" 表中选取所有网站,并按照 "alexa" 列排序:
        • SELECT * FROM Website ORDER BY alexa;
      • 例如:从 "Websites" 表中选取所有网站,并按照 "alexa" 列降序排序:
        • SELECT * FROM Websites ORDER BY alexa DESC;
      • 例如:从 "Websites" 表中选取所有网站,并按照 "country" 和 "alexa" 列排序:
        • SELECT * FROM Websites ORDER BY country, alexa;
    • 注意

      • ORDER BY 多列的时候,先按照第一个column name排序,在按照第二个column name排序;
        • 1)先将country值这一列排序,同为CN的排前面,同属USA的排后面;
        • 2)然后在同属CN的这些多行数据中,再根据alexa值的大小排列。
        • 3)ORDER BY 排列时,不写明ASC DESC的时候,默认是ASC。
      • 多列时,desc 或者 asc 只对它紧跟着的第一个列名有效,其他列不受影响,仍然是默认的升序。

    SQL INSERT INTO 语句

    • 介绍

      • INSERT INTO 语句用于向表中插入新记录。
    • SQL INSERT INTO 语法

      • 无需指定要插入数据的列名,只需提供被插入的值:
        • INSERT INTO table_name VALUE (value1, value2, ....);
      • 需要指定列名及被插入的值:
        • INSERT INTO table_name (column1, column2, ...) VALUE (value1, value2, ...);
      • 例如:插入一个新行,但是只在 "name"、"url" 和 "country" 列插入数据(id 字段会自动更新):
        • NSERT INTO Websites (name, url, country) VALUES ('stackoverflow', 'http://stackoverflow.com/', 'IND');
    • 注意:

      • id字段会自动更新;
      • 如果不是插入全部字段,则未指定数值的字段自动填充默认值,比如0.
      • 没有指定要插入数据的列名的形式需要列出插入行的每一列数据;
      • insert into select 和select into from 的区别:
        • `insert into scorebak select * from socre where neza='neza' : 插入一行,要求表scorebak 必须存在;
        • `select * into scorebak from score where neza='neza' : 也是插入一行,要求表scorebak 不存在;

    SQL UPDATE 语句

    • 介绍

      • 更新表中已存在的记录。
    • SQL UPDATE 语法

      • 根据set设置更新指定列或整个表的相关数值:
        • UPDATE table_name SET column1=value1, columa2=value2,.. WHERE some_column=some_value;
      • 例如:把 "菜鸟教程" 的 alexa 排名更新为 5000,country 改为 USA。
        • UPDATE Websites SET alexa=’5000‘, country='USA' WHERE name='菜鸟教程';
    • 注:

      • 执行没有 WHERE 子句的 UPDATE 要慎重,再慎重。
        • 如果上述例子中没有WHERE,则会把表中所有数据的alexa改为5000,country改为USA;
      • 在 MySQL 中可以通过设置 sql_safe_updates 这个自带的参数来解决,当该参数开启的情况下,你必须在update 语句后携带 where 条件,否则就会报错。
        • set sql_safe_updates=1; 表示开启该参数

    SQL DELETE 语句

    • 介绍

      • 删除表中的记录。
    • SQL DELETE 语法

      • 从指定表中删除符合条件的行:
        • DELETE FROM table_name WHERE some_column=some_value;
      • 例如:从 "Websites" 表中删除网站名为 "百度" 且国家为 CN 的网站的所在行:
        • DELETE FROM Websites WHERE name='百度' AND country='CN;
    • 注意

      • 可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:
      • 语句:
        • DELETE FROM table_name;
        • DELETE * FROM table_name;
    • SQL关于删除的三个语句:DROP、TRUNCATE、 DELETE

      • 相同点:drop、delete、truncate 都是删除表的内容。
      • 不同点:
        • delete:删除表的内容,表的结构还存在,不释放空间,可以回滚恢复;
        • drop:删除表内容和结构,释放空间,没有备份表之前要慎用;
        • truncate:删除表的内容,表的结构存在,可以释放空间,没有备份表之前要慎用;
      • 执行速度:drop > truncate > delete
    • mysql安全设置

      • mysql 中可以通过参数 sql_safe_updates 来限制 update/delete,防止全表更新或删除。

    END

  • 相关阅读:
    【分布式】缓存穿透、缓存雪崩,缓存击穿解决方案
    mongodb常用查询语法
    依据记录总数和每页大小取页数(转)
    SpringBoot普通类中如何获取其他bean例如Service、Dao(转)
    RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较(转)
    java中job运行时间
    如何查看某个端口被谁占用
    Push to origin/master was rejected (Git提交错误)(转)
    curl网站开发指南
    2012 不宜进入的三个技术点(中)
  • 原文地址:https://www.cnblogs.com/anliux/p/12547680.html
Copyright © 2011-2022 走看看