zoukankan      html  css  js  c++  java
  • JAVA入门到精通-第59讲-sqlServer基本查询

    sqlServer基本查询
    dept/emp表:
    MGR:直接上级的编号
    HIREDATE:入职日期
    COMM:奖金
    DEPTNO:部门编号
     
    创建dept表
     
    创建emp表
     deptno 是外键,foreign key refercnce dept (deptno)
     reference 引用;
     
    针对外键:
     dept:
    emp:
     
     select查询:
    *能不用则不用;对资源是种浪费;
      整个数据带过来是很大的;
     
    distinct 区别;
    distinct只会抛弃完全一样的;
     
    select distinct  deptno,ename 
         from emp
     
    消除结果完全相同的那一行;
     
    查询计算:
     列的别名;
     如何处理空?
     有一个函数,解决null问题---isnull;
     comm为空,返回0;否则,返回本身的值;
     
     isnull提供了一个函数进行判断是否为null;
     
     
    时间查询计算:
    执行查询的时候,数据库会试图转换datetime格式;
     
    --between  and 
    between 效率会高一点点;包含取两边都取;
     
    --like模糊查询
    %任意的;_ 表示单个字符;

    ==================================
     
      1 数据库例解主键、外键、多功能查询,见下例:
      2 --建库
      3 create database test
      4 
      5 
      6 --创建dept表
      7 create table dept--部门表
      8 (deptno int primary key,--部门编号
      9 dname nvarchar(30),--部门名称
     10 loc nvarchar(30)--所在地
     11 )
     12 
     13 
     14 --建表emp
     15 create table emp--表名
     16 (empno int primary key,--编号
     17 ename nvarchar(30),--名字
     18 job nvarchar(30),--职位
     19 mgr int,--上级编号
     20 hiredate datetime,--入职日期
     21 sal numeric(10,2),--薪水
     22 comm numeric(10,2),--奖金
     23 deptno int foreign key references dept(deptno)--部门编号(做成外键)
     24 )
     25 
     26 
     27 --针对外键,请注意:
     28 --1、外键只能指向主键
     29 --2、外键和主键的数据类型要一致
     30 
     31 
     32 --向dept表中添加数据
     33 insert into dept values (10,'accounting','new york')
     34 insert into dept values (20,'research','dallas')
     35 insert into dept values (30,'sales','chicago')
     36 insert into dept values (40,'operations','boston')
     37 
     38 
     39 --向emp表中添加数据
     40 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7369,'smith','clerk',7902,'1980-12-17',800.00,20)
     41 insert into emp values(7499,'allen','salesman',7698,'1981-2-20',1600.00,300.00,30)
     42 insert into emp values(7521,'ward','salesman',7698,'1981-2-22',1250.00,500.00,30)
     43 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7566,'jones','manager',7839,'1981-4-2',2975.00,20)
     44 insert into emp values(7654,'martin','salesman',7698,'1981-9-28',1250.00,1400.00,30)
     45 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7698,'blake','manager',7839,'1981-5-1',2850.00,30)
     46 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7782,'clark','manager',7839,'1981-6-9',2450.00,10)
     47 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7788,'scott','analyst',7566,'1987-4-19',3000.00,20)
     48 insert into emp (empno,ename,job,hiredate,sal,deptno) values (7839,'king','president','1981-11-17',5000.00,10)
     49 insert into emp values (7844,'turner','salesman',7698,'1981-9-8',1500.00,0.00,30)
     50 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7876,'adams','clerk',7788,'1987-5-23',1100.00,20)
     51 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7900,'james','clerk',7698,'1981-12-3',950.00,30)
     52 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7902,'ford','analyst',7566,'1981-12-3',3000.00,20)
     53 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7934,'miller','clerk',7782,'1982-1-23',1300.00,10)
     54 
     55 
     56 --查看dept表内容
     57 select * from dept
     58 
     59 --查看emp表内容
     60 select * from emp
     61 
     62 --查询所有列
     63 --语法:select * from 表名 where 条件
     64 select * from emp
     65 
     66 --查询指定列(sql sever不区分大小写,oracle区分大小写)
     67 --语法:select 字段1,字段2 from 表名 where 条件
     68 
     69 --查询smith的薪水,工作,所在部门
     70 select sal,job,deptno from emp where ename='smith'
     71 
     72 --取消重复行(distinct只能消除完全一样的行,保留一行)
     73 --语法:select distinct 字段 from 表名 where 条件
     74 
     75 --统计共有多少个部门编号
     76 select distinct deptno from emp
     77 
     78 --使用算数表达式
     79 --显示每个雇员的年工资+奖金
     80 select ename"姓名",sal*13+isnull(comm,0)*13"年收入" from emp
     81 
     82 --使用where子句
     83 --如何显示工资高于3000的员工
     84 select ename"员工姓名",sal"工资高于3000" from emp where sal>3000
     85 
     86 --如何查找1982-1-1后入职的员工
     87 select ename"员工姓名",hiredate"1982-1-1后入职日期" from emp where hiredate>'1982-1-1'
     88 
     89 --如何显示工资在2000到2500的员工情况
     90 select * from emp where sal>=2000 and sal<=2500
     91 select * from emp where sal between 2000 and 2500
     92 
     93 --如何使用like操作符(模糊查询)
     94 --%:表示0到多个字符 _:表示单个字符
     95 --如何显示首字符为S的员工姓名和工资
     96 select ename,sal from emp where ename like 's%'
     97 
     98 --如何显示第三个字符为o的所有员工的姓名和工资
     99 select ename,sal from emp where ename like '__O%'
    100 
    101 --在where条件中使用in
    102 --如何显示empno为123,345,800...的雇员情况
    103 select * from emp where empno in(123,345,800)
    104 
    105 --使用is null的操作符
    106 --如何显示没有上级的雇员的情况
    107 select * from emp where mgr is null
    108 
    109 --使用逻辑操作符号
    110 --查询工资高于500或是岗位为manager的雇员,同时还要满足他们的姓名首写字母为大写的J
    111 select * from emp where (sal>500 or job='manager') and ename like 'J%'
    112 
    113 --使用order by字句(asc默认是升序排列,desc为降序排列)
    114 --如何按照工资的从低到高的顺序显示雇员的信息
    115 select sal from emp order by sal asc
    116 --按照部门号升序而雇员的工资降序排列
    117 --order by可以根据不同的字段排序
    118 select deptno,sal from emp order by deptno,sal desc
    119 
    120 --使用列的别名排序(别名需要使用""号圈中)
    121 select ename,sal*12"年薪" from emp order by "年薪"
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    NOIp2018集训test-9-23
    NOIp2018集训test-9-22(am/pm) (联考三day1/day2)
    NOIp2018集训test-9-21(am/pm)
    NOIp2018集训test-9-19(am&pm)
    day41.txt
    day40表关系
    day39
    day38数据库
    day37
    day36
  • 原文地址:https://www.cnblogs.com/xuxaut-558/p/10035719.html
Copyright © 2011-2022 走看看