<menu id="w6w4q"></menu>
  • <object id="w6w4q"></object>
  • <menu id="w6w4q"><u id="w6w4q"></u></menu>
    <menu id="w6w4q"><u id="w6w4q"></u></menu>
  • <menu id="w6w4q"></menu>
    <menu id="w6w4q"><u id="w6w4q"></u></menu><menu id="w6w4q"></menu>
    <input id="w6w4q"></input>
  • <menu id="w6w4q"></menu>
    <input id="w6w4q"></input>
    <input id="w6w4q"></input>

    常用sql语句

    一、简单查询语句

    1. 查看表结构

    SQL>DESC emp;

    2. 查询所有列

    SQL>SELECT * FROM emp;

    3. 查询指定列

    SQL>SELECT empmo, ename, mgr FROM emp;

    SQL>SELECT DISTINCT mgr FROM emp; 只显示结果不同的项

    4. 查询指定行

    SQL>SELECT * FROM emp WHERE job='CLERK';

    5. 使用算术表达式

    SQL>SELECT ename, sal*13+nvl(comm,0)  FROM emp; 

    nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm; comm中无值,则nvl(comm,1)=0。

    SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal为别名,可按别名排序)

    SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82';

    6. 使用like操作符(%,_)

    %表示一个或多个字符,_表示一个字符,[charlist]表示字符列中的任何单一字符,[^charlist]或者[!charlist]不在字符列中的任何单一字符。

    SQL>SELECT * FROM emp WHERE ename like 'S__T%';

    7. 在where条件中使用In

    SQL>SELECT * FROM emp WHERE job IN ('CLERK','ANALYST');

    8. 查询字段内容为空/非空的语句

    SQL>SELECT * FROM emp WHERE mgr IS/IS NOT NULL; 

    9. 使用逻辑操作符号

    SQL>SELECT * FROM emp WHERE (sal>500 or job='MANAGE') and ename like 'J%';

    10. 将查询结果按字段的值进行排序

    SQL>SELECT * FROM emp ORDER BY deptno, sal DESC; (按部门升序,并按薪酬降序)

    二、复杂查询

    1. 数据分组(max,min,avg,sum,count)

    SQL>SELECT MAX(sal),MIN(age),AVG(sal),SUM(sal) from emp;

    SQL>SELECT * FROM emp where sal=(SELECT MAX(sal) from emp));

    SQL>SELEC COUNT(*) FROM emp;

    2. group by(用于对查询结果的分组统计) 和 having子句(用于限制分组显示结果)

    SQL>SELECT deptno,MAX(sal),AVG(sal) FROM emp GROUP BY deptno;

    SQL>SELECT deptno, job, AVG(sal),MIN(sal) FROM emp group by deptno,job having AVG(sal)<2000;

    对于数据分组的总结:

    a. 分组函数只能出现在选择列表、having、order by子句中(不能出现在where中)

    b. 如果select语句中同时包含有group by, having, order by,那么它们的顺序是group by, having, order by。

    c. 在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须出现在group by子句中,否则就是会出错。

    使用group by不是使用having的前提条件。

    3. 多表查询

    SQL>SELECT e.name,e.sal,d.dname FROM emp e, dept d WHERE e.deptno=d.deptno order by d.deptno;

    SQL>SELECT e.ename,e.sal,s.grade FROM emp e,salgrade s WHER e.sal BETWEEN s.losal AND s.hisal;

    4. 自连接(指同一张表的连接查询)

    SQL>SELECT er.ename, ee.ename mgr_name from emp er, emp ee where er.mgr=ee.empno;

    5. 子查询(嵌入到其他sql语句中的select语句,也叫嵌套查询)

    5.1 单行子查询

    SQL>SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM emp where ename='SMITH');查询表中与smith同部门的人员名字。因为返回结果只有一行,所以用“=”连接子查询语句

    5.2 多行子查询

    SQL>SELECT ename,job,sal,deptno from emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno=10);查询表中与部门号为10的工作相同的员工的姓名、工作、薪水、部门号。因为返回结果有多行,所以用“IN”连接子查询语句。

    in与exists的区别: exists() 后面的子查询被称做相关子查询,它是不返回列表的值的。只是返回一个ture或false的结果,其运行方式是先运行主查询一次,再去子查询里查询与其对 应的结果。如果是ture则输出,反之则不输出。再根据主查询中的每一行去子查询里去查询。in()后面的子查询,是返回结果集的,换句话说执行次序和 exists()不一样。子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表去。符合要求的输出,反之则不输出。

    5.3 使用ALL

    SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ALL (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MAX(sal) FROM emp WHERE deptno=30);查询工资比部门号为30号的所有员工工资都高的员工的姓名、薪水和部门号。以上两个语句在功能上是一样的,但执行效率上,函数会高 得多。

    5.4 使用ANY

    SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ANY (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MIN(sal) FROM emp WHERE deptno=30);查询工资比部门号为30号的任意一个员工工资高(只要比某一员工工资高即可)的员工的姓名、薪水和部门号。以上两个语句在功能上是 一样的,但执行效率上,函数会高得多。

    5.5 多列子查询

    SQL>SELECT * FROM emp WHERE (job, deptno)=(SELECT job, deptno FROM emp WHERE ename='SMITH');

    5.6 在from子句中使用子查询

     SQL>SELECT emp.deptno,emp.ename,emp.sal,t_avgsal.avgsal FROM emp,(SELECT emp.deptno,avg(emp.sal) avgsal FROM emp GROUP BY emp.deptno) t_avgsal where emp.deptno=t_avgsal.deptno AND emp.sal>t_avgsal.avgsal ORDER BY emp.deptno;

    5.7 分页查询

    数据库的每行数据都有一个对应的行号,称为rownum.

    SQL>SELECT a2.* FROM (SELECT a1.*, ROWNUM rn FROM (SELECT * FROM emp ORDER BY sal) a1 WHERE ROWNUM<=10) a2 WHERE rn>=6;

    指定查询列、查询结果排序等,都只需要修改最里层的子查询即可。

    5.8 用查询结果创建新表

    SQL>CREATE TABLE mytable (id,name,sal,job,deptno) AS SELECT empno,ename,sal,job,deptno FROM emp;

    5.9 合并查询(union 并集, intersect 交集, union all 并集+交集, minus差集)

    SQL>SELECT ename, sal, job FROM emp WHERE sal>2500 UNION(INTERSECT/UNION ALL/MINUS) SELECT ename, sal, job FROM emp WHERE job='MANAGER';

    合并查询的执行效率远高于and,or等逻辑查询。

     5.10 使用子查询插入数据

    SQL>CREATE TABLE myEmp(empID number(4), name varchar2(20), sal number(6), job varchar2(10), dept number(2)); 先建一张空表;

    SQL>INSERT INTO myEmp(empID, name, sal, job, dept) SELECT empno, ename, sal, job, deptno FROM emp WHERE deptno=10; 再将emp表中部门号为10的数据插入到新表myEmp中,实现数据的批量查询。

    5.11 使用了查询更新表中的数据

    SQL>UPDATE emp SET(job, sal, comm)=(SELECT job, sal, comm FROM emp where ename='SMITH') WHERE ename='SCOTT';

    相关文章
    相关标签/搜索
    三期内必开一期特四肖白小姐资料 一肖中特2020年香港马会最快报码开奖结果直播历史记录免费资料网 庆云县| 通城县| 泰来县| 西吉县| 武邑县| 广饶县| 定安县| 东莞市| 蒲江县| 保定市| 瑞安市| 南陵县| 碌曲县| 邹城市| 沙湾县| 广水市| 温州市| 乌什县| 拉萨市| 陵川县| 察雅县| 黄大仙区| 云和县| 中山市| 梧州市| 麻阳| 江都市| 凤城市| 鄂托克前旗| 双鸭山市| 房产| 锦屏县| 宜春市| 登封市| 永城市| 台中县| 邮箱| 喀什市| 探索| 剑阁县| 松溪县| 景宁| 三原县| 门源| 南丹县| 宝坻区| 宁德市| 法库县| 深州市| 丹阳市| 鄂托克前旗| 临泉县| 南投县| 延安市| 永定县| 南皮县| 外汇| 霞浦县| 桂东县| 吉水县| 灵川县| 武夷山市| 南投县| 神木县| 石楼县| 普兰店市| 东海县| 疏附县| 来安县| 临洮县| 朝阳县| 红安县| 娄底市| 墨脱县| 陇川县| 郁南县| 中山市| 科技| 改则县| 梁平县| 天台县| 余庆县| 桐城市| 财经| 从江县| 连南| 鹰潭市| 定远县| 本溪市| 千阳县| 高唐县| 龙川县| 郁南县| 无极县| 通许县| 勐海县| 岚皋县| 抚松县| 镇平县| 淮滨县| 丹寨县| 申扎县| 雷波县| 余庆县| 铁岭县| 花莲市| 安岳县| 安远县| 尖扎县| 泗水县| 河北省| 义乌市| 中方县| 皋兰县| 阿尔山市| 天全县| 美姑县| 六安市| 朝阳区| 黔南| 昌都县| 白城市| 平南县| 丁青县| 东乌| 南昌市| 西充县| 聂拉木县| 吴桥县| 三穗县| 辰溪县| 玉山县| 定西市| 恩平市| 和龙市| 桂平市| 太谷县| 苏尼特右旗| 榕江县| 鹿泉市| 镶黄旗| 亳州市| 诸城市| 青州市| 阿拉善左旗| 南汇区| 涞源县| 乌兰浩特市| 宝坻区| 上犹县| 阳山县| 祥云县| 固原市| 巴彦县| 景德镇市| 苗栗市| 延边| 托克托县| 泗水县| 文安县| 白玉县| 辽阳市| 韶关市| 元朗区| 乐清市| 营山县| 磴口县| 临汾市| 德惠市| 交城县| 灵武市| 泌阳县| 丹江口市| 璧山县| 玉龙| 黄大仙区| 台安县| 潼关县| 淮安市| 衡阳市| 屯留县| 交口县| 克东县| 喀喇沁旗| 彭山县| 仁寿县| 虞城县| 乌兰县| 武川县| 中超| 河北省| 连城县| 广汉市| 蓝田县| 新源县| 绥阳县| 夏邑县| 虎林市| 博乐市| 加查县| 清新县| 五常市| 荔波县| 阿克| 松原市| 理塘县| 克什克腾旗| 伊宁市| 仙居县| 五大连池市| 康乐县| 保山市| 定安县| 华蓥市| 玉环县| 武山县| 嘉鱼县| 深州市| 焦作市| 贡觉县| 乌鲁木齐市| 临海市| 苍山县| 仲巴县| 扎赉特旗| 定兴县| 丰镇市| 明星| 汨罗市| 辉县市| 吉林市| 镇远县| 崇仁县| 陕西省| 宁陵县| 邯郸县| 漳平市| 陆丰市| 当雄县| 湾仔区| 塔城市| 甘孜县| 夹江县| 新野县| 嘉定区| 麟游县| 龙游县| 县级市| 灵宝市| 芒康县| 凉山| 图木舒克市| 黔江区| 宾川县| 错那县| 伊宁县| 若尔盖县| 宣威市| 淅川县| 门头沟区| 桑植县| 鄂尔多斯市| 鄂温| 新乐市| 太湖县| 小金县| 永仁县| 宁河县| 天津市| 沿河| 新余市| 辽阳市| 岢岚县| 长治县| 榆中县| 勐海县| 嘉荫县| 台中市| 乌拉特中旗| 景东| 师宗县| 曲周县| 舒兰市| 双鸭山市| 赣榆县| 秦皇岛市| 称多县| 荆州市| 宾阳县| 岱山县| 深水埗区| 安福县| 香港| 日喀则市| 阿克陶县| 石嘴山市| 通海县| 墨脱县| 遂宁市| 盐边县| 淄博市| 苏尼特左旗| 东台市| 玉门市| 安化县| 肃宁县| 九江县| 雷山县| 玛纳斯县| 太仆寺旗| 建阳市| 西充县| 深水埗区| 孟连| 和政县| 古田县| 容城县| 周宁县| 文化| 仙居县| 独山县| 遂昌县| 阳东县| 长汀县| 隆安县| 古丈县| 保山市| 玉田县| 正镶白旗| 务川| 胶州市| 吉水县| 杂多县| 句容市| 盐池县| 南召县| 淳化县| 汉沽区| 舒兰市| 依兰县| 开封市| 长沙县| 信阳市| 盐山县| 正安县| 巫山县| 郑州市| 朝阳市| 乐至县| 大宁县| 鄄城县| 临泽县| 普兰店市| 广丰县| 景洪市| 桃园市| 宾川县| 略阳县| 巧家县| 双流县| 广灵县| 贵南县| 自治县| 肇源县| 普格县| 林口县| 香格里拉县| 祁东县| 库尔勒市| 额济纳旗| 泰州市| 修武县| 兴山县| 荥阳市| 江都市| 大城县| 舟曲县| 罗田县| 星座| 黄梅县| 西盟| 大宁县| 锡林浩特市| 镇安县| 惠安县| 大渡口区| 凭祥市| 万宁市| 莲花县| 绥中县| 大理市| 汝阳县| 澜沧| 乐安县| 宁晋县| 来宾市| 满城县| 兴化市| 曲阜市| 定州市| 瓦房店市| 根河市| 赣州市| 铁力市| 陇西县| 沂源县| 古浪县| 义马市| 赞皇县| 贺州市| 科尔| 双城市| 雅安市| 晋州市| 白城市| 贞丰县| 迁安市| 卢龙县| 肃南| 公主岭市| 五莲县| 泰顺县| 民丰县| 南宁市| 淮北市| 牙克石市| 彝良县| 台安县| 黄冈市| 洛浦县| 禄劝| 措勤县| 电白县| 宁陕县| 邛崃市| 蓬安县| 宜春市| 环江| 于田县| 田林县| 固原市| 寿阳县| 蓝山县| 米林县| 泗阳县| 双桥区| 正宁县| 威信县| 渭南市| 尉犁县| 五峰| 白水县| 绥阳县| 永兴县| 磴口县| 泸水县| 宣化县| 信丰县| 辰溪县| 高陵县| 运城市| 新巴尔虎左旗| 陈巴尔虎旗| 斗六市| 西峡县| 黄石市| 安乡县| 闸北区| 克什克腾旗| 安泽县| 高雄县| 花垣县| 临湘市| 得荣县| 双柏县| 富民县| 龙门县| 威信县| 思南县| 仁怀市| 封丘县| 永康市| 阿合奇县| 泸水县| 来安县| 澎湖县| 缙云县| 绥江县| 沙田区| 九江县| 武穴市| 邛崃市| 丹巴县| 合川市| 肥城市| 广丰县| 吉安市| 虎林市| 太仓市| 丰顺县| 锡林浩特市| 竹北市| 瑞昌市| 泾阳县| 静乐县| 建瓯市| 湘乡市| 广元市| 永寿县| 房山区| 东港市| 秦皇岛市| 磴口县| 长阳| 永胜县| 江油市| 英山县| 嘉荫县| 浪卡子县| 上思县| 呼和浩特市| 盐津县| 手机| 石楼县| 大余县| 佛山市| 和硕县| 石林| 河源市| 安岳县| 南阳市| 民县| 杂多县| 莱州市| 民和| 宜宾县| 阿鲁科尔沁旗| 巴彦县| 贵港市| 稷山县| 汉川市| 城口县| 剑河县| 泾川县| 玛纳斯县| 东乡| 武宣县| 景泰县| 资中县| 垦利县| 张家港市| 汤原县| 阿瓦提县| 弋阳县| 理塘县| 库尔勒市| 佛山市| 綦江县| 天峻县| 北京市| 鄂伦春自治旗| 焦作市| 东阳市| 鄂伦春自治旗| 南陵县| 霍州市| 道真| 兴安县| 南澳县| 庆元县| 平昌县| 桦南县| 安乡县| 武功县| 哈密市| 黑龙江省| 昆明市| 泾阳县| 罗田县| 防城港市| 武宣县| 兰溪市| 庆安县| 玉田县| 化隆| 靖州| 高青县| 曲松县| 弋阳县| 礼泉县| 晋州市| 万安县| 武汉市| 威信县| 高台县| 大姚县| 泸西县| 荥经县| 巢湖市| 偏关县| 太保市| 茂名市| 井冈山市| 五大连池市| 怀仁县| 江川县| 望江县| 高州市| 雅安市| 民丰县| 观塘区| 屏山县| 英德市| 从化市| 邹城市| http://3g.jx1870clipv.fun http://jx1870auctionv.fun http://www.jx1870directv.fun http://m.jx1870colorv.fun http://wap.jx1870backgroundv.fun http://www.jx1870coverv.fun http://jx1870attendv.fun http://m.jx1870createv.fun http://wap.jx1870bondv.fun http://3g.jx1870contrastv.fun http://3g.jx1870connectv.fun http://m.jx1870advantagev.fun http://wap.jx1870cottonv.fun http://www.jx1870consentv.fun http://3g.jx1870answerv.fun http://wap.jx1870continuev.fun http://3g.jx1870adventurev.fun http://wap.jx1870describev.fun