表查询
1. 查询所有字段 :
1.select * from 表名;(“*”通配符查询所有字段)
2. 查询指定字段 :
1. 查询单个字段 : select 字段名 from 表名;
2. 查询多个字段 : select 字段名1,字段名2 from 表名;
3. 查询指定记录 :
1.select 字段名1,字段名2,...,字段名n from 表名 where 查询条件;
4. 带in关键字的查询 (只要满足条件范围内的一个值即为匹配项) :
1. select * from 表名 where 字段名 in(101,102);
2. select 字段名1,字段名2,...,字段名n from 表名 where 字段名 not in(101,102);
5. 带BETWEEN AND的范围查询 :
1. select 字段名1, 字段名2,...,字段名n FROM 表名 where 字段名 between X and Y;
2. select 字段名1, 字段名2,...,字段名n FROM 表名 where 字段名 not between X and Y;
6. 带LIKE的字符匹配查询 :
1. '%'匹配任意长度的字符(如a%, %a, %a%) : select * from 表名 where 字段名 like '%h%';
2. '_'匹配一个任意字符 : select 字段名1,字段名2,...,字段名n from 表名 where 字段名 like '____y';
7. 查询空值 :
1. select 字段名1, 字段名2,...,字段名n FROM 表名 where 字段名 is null;
2. select * FROM 表名 where 字段名 is not null;
8. 带AND的多条件查询 :
1. SELECT * FROM 表名 WHERE 字段名 IN('101', '102') AND 字段名2 >= 5 AND 字段名3 = 'apple';
9. 带OR的多条件查询 (表示只需要满足其中一个条件的记录即可返回) :
1. SELECT * FROM 表名 WHERE 字段名 = 101 OR 字段名 = 102;
10. 查询结果不重复 :
1.select distinct 字段名 FROM 表名;
11. 对查询结果排序 :
1. 单列排序:select * from 表名 order by 字段名;
2. 多列排序:select * from 表名 order by 字段名1,字段名2;
3. 指定顺序排序:select * from 表名 ORDER BY 字段名1 DESC, 字段名2 asc;
(备注:desc降序,asc升序,默认升序;)
12. 分组查询 :
1. 分组查询是对数据按照某个或多个字段进行分组。
2. [GROUP BY 字段] [HAVING <条件表达式>]
1.创建分组
2.使用HAVING过滤分组
3.在GROUP BY子句中使用WITH ROLLUP
4.多字段分组
5.GROUP BY和ORDER BY一起使用
13. LIMIT :
1. SELECT * FROM table LIMIT 5,10; //检索记录行6-15
2. SELECT * FROM table LIMIT 5; //检索前 5 个记录行
3.SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.
14. 通配符:
1. '%'匹配任意长度的字符(如a%, %a, %a%) : select * from 表名 where 字段名 like '%h%';
2. '_'匹配一个任意字符 : select 字段名1,字段名2,...,字段名n from 表名 where 字段名 like '____y';
3. []指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符:SELECT * FROM table WHERE 字段名 REGEXP '^[GFs]';
4. [^]不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符:SELECT * FROM table WHERE 字段名 REGEXP '^[A-H]';
15. SQL别名:
1. 列别名:SELECT name AS n, country AS c FROM table;
2. 把三个列(url、alexa 和 country)结合在一起,并创建一个名为 "site_info" 的别名:SELECT name, CONCAT(url, ', ', alexa, ', ', country) AS site_info FROM table;
3. 表别名:SELECT w.name, w.url, a.count, a.date FROM Websites AS w, access_log AS a WHERE a.site_id=w.id and w.name="菜鸟教程";
16. SQL连接:
1.左连接:left join
select * from student left join course on student.ID=course.ID
2.右连接:right join
select * from student right join course on student.ID=course.ID
3.完全外连接: full join
select * from student full join course on student.ID=course.ID
4.内连接:inner join(join)
select * from student join course on student.ID=course.ID
INSERT INTO 语句
1. 第一种形式无需指定要插入数据的列名,只需提供被插入的值即可 :
1. INSERT INTO table_name
VALUES (value1,value2,value3,...);
2. 第二种形式需要指定列名及被插入的值 :
1. INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
UPDATE 语句
1. 更新表中的记录 :
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
DELETE 语句
1. 删除某行记录 :
1. DELETE FROM table_name
WHERE some_column=some_value;
2. 删除全部记录 :
2. DELETE FROM table_name;
DELETE * FROM table_name;