distinct
语句用于返回唯一不同的值。也就是说去掉重复的结果集,并且只显示选择的列
示例:select distinct * from table;
where语句
用于条件语句,优先级从大到小(),not,and ,or
in的用法
示例 :select * from table where a in (1,2,3);
表示查询a=1,2,3时的数据
like的用法 示例:Select * from emp where ename like 'M%';
模糊查询时使用
- % 表示多个字值,_ 下划线表示一个字符;
- M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的。
- %M% : 表示查询包含M的所有内容。
- %M_ : 表示查询以M在倒数第二位的所有内容。
order by 按此序列升序搜索结果集
示例:SELECT * FROM Websites ORDER BY alexa;
根据alexa的序号来排结果集
order by desc 按此列降序搜索结果集
示例: select * from table order by alexa desc;
根据elexa的降序来排结果集desc在表名后面。
insert插入语句
示例: INSERT INTO table_name (column1,column2,column3,...)VALUES (value1,value2,value3,...);
update更新语句
示例: UPDATE table SET alexa='5000', country='USA' WHERE name='myname';
当名字等于myname时,设置alexa等于5000设置country等于usa
千万记住要加where语句,不然你会改变整个表的数据
delet删除语句
示例:DELETE FROM Websites WHERE name='百度' AND country='CN';
根据要求删除那条数据
limit语句
示例:SELECT * FROM Websites LIMIT 2;
选取表中的前两条数据limit表示限制数量
别名AS
示例: SELECT name AS n, country AS c FROM Websites;
列name的别名和列country的别名
示例: SELECT name, CONCAT(url, ', ', alexa, ', ', country) AS site_infoFROM Websites;
把url ,alexa,country合并成一个列,做一个列site-info
join连接 图解
概述:
INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行,mysql不支持 sqlserver支持
图解:
示例: select a.id from table1 right join table2 on a.id = b.id;
on和wehere的区别是,on在生成表时执行的,不考虑满不满足条件,所以right join 和left join用on
如果用where的话,实在生成表后执行,只要不符合条件,就不会查询到,不管左对齐还是右对齐。
UNION 操作符
union英文原意是联合合并,操作符合并两个或多个 SELECT 语句的结果。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句 中的列的顺序必须相同。
union 和union all的区别:是union只查询不带重复的,union all查询可重复的搜索的结果集
示例:select name from table1 union select name from table2;选出两个表中的所有name的结果不带重复
select name from table1 union all select name from table2;选出两个表中的所有的name的结果,结果带重复
带有 WHERE 的 SQL UNION ALL
示例:SELECT country, name FROM Websites WHERE country='CN'
UNION ALL
SELECT country, app_name FROM apps WHERE country='CN' ORDER BY country;
select 列1,列2 from 表1 where 列1=“条件” union all select 列1 列2 from 表2 where 列1=“条件2”;
SELECT INTO 语句
可以从一个表复制信息到另一个表。
MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT
拷贝表 CREATE TABLE 新表 AS SELECT * FROM 旧表
只复制表结构
1. 加了一个where语句
create table table_name_new as select * from table_name_old where 1=2;
2.用like
create table table_name_new like table_name_old;