最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

數(shù)據(jù)庫(kù)SQL編程

2023-02-06 11:09 作者:神兮兮的喵社長(zhǎng)  | 我要投稿

本文章的所有SQL語(yǔ)句完全兼容MySQL、Oracle、SQL server和PostgreSQL等四種最流行的數(shù)據(jù)庫(kù),實(shí)際上也可以兼容幾乎所有的數(shù)據(jù)庫(kù)。


select語(yǔ)句:選擇顯示的內(nèi)容

select name, salary from employees

select name, salary * 12 from employees

select name, salary, salary + 1000?* 12 from employees

select name, salary, (salary+1000) * 12 as annual_salary from employees

select name, salary, (salary+1000) * 12 annual_salary from employees

select name 姓名, salary 月薪, (salary+1000) * 12 年薪 from employees

select name, salary, salary * 12 "annual salary" from employees


distinct去重復(fù)值

注:deptno是數(shù)據(jù)庫(kù)employees中的一個(gè)屬性

select distinct deptno from employees


where條件過(guò)濾

運(yùn)算符:

=等于

<>或!=不等于

>大于

<小于

<=小于等于

>=大于等于

select name, salary, hire_date from employees where hire_date<"2010-01-01";

select name, salary, deptno from employees where deptno=3;


and, or, not運(yùn)算符

and優(yōu)先級(jí)優(yōu)于or

select * from employees where deptno=3 and salary>10000;

select * from employees where deptno=3 or salary>10000;

select * from employees where deptno=3 or (salary>10000 and hire_date>"2015-01-01");?

select * from employees where not (deptno=3 or salary>=10000);


in語(yǔ)句

select 1 where 1 in (1,2);

select name, empno from employees where empno=3 or empno=5 or empno=6;

select name, empno from employees where empno in (3,5,6);

select name, empno from employees where empno not in (3,5,6);


between語(yǔ)句指定范圍

select name, hire_date from employees?

where hire_date>="2013-01-01" and hire_date<="2013-12-31";

select name, hire_date from employees?

where hire_date between "2013-01-01" and "2013-12-31";

select name, hire_date from employees?

where hire_date not between "2013-01-01" and "2013-12-31";


like語(yǔ)句匹配字符串

select * from employees where name like "李%"; %代表匹配包括空的所有字符串

select * from employees where name like "%衛(wèi)%";

select * from employees where email like "__a%"; 下劃線的數(shù)量代表含有多少個(gè)字母

select * from employees where email like "%@qq.com";


by語(yǔ)句排序

select name, salary from employees order by salary; 從小到大排序

select name, salary from employees order by salary desc; 反向排序

select name, salary*12 annual_salary from employees order by annual_salary;

select name, deptno, salary from employees order by deptno, salary; 按屬性順序排序

select name, deptno, salary from employees order by 2 desc, 3 asc; 用序號(hào)代表屬性名稱


SQL注釋

--單行注釋

/* */多行注釋


null空值

select 1 where null is null;

select 1 where null is not null;

insert employees(empno, name, salary) values(18, "德華", null);插入時(shí)沒有指定值都填充null或者默認(rèn)值


update更新一個(gè)字段或者多個(gè)字段

select? * from employees where empno=3;

update employees set deptno=3 where empno=3;

update employees set deptno=3, salary=salary+1000 where empno=3;

update employees set salary=default where empno=3;


update中使用子查詢

update employees set salary=salary+1000?

where deptno=(select deptno from departments where managerno=2);

update employees set salary=salary+1000

where deptno in (select deptno from departments where managerno=2 or managerno=3);


delete語(yǔ)句刪除記錄

delete from employees where empno=9;

truncate table = delete from table

truncate table employees;


delete語(yǔ)句使用子查詢

delete from employees where depto in? (select deptno from departments where? loc="二樓");


傳統(tǒng)的多表連接方法

select name, dname from employees ,departments?

where employees.deptno=departments.deptno;

select name, dname, employees.deptno from employees, departments??

where employees.deptno=departments.deptno;

select name, dname, e.deptno from employees e, departments? e?

where e.deptno=d.deptno;


inner join內(nèi)連接

select name, dname, e.deptno from employees e inner join departments d on e.deptno=d.deptno;? ? ? join 使用on

select j.*, e.name from job_history j join employees e on j.empno=e.empno;


self join自連接

insert into employees(empno, name) values(20, "李四");

select e1.name, e2.empno, e1.empno from employees e1 join employees e2 on e1.name=e2.name and e1.empno<e2.empno;

select j1.empno, j2.empno, j1.deptno, j1.start_date? comm_start

from job_history j1 join job_history j2 on j1.deptno=j2.deptno and j1.empno!=j2.empno and j1.start_date between j2.start_date and j2.end_date;


outer join外連接

select name, dname, e.deptno from employees e left outer join departments d on e.deptno=d.deptno;

select name, dname, e.deptno from employees e right?outer join departments d on e.deptno=d.deptno;

select name, dname, e.deptno from employees e full?outer join departments d on e.deptno=d.deptno;


cross join 交叉連接

select * from employees cross join departments;

select * from employees cross join departments order by empno;


union將兩個(gè)表或者多個(gè)表集合成一個(gè)集合,需要所有屬性和類型相同

select empno, deptno from employees;

select managerno, deptno from departments;

select empno, deptno from employees union select empno, deptno from departments;

select empno, deptno from employees union all select empno, deptno from departments;


intersect取出兩個(gè)集合共同的部分

select empno, deptno from employees intersect select managernp, deptno from departments;


常用的聚合分組函數(shù)

max()

min()

avg()

sum()

count()

select max(salary) as "max_salary", min(salary) as "min_salary", avg(salary) as "avg_salary", sum(salary) as "sum_salary", count(*) as "num_stuff" from employees;


group by分組

select deptno as "department",?max(salary) as "max_salary", min(salary) as "min_salary", avg(salary) as "avg_salary", sum(salary) as "sum_salary" from employees group by deptno;

select deptno,? avg(salary) from employees group by deptno order by avg(salary);

select deptno, max(salary), min(salary), avg(salary), sum(salary), count(*) from employees? where hire_date="2010-01-01" group by deptno order by avg(salary);????

select deptno, name, avg(salary) from employees group by deptno, name;


having過(guò)濾分組,是針對(duì)group by操作的

select deptno, avg(salary) from employees group by deptno having avg(salary)>3000;

select deptno, avg(salary), count(*)?from employees group by deptno having avg(salary)>3000 and count(*)>1;?


子查詢

select name from employees where hire_date<(select hire_date from employees where name="lisi");


in運(yùn)算符中的子查詢

select deptno from employees where loc="second_floor";

select empno, name from employees where deptno in (2,4);

select empno, name from employees where deptno in (select deptno from employees where loc="second_floor");


子查詢和連接

select empno, name from employees where deptno in (select deptno from employees where loc="second_floor");

select name from employees join departments on employees.deptno=departments.deptno where loc="second_floor";

select a.* from employees a join (select deptno, max(salary) max_sal from employees group by deptno) b on a.deptno=b.deptno and a.salary=b.max_sal;


all關(guān)鍵字,修飾集合

select name from employees where salary>(select max(salary) from employees where deptno=1);

select name from employees where salary> all (select max(salary) from employees where deptno=1);

select * from employees where empno not in (select managerno from departments where managerno is not null);

select * from employees where empno?<> all(select managerno from departments where managerno is not null);


any關(guān)鍵字,符合條件任一元素則成立

select name from employees where salary<(select max(salary) from employees where deptno=2);

select name from employees where salary<any(select salary from employees? where deptno=2);

select name from employees where empno in(select managerno from departments);

select name from employees where empno=any(select managerno from departments);


相關(guān)子查詢

select name, deptno, salary from employees e where salary>(select avg(salary) from empoyees);

select name, deptno, salary from employees e where salary >(select avg(salary) from employees where deptno=e.deptno);


exists運(yùn)算符

select name from employees where empno in (select distinct empno from job_history);

select name from employees where exists(select distinct empno from job_history where employees.empno=job_history.empno);

如果employees中記錄數(shù)大于job_history時(shí),用in效率高

如果employees中記錄數(shù)小于job_history時(shí),用exists效率高


select語(yǔ)句中的子查詢

select name, salary, (select avg(salary) from employees)?"avg_salary" from?employees;


from子句中的子查詢

select * from (select name, salary, deptno, (select avg(salary) from employees where deptno=e.deptno) 部門平均工資 from employees e) e2 order by salary;?


partition by窗口函數(shù)

select name, depto, salary, sum(salary) over (partition by deptno) 部門工資合計(jì) from employees;

注:over是采取分區(qū)

select name, deptno, hiredate

first_value(hiredate) over (partition by deptno order by hiredate) first,

last_value(hiredate) over (partition by deptno oder by hiredate) last

from employees;

select name, deptno, deptno, hiredate,?

lead(hiredate) over (partition by deptno order by hiredate) "lead",

lag(hiredate) over (partition by deptno oder by hiredate) "lag"

from employees;

select name, salary, deptno, rank() over (partition by deptno order by salary 部門內(nèi)序號(hào) from employees;

select name, salary, deptno, row_number() over (partition by deptno order by salary 部門內(nèi)序號(hào) from employees;

select name, salary, deptno, dense_rank() over (partition by deptno order by salary 部門內(nèi)序號(hào) from employees;


case when

select empno, deptno,?

case deptno?

when 1 then "開發(fā)部"

when 2 then "測(cè)試部"

when 3 then "銷售部"

else "其他部門" end deptname

from employees;

update employees set salary=

case

when salary>=20000 then salary*0.95

when salary between 10000 and 20000 then salary *1.1

else salary * 1.2

end;

2023-02-06-11:08

數(shù)據(jù)庫(kù)SQL編程的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
温州市| 厦门市| 阜城县| 高要市| 巴林左旗| 马龙县| 弋阳县| 报价| 卢龙县| 攀枝花市| 奉贤区| 黄陵县| 和田县| 余姚市| 孙吴县| 习水县| 涿鹿县| 固安县| 福建省| 晴隆县| 香河县| 高阳县| 昌乐县| 岚皋县| 马边| 蕲春县| 互助| 兴国县| 确山县| 濮阳县| 自治县| 吴堡县| 屯昌县| 铜梁县| 枣阳市| 扶沟县| 股票| 中卫市| 德阳市| 金乡县| 建德市|