详细记录整个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’排序(如图)
以上是单列,如图双列: