zoukankan      html  css  js  c++  java
  • mysql之SQL入门与提升(一)

    一.基本的增删改查

    1.1首先建一张表

    DROP TABLE IF EXISTS `websites`;
    CREATE TABLE `websites` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称',
    `url` varchar(255) NOT NULL DEFAULT '',
    `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
    `country` char(10) NOT NULL DEFAULT '' COMMENT '国家',
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

    -- ----------------------------
    -- Records of `websites`
    -- ----------------------------
    BEGIN;
    INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘宝', 'https://www.taobao.com/', '13', 'CN'), ('3', '京东', 'http://www.runoob.com/', '4689', 'CN'), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');
    COMMIT;

    SET FOREIGN_KEY_CHECKS = 1;

    1.2SQL INSERT INTO 语句

    第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

    INSERT INTO table_name
    VALUES (value1,value2,value3,...);

    第二种形式需要指定列名及被插入的值:

    INSERT INTO table_name (column1,column2,column3,...)
    VALUES (value1,value2,value3,...);

    实例

    INSERT INTO Websites (name, url, alexa, country) VALUES ('百度','https://www.baidu.com/','4','CN');
     
    1.3SQL DELETE 语句

    SQL DELETE 语法

    DELETE FROM table_name
    WHERE some_column=some_value;

    实例

    DELETE FROM Websites WHERE name='百度' AND country='CN';
     
    1.4SQL UPDATE 语句

    SQL UPDATE 语法

    UPDATE table_name
    SET column1=value1,column2=value2,...
    WHERE some_column=some_value;

    实例

    UPDATE Websites SET alexa='5000', country='USA' WHERE name='京东';
     
    1.5SQL SELECT 语句

    SQL SELECT 语法

    SELECT column_name,column_name
    FROM table_name;

    SELECT * FROM table_name;

    实例

    SELECT name,country FROM Websites;
    SELECT * FROM Websites;
     

    1.6SQL SELECT DISTINCT 语句

    SQL SELECT DISTINCT 语法

    SELECT DISTINCT column_name,column_name
    FROM table_name;

    实例

    SELECT DISTINCT country FROM Websites;
     
    1.7SQL WHERE 子句

    SQL WHERE 语法

    SELECT column_name,column_name
    FROM table_name
    WHERE column_name operator value;

    实例

    SELECT * FROM Websites WHERE country='CN';
     
    1.8SQL AND & OR 运算符

    如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

    如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

    实例

    SELECT * FROM Websites WHERE country='CN' AND alexa > 50;
     
    1.9SQL ORDER BY 关键字

    ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。

    ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。

    SQL ORDER BY 语法

    SELECT column_name,column_name
    FROM table_name
    ORDER BY column_name,column_name ASC|DESC;

    实例

    SELECT * FROM Websites ORDER BY alexa;
    SELECT * FROM Websites ORDER BY alexa DESC;
    SELECT * FROM Websites ORDER BY country,alexa;

    ORDER BY 多列的时候,eg:

    order by A,B        这个时候都是默认按升序排列
    order by A desc,B   这个时候 A 降序,B 升序排列
    order by A ,B desc  这个时候 A 升序,B 降序排列

    二.SQL进阶篇

    2.1LIMIT 限制数量,对于拥有数千条记录的大型表来说,是非常有用的。
    SELECT *
    FROM Websites
    LIMIT 5;
    2.2SQL LIKE

    SQL LIKE 语法

    SELECT column_name(s)
    FROM table_name
    WHERE column_name LIKE pattern;

    实例

    SELECT * FROM Websites WHERE name LIKE 'G%';
    SELECT * FROM Websites WHERE name LIKE '%oo%';
    SELECT * FROM Websites WHERE name NOT LIKE '%oo%';

    2.3SQL 通配符
    2.3.1 % 通配符

    实例

    SELECT * FROM Websites WHERE url LIKE 'https%'

    SELECT * FROM Websites WHERE url LIKE '%oo%';

    2.3.2 _ 通配符

    实例

    SELECT * FROM Websites WHERE name LIKE '_oogle';

    SELECT * FROM Websites WHERE name LIKE 'G_o_le';

    2.3.3 REGEXP 或 NOT REGEXP通配符

     SQL 语句选取 name 以 "G"、"F" 或 "s" 开始的所有网站:

    实例

    SELECT * FROM Websites WHERE name REGEXP '^[GFs]';
    SELECT * FROM Websites WHERE name REGEXP '^[A-H]';

    下面的 SQL 语句选取 name 不以 A 到 H 字母开头的网站:

    SELECT * FROM Websites WHERE name REGEXP '^[^A-H]';

    2.4SQL IN 

    SQL IN 语法

    SELECT column_name(s)
    FROM table_name
    WHERE column_name IN (value1,value2,...);

    实例

    SELECT * FROM Websites WHERE name IN ('Google','菜鸟教程');

    1. IN 与 = 的异同

      •  相同点:均在WHERE中使用作为筛选条件之一、均是等于的含义
      •  不同点:IN可以规定多个值,等于规定一个值

      IN

      SELECT column_name(s)
      FROM table_name
      WHERE column_name IN (value1,value2,...);

      =

      SELECT column_name(s)
      FROM table_name
      WHERE column_name=value1;
       
    2. in 与 = 的转换

      select * from Websites where name in ('Google','百度');

      可以转换成 = 的表达:

      select * from Websites where name='Google' or name='百度';




      2.5
      SQL BETWEEN 

      SQL BETWEEN 语法

      
      
      SELECT column_name(s)
      FROM table_name
      WHERE column_name BETWEEN value1 AND value2;

      实例

      SELECT * FROM Websites WHERE alexa BETWEEN 1 AND 20;
      SELECT * FROM Websites WHERE alexa NOT BETWEEN 1 AND 20;
       
      下面的 SQL 语句选取 alexa 介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站:
      SELECT * FROM Websites WHERE (alexa BETWEEN 1 AND 20)AND country NOT IN ('USA', 'IND');
      下面的 SQL 语句选取 name 以介于 'A' 和 'H' 之间字母开始的所有网站:

      SELECT * FROM Websites WHERE name BETWEEN 'A' AND 'H';
      下面的 SQL 语句选取 name 不介于 'A' 和 'H' 之间字母开始的所有网站
      SELECT * FROM Websites WHERE name NOT BETWEEN 'A' AND 'H';
       
      SELECT * FROM access_log WHERE date BETWEEN '2016-05-10' AND '2016-05-14';

       
       
       
       
       

     

     
     
     


  • 相关阅读:
    有趣的话
    Ubuntu Sublime Text 3 搜狗拼音
    linux下查看文件编码及修改编码
    解决Qt5 Creator无法切换输入法(fcitx),Ubuntu中不能使用搜狗输入法录入汉字问题
    linux下 为自己编写的程序 添加tab自动补全 功能
    SSH免密码登录
    ubuntu14.04 无法ping通 mirrors6.ustc.edu.cn
    解决 ubuntu14.04下的gedit中文乱码
    资源记录
    【重新学习C语言】起步篇
  • 原文地址:https://www.cnblogs.com/tongcc/p/10897096.html
Copyright © 2011-2022 走看看