详细记录整个SQL学习进阶过程....(未完待续)

1.sql语法:(对大小写不敏感) 

  (1)

  set names utf8mb4;        命令用于设置使用的字符集。

  SELECT * FROM Websites;    读取数据表的信息。

  show tables;           显示出所有的表。

  show columns from table;      显示数据表的属性,属性类型,主键

                  信息是否为NULL,默认值等其他信息。

  show index from table;      显示数据库的索引信息,包括主键。

 

  (2)查询语句select(查询 );DISTINCT用于返回唯一不同的值。

  select distinct id from daily;       查询daily表中,列的唯一的值(去重复)

  select*from table where country='cn';   查询table中取国家为cn的所有数据(conuntry为列,其查询内容必须为该列中一个板块中的全部内容,如果查询的为数字,就不需要单引号) 

  select*from  table where country='USA' or country='CN'; 查询table表中country列中为‘USA’或‘CN’的所有客户(and 和)。

  select*from table where alexa >15 and (country = 'CN'  or country='USA'); 从 "table" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站:

 

  (3) where 相关语句(where子句用于过滤记录)

  select column_name,column_name from table_name where column_name operator value;   查询

  select*from emp where sal>2000 and sal<4000;     查询emp表中sal列中大于2000小于3000的值;

  select*from emp where sal between 1500 and 4000; 

  select*from emp where not sal >1500;         查询emp表中sal小于1500的值;

  select*from emp where sal in (500,300,150)         查询emp表sal列中等与500,300,150的值

  select *from emp whrer ename like 'M%';        查询emp表中Ename列中有M的值,M为要查询内容中的模糊信息。

  (4)模糊查询:SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件;

      ①%:表示零个或多个字符。

        可匹配任意类型和任意长度的字符,有些情况若是中文,请使用两个百分号表示,

       例子:select*from daily where  created like '%王%';将daily表中的created列中有‘王’的记录全部查询来。

        可以加and;       

        若是用select * from flow_user where username like '%英%唐%';
          可以查出来包含“英唐”的内容,但是查不出来“唐英”的内容。

      ②_:表示任意单个字符,匹配单个任意字符,他常用来限制表达式的字符长度:

        select * from flow_user where username like '_英_';
        只能找到“王英琨”这样username为三个字且中间一个字是“英”的内容。
        再比如:select * from flow_user where username like '英__';
        只能找到“英雄点”这样username为三个字且第一个字是“英”的内容。

      ③[]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配的对象为他们中的任一个。

        select * from flow_user where username LIKE'[王李张]飞';
        将找出“王飞”“李飞”“张飞”(而不是“张王李飞”)。
        如[]内有一系列字符(01234,abcde之类的)则可略写为“0-4”,“a-e”:
        select * from flow_user where username like '老[0-9]';
        将找出“老1”、“老2”、……、“老9”;
        Oracle 10g以上的版本用法为:  
        select * from flow_user where regexp_like(username, '[张王李]飞');

      ④[^]:表示不再括号所列之内的单个字符。取其之和[]相同,但他所要求匹配对象为指定字符以外的任一个字符。

        select * from flow_user where username LIKE'[^王李张]飞';
        将找出不是“王飞”“李飞”“张飞“的”赵飞“、”吴飞“等。
        注:oracle like 不支持正则,你可以使用支持like的正则regexp_like

      ⑤查询内容包含通配符时:
      由于通配符的缘故,导致查询特殊字符“%”、“_”、“[”的语句无法正常实现,把特殊字符用“[]”括起来便可以正常查询。⑥ ⑦ ⑧ ⑨ ⑩

    (5)AND和OR相关运用(基于一个以上的条件记录进行过滤)

      select*from table where country='cn' and alexa > 50;     从table表中选取国家为‘cn’且alexa排名大于‘50’的所有网站

      select*from websites where country = 'usa' or country = 'cn'   查询websites表中选取国家为‘usa’或者‘cn’的所有用户

      select*from websites where alexa>15 and (country = 'cn' or country = 'USA');

    (6)BY关键字的运用 (用于对结果集进行排序)ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。默认asc

      select*from websites order by alexa  DESC;   从websites表中选取所有网站,并按照‘alexa’排序(如图)

查询数据库里的唯一索引 数据库查询唯一语句_特殊字符

 

 

以上是单列,如图双列:

查询数据库里的唯一索引 数据库查询唯一语句_正则_02