一,高阶语句
1.select:显示表格中一个或数个栏位的所有资料
格式:SELECT "栏位" FROM "表名";
2.where:条件查询
格式:SELECT "栏位" FROM "表名" WHERE "条件";
嵌套/多条件,先执行括号内的,再执行括号外的
3.distinct: 查询不重复记录
格式:select distinct 字段 from 表名﹔
4.AND|OR:且|或
格式:SELECT "栏位" FROM "表名" WHERE "条件1" {[AND|OR] "条件2"}+ ;
5.IN:显示已知的值的资料
格式:SELECT "栏位" FROM "表名" WHERE "栏位" IN ('值1', '值2', ...);
6.BETWEEN:显示两个值范围内的资料
格式:SELECT "栏位" FROM "表名" WHERE "栏位" BETWEEN '值1' AND '值2';
7.ORDER BY:按关键字排序
格式:SELECT "栏位" FROM "表名" [WHERE "条件"] ORDER BY "栏位" [ASC, DESC];
ASC:是按照升序进行排序的,是默认的排序方式。
DESC:是按降序方式进行排序。
8.GROUP BY:对GROUP BY后面的栏位的查询结果进行汇总分组
格式:SELECT column_name, aggregate_function(column_name)FROM table_name WHERE column_name operator value GROUP BY column_name;
例:
select count(name),hobbid from ceshi group by hobbid;
结合where语句:
select count(name),hobbid from ceshi where score>=80 group by hobbid;
8.HAVING:用来过滤由GROUP BY 语句返回的记录表
通常与GROUP BY语句联合使;
格式:SELECT "栏位1", SUM("栏位2") FROM "表格名" GROUP BY "栏位1" HAVING (函数条件);
9.别名:alias
格式:
列别名:SELECT column_name AS alias_name FROM table_name;
表别名:SELECT column_name(s) FROM table_name AS alias_name;
AS之后的别名,主要是为表内的列或者表提供临时的名称,在查询过程中使用,库内实际的表名 或字段名是不会被改变的;
如果表的长度比较长,可以使用 AS 给表设置别名,在查询的过程中直接使用别名;
1、对复杂的表进行查询的时候,别名可以缩短查询语句的长度
2、多表相连查询的时候(通俗易懂、减短sql语句)
10.子查询:连接表格
【最内层的子查询最优先】
子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语 句。
子查询语句是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一 步的查询过滤。
格式:
#外查询
SELECT "栏位1" FROM "表格1" WHERE "栏位2" [比较运算符]
#内查询
(SELECT "栏位1" FROM "表格2" WHERE "条件");
#可以是符号的运算符,例如:=、>、<、>=、<= ;也可以是文字的运算符,例如 LIKE、IN、BETWEEN
11.通配符+like
% :百分号表示零个、一个或多个字符
_ :下划线表示单个字符
例:
'A_Z':所有以A起头,中间任意字符,且以Z为结尾的字符串。例如,'ABZ' 和 'ADZ';
'ABC%': 所有以 'ABC' 起头的字符串。例如,'ABCD' 和 'ABCEF' ;
'%ABC': 所有以 'ABC' 结尾的字符串。例如,'AABC' 和 'EFABC' ;
'%AB%': 所有含有 'AB'这个模式的字符串。例如,'GKASABIKJ' 和 'SHOW AB XLK' ;
'_AB%':所有第二个字母为 'A' 和第三个字母为 'B' 的字符串.
格式:SELECT "栏位" FROM "表名" WHERE "栏位" LIKE {模式};
二,mysql视图
视图:数据库中的虚拟表,这张虚拟表中不包含真实数据,只是做了真实数据的映射;
功能:
简化查询结果集、灵活查询、可以针对不同用户呈现不同结果集、相对有更高的安全性;
本质而言视图是一种select(结果集的呈现);
视图适合于多表连接浏览时使用,不适合增、删、改;
视图和表的区别和联系:
1)联系:
视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。
一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。
2)区别:
视图是已经编译好的sql语句,而表不是;
视图没有实际的物理记录,而表有;
show table status\G
表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在;
表可以及时对它进行修改,但视图只能有创建的语句来修改;
视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合;
从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构;
表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表;
视图的建立和删除只影响视图本身,不影响对应的基本表。(但是更新视图数据,是会影响到基本表的);
修改原表数据,查看视图
三,NULL值,空值
NULL也就是在字段中存储NULL值,空值也就是字段中存储空字符(’’)。
区别
1、空值不占空间,NULL值占空间。当字段不为NULL时,也可以插入空值。
2、当使用 IS NOT NULL 或者 IS NULL 时,只能查出字段中没有不为NULL的或者为 NULL 的,不能查出空值。
3、判断NULL 用IS NULL 或者 is not null,SQL 语句函数中可以使用IFNULL()函数来进行处理,判断空字符用 =’‘或者<>’'来进行处理。
4、在进行count()统计某列的记录数的时候,如果采用的NULL值,会别系统自动忽略掉,但是空值是会进行统计到其中的。
5、MySql中如果某一列中含有NULL,那么包含该列的索引则无效。