1、ORDER BY子句位于SELECT语句的末尾,它允许指定按照一个列或者多个列进行排序,
还可以指定排序方式是升序(从小到大排列,ASC)还是降序(从大到小排列,DESC)
2、按照年龄升序排序所有员工信息的列表:SELECT * FROM T_Employees ORDER BY
Age ASC
3、按照年龄从大到小排序,如果年龄相同则按照工资从大到小排序 :SELECT * FROM
T_Employees ORDER BY Age DESC,Salary DESC
4、RDER BY子句要放到WHERE子句之后 :SELECT * FROM T_Employees WHERE Age>23
ORDER BY Age DESC,Salary DESC
通配符过滤使用LIKE 。
1、单字符匹配的通配符为半角下划线“_”,它匹配单个出现的字符。以任意字符开头,
剩余部分为“erry” :SELECT * FROM T_Employees WHERE Name LIKE '_erry'
2、多字符匹配的通配符为半角百分号“%”,它匹配任意次数(零或多个)出现的任意字
符。 “k%”匹配以“k”开头、任意长度的字符串。检索姓名中包含字母“n”的员工信
息 :SELECT * FROM T_Employees WHERE Name LIKE '%n%'
3、Like性能较差,很容易造成全表扫描,谨慎使用。后面会讲数据库优化(索引等),项
目中做搜索用全文检索。
1、数据库中,一个列如果没有指定值,那么值就为null,数据库中的null表示“不知道
”,而不是表示没有。因此select null+1结果是null,因为“不知道”加1的结果还是
“不知道”。
2、SELECT * FROM T_Employees WHERE NAME=null ; SELECT * FROM T_Employees
WHERE NAME!=null ;
都没有任何返回结果,因为数据库也“不知道”。
3、Select Name+"a" FROM T_Employees
4、SQL中使用is null、is not null来进行空值判断:
SELECT * FROM T_Employees WHERE NAME is null ;
SELECT * FROM T_Employees WHERE NAME is not null ;
1、LIMIT关键字用来限制返回的结果集, LIMIT放在SELECT语句的最后位置,语法
为“LIMIT 首行行号,要返回的结果集的最大数目” 。比如下面的SQL语句将返回Name
不为空的、按照工资降序排列的从第二行开始(行号从0开始)的最多五条记录:
SELECT * FROM T_Employees
where Name is not null
ORDER BY Salary DESC
LIMIT 2,5
2、limit一定要放到所有的语句的最后。
1、数据分组用来将数据分为多个逻辑组,从而可以对每个组进行聚合运算。SQL语句中使
用GROUP BY子句进行分组,使用方式为“GROUP BY 分组字段”。分组语句一般和聚合
函数一起使用,GROUP BY子句负责将数据分成逻辑组,而聚合函数则对每一个组进行统计
计算。
2、查看公司员工有哪些年龄段的:
SELECT Age FROM T_Employees GROUP BY Age
将Age相同的数据行放到一组,分组后的数据可以看作一个临时的结果集,而SELECT Age
语句则取出每组的Age字段的值,这样我们就得到上表的员工年龄段表了。
3、如果SELECT语句有WHERE子句,则GROUP BY子句必须放到WHERE语句的之后。
4、GROUP BY子句将检索结果划分为多个组,每个组是所有记录的一个子集。上面的SQL
例子在执行的时候数据库系统将数据分成了下面的分组:
5、
分组后就可以对组内的数据采用聚合函数进行统计了:
1)计算每个分组中的员工平均工资
SELECT Age,AVG(Salary) FROM T_Employees
GROUP BY Age
2)查看每个年龄段的员工的人数:
SELECT Age,COUNT(*) FROM T_Employees
GROUP BY Age
1、如果删除/更新T_Customers一行记录,那么就可能会导致T_Orders中存在CustomerId
为非法值的数据,使得程序逻辑错误。一般不会更新主键Id的值,所以谈外键约束的时候
只谈“删除T_Customers时”。
2、外键约束:当删除T_Customers中一条数据的时候,如何处理T_Orders等存在指向
T_Customers外键的行。外键约束建立在外键字段***Id的表上(t_orders)。
3、建外键约束的方法:新建或者修改表的时候“外键”→“添加外键”。名:自动命名
即可;栏位名:CustomerId;参考表:t_customers;外栏位名:Id;删除时、更新时:
一般默认RESTRICT(CASCADE:删除T_Customers一行时把它的订单也删除了;SET NULL:
删除T_Customers一行时把它的订单CustomerId设置为NULL;NO ACTION/RESTRICT:拒
绝删除)。
4、有的公司不习惯建外键,而是通过程序进行数据合法性控制,对于初学者先不建议这
样,都把外键加上。
还可以指定排序方式是升序(从小到大排列,ASC)还是降序(从大到小排列,DESC)
2、按照年龄升序排序所有员工信息的列表:SELECT * FROM T_Employees ORDER BY
Age ASC
3、按照年龄从大到小排序,如果年龄相同则按照工资从大到小排序 :SELECT * FROM
T_Employees ORDER BY Age DESC,Salary DESC
4、RDER BY子句要放到WHERE子句之后 :SELECT * FROM T_Employees WHERE Age>23
ORDER BY Age DESC,Salary DESC
通配符过滤使用LIKE 。
1、单字符匹配的通配符为半角下划线“_”,它匹配单个出现的字符。以任意字符开头,
剩余部分为“erry” :SELECT * FROM T_Employees WHERE Name LIKE '_erry'
2、多字符匹配的通配符为半角百分号“%”,它匹配任意次数(零或多个)出现的任意字
符。 “k%”匹配以“k”开头、任意长度的字符串。检索姓名中包含字母“n”的员工信
息 :SELECT * FROM T_Employees WHERE Name LIKE '%n%'
3、Like性能较差,很容易造成全表扫描,谨慎使用。后面会讲数据库优化(索引等),项
目中做搜索用全文检索。
1、数据库中,一个列如果没有指定值,那么值就为null,数据库中的null表示“不知道
”,而不是表示没有。因此select null+1结果是null,因为“不知道”加1的结果还是
“不知道”。
2、SELECT * FROM T_Employees WHERE NAME=null ; SELECT * FROM T_Employees
WHERE NAME!=null ;
都没有任何返回结果,因为数据库也“不知道”。
3、Select Name+"a" FROM T_Employees
4、SQL中使用is null、is not null来进行空值判断:
SELECT * FROM T_Employees WHERE NAME is null ;
SELECT * FROM T_Employees WHERE NAME is not null ;
1、LIMIT关键字用来限制返回的结果集, LIMIT放在SELECT语句的最后位置,语法
为“LIMIT 首行行号,要返回的结果集的最大数目” 。比如下面的SQL语句将返回Name
不为空的、按照工资降序排列的从第二行开始(行号从0开始)的最多五条记录:
SELECT * FROM T_Employees
where Name is not null
ORDER BY Salary DESC
LIMIT 2,5
2、limit一定要放到所有的语句的最后。
1、数据分组用来将数据分为多个逻辑组,从而可以对每个组进行聚合运算。SQL语句中使
用GROUP BY子句进行分组,使用方式为“GROUP BY 分组字段”。分组语句一般和聚合
函数一起使用,GROUP BY子句负责将数据分成逻辑组,而聚合函数则对每一个组进行统计
计算。
2、查看公司员工有哪些年龄段的:
SELECT Age FROM T_Employees GROUP BY Age
将Age相同的数据行放到一组,分组后的数据可以看作一个临时的结果集,而SELECT Age
语句则取出每组的Age字段的值,这样我们就得到上表的员工年龄段表了。
3、如果SELECT语句有WHERE子句,则GROUP BY子句必须放到WHERE语句的之后。
4、GROUP BY子句将检索结果划分为多个组,每个组是所有记录的一个子集。上面的SQL
例子在执行的时候数据库系统将数据分成了下面的分组:
5、
分组后就可以对组内的数据采用聚合函数进行统计了:
1)计算每个分组中的员工平均工资
SELECT Age,AVG(Salary) FROM T_Employees
GROUP BY Age
2)查看每个年龄段的员工的人数:
SELECT Age,COUNT(*) FROM T_Employees
GROUP BY Age
1、如果删除/更新T_Customers一行记录,那么就可能会导致T_Orders中存在CustomerId
为非法值的数据,使得程序逻辑错误。一般不会更新主键Id的值,所以谈外键约束的时候
只谈“删除T_Customers时”。
2、外键约束:当删除T_Customers中一条数据的时候,如何处理T_Orders等存在指向
T_Customers外键的行。外键约束建立在外键字段***Id的表上(t_orders)。
3、建外键约束的方法:新建或者修改表的时候“外键”→“添加外键”。名:自动命名
即可;栏位名:CustomerId;参考表:t_customers;外栏位名:Id;删除时、更新时:
一般默认RESTRICT(CASCADE:删除T_Customers一行时把它的订单也删除了;SET NULL:
删除T_Customers一行时把它的订单CustomerId设置为NULL;NO ACTION/RESTRICT:拒
绝删除)。
4、有的公司不习惯建外键,而是通过程序进行数据合法性控制,对于初学者先不建议这
样,都把外键加上。