排序和条件限制

※ order by

select [distinct] {column_name…|*|exp|alias_name}
(exp表达式,alias_name别名)
from table_name
order by column_name 排序的标记…

执行顺序:from->select->order by
order by 优先级最低,总是最后执行
※ 排序的标记:
ASC 升序(可省略,默认)
DESC 降序

例:查询员工的名字和薪水,薪水以升序排序
select last_name,salary
from s_emp
order by salary;
select last_name,salary
from s_emp
order by salary asc;
注意:排序的列可以不出现在select后面
select last_name
from s_emp
order by salary desc;

※ order by后面也可以直接跟角标
该角标是select后面排序列的位置,角标从1开始。

select last_name,salary
from s_emp
order by 2;

※ order by 后面可以跟多个排序规则
先按照第一个排,第一个排相等,在按照第二个排序

select id,last_name,salary
from s_emp
order by last_name desc,3 asc;
如果排序的列出现null值,你可以把null当作是无穷大
select id,last_name,commission_pct
from s_emp 
order by commission_pct;

注意:排序的时候,升序null值在后面,降序null值在前面,
建议:排序的时候对有null的值排序,可以追加其他排序列

※ 条件限制语句

select [distinct] {column_name…|*|exp|alias_name}
from table_name
while 条件
order by column_name 排序的标记…

执行顺序:from->where->select->order by
注意:from查询的是整张表的内容
where是对from查询的整张表一行一行的筛选,符合的留下,不符合的忽略(效率低,能不写where就不写)

※ 逻辑比较符(比较数值)“= ,< ,> ,<= ,>=”

查询部门编号为41号的部门信息,

select   id,name,region_id
from s_dept
where id=41;

查询在41号部门的员工信息

select id,last_name,salary,dept_id
from s_emp
where dept_id=41

查询名字为Patel的用户信息

select id,last_name,salary,dept_id
from s_emp
where last_name=‘Patel’

查询入职时间大于等于1990年1月1日的员工信息

select id,last_name,salary,dept_id
from s_emp
where start_date>=’01-1月-90’;

注意:字符串和时间类型的值用单引号引起来,字符串值表示的时候区分大小写
中文环境的时间格式是dd-Mon-yy
英文环境dd-mm-yy

※ SQL比较符

※ 1.在某个范围之内
between and(闭区间[x,y])
查询员工工资在795到1450中间的员工信息

select id,last_name,salary
from s_emp
where salary between 795 and 1450;

not between and(开区间(x,y))
查询员工工资不在795到1450中间的员工信息

select id,last_name,salary
from s_emp
where salary not between 795 and 1450;

※ 2.在某个范畴
in(list)
查询部门为41或43号部门的员工信息

select id,last_name,salary
from s_emp
where dept_id in(41,43);

不在某一范畴
not in
查询除了41和43好部门的其他所有部门的员工信息

select id,last_name,salary
from s_emp
where dept_id not in(41,43);

※ 3.“和”与“或”
and并且(前后两个条件都要成立)
查询部门在41部门并薪水在900以上的员工信息

select dept_id,last_name,salary
from s_emp
where dept_id=41 and salary>=900;

or 或者(前后两个条件只要成立一个就行)
查询部门为41或43号部门的员工信息

select id,last_name,salary
from s_emp
where dept_id=41 or dept_id=43;

注意:and和or并存的时候
and的优先级高于or
查询部门在41部门并薪水在900以上的员工信息或者43部门的员工信息

select dept_id,last_name,salary
from s_emp
where dept_id=41 and salary>=900 or dept_id=43;

※ 4.不相等
“<> , != , ^=”
查询除了41和43好部门的其他所有部门的员工信息

select id,last_name,salary
from s_emp
where dept_id!=41 and dept_id!=43;

※ like 模糊查询,模糊匹配

_ 表示单个字符的占位
% 表示匹配0到多个字符
查询用户名以P开头的所有用户信息

select id,last_name,salary
from s_emp
where last_name like ’P%’;

查询用户名第二个字母是m的员工信息

select id,last_name,salary
from s_emp
where last_name like ’_m%’;

※ 查询名字以_开头的员工信息
(插入一个_开头的员工)

insert into s_emp(id,last_name) 
values(26,’_briup’);
commit;(将缓存中的数据存入数据库)
select id,last_name
from s_emp
where last_name like ’\_%’ escape‘\’;

注:转义可以是任意的符号,必须escape单词限定的都可以作为转义

※ is (not)null

is null(判断为空)
查询没有薪水的员工信息

select id,last_name
from s_emp
where salary is null;

is not null(判断不为空)
查询有薪水的员工信息

select id,last_name
from s_emp
where salary is not null;

查询有提成的员工信息

select id,last_name,commossion_pctZX
from s_emp
where commission_pct is not null;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: NSGA-II(Non-dominated Sorting Genetic Algorithm II)是一种多目标遗传算法,用于解决具有多个目标的优化问题。在使用NSGA-II时,我们可以通过添加限制条件来进一步约束目标函数的搜索空间。 限制条件可以放在两个位置:个体生成和目标函数评估。 首先,在个体生成过程中,我们可以通过限制条件来生成满足特定要求的个体。例如,如果我们的优化问题具有一些约束条件,例如线性不等式约束或等式约束,我们可以在生成个体的过程中确保所生成的个体满足这些约束条件。这可以通过基因编码和解码的过程中进行实现,从而排除不满足约束条件的个体。 其次,限制条件还可以应用于目标函数的评估过程中。在每次评估个体的目标函数值时,我们可以将限制条件纳入评估过程中。例如,如果我们的优化问题需要最小化一个目标函数,但有一个约束条件必须满足,我们可以在评估目标函数值之前先检查约束条件是否被满足。如果约束条件不满足,我们可以将该个体的目标函数值设置为一个较大的值,以将其排除在搜索空间之外。 通过在个体生成和目标函数评估过程中添加限制条件,NSGA-II可以更加准确地搜索到满足约束条件的优秀解。因此,在应用NSGA-II解决具有限制条件的多目标优化问题时,需要仔细地考虑限制条件的添加和处理方式。 ### 回答2: NSGA-II(快速非支配排序遗传算法II)是一种多目标优化算法,它在遗传算法的基础上引入了非支配排序和拥挤距离的概念,以解决多目标优化问题。 在NSGA-II中,限制条件的放置位置主要有两个方面: 1. 在个体生成和遗传操作中的限制条件:在个体生成和遗传操作过程中,需要考虑限制条件对个体的影响。对于需要满足的限制条件,可以在个体生成的过程中进行限制条件的检查,并筛选掉不满足限制条件的个体。在交叉和变异操作中,也需要考虑限制条件的约束,确保子代个体仍然符合限制条件的要求。 2. 在个体评价和排序中的限制条件:在NSGA-II中,使用非支配排序和拥挤距离来对生成的个体进行排序。在个体评价和排序过程中,可以引入限制条件来对个体进行评价和排序。一种常见的方法是引入罚函数(penalty function),将限制条件的违反程度作为罚项加入到目标函数中,从而对个体进行评价排序。这样,具有更好的目标函数值且满足更多限制条件的个体将具有较高的排序和选择概率。 总的来说,NSGA-II中的限制条件需要在个体生成、遗传操作、个体评价和排序的各个环节进行考虑和处理,以确保生成的个体符合问题的限制条件并获得较好的多目标优化效果。 ### 回答3: 在NSGA-II (Nondominated Sorting Genetic Algorithm II) 中,限制条件可以放置在问题的目标函数中,也可以单独作为一个约束函数来处理。 将限制条件放在目标函数中的方法是通过将违反限制条件的解的目标函数值调整为一个较大的值,以确保这些解不会成为非支配解。这样一来,在选择和保留解的过程中,这些不符合限制条件的解将不会被选中或保留。 另一种方法是将限制条件作为独立的约束函数处理。这需要将限制条件转化为约束表达式,并在优化过程中对其进行处理。可以使用罚函数或修剪函数的方法来处理约束条件。罚函数方法是通过增加一个罚项来惩罚违反限制条件的解,让目标函数考虑这些违反。修剪函数方法则是通过在规划中剪枝掉违反限制条件的解,以确保在解集中只保留合法的解。 在应用NSGA-II解决具体问题时,根据问题的特点和限制条件的形式,选择适合的限制条件处理方法非常重要。这需要根据问题的特点和限制条件的形式,选择适合的限制条件处理方法。考虑到限制条件的类型和问题的复杂性,NSGA-II通常可以有效地解决带有多个限制条件的多目标优化问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值