JAVA入门到精通-第59讲-sqlServer基本查询

Posted 夏至稻花如白练,大暑池畔赏红莲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 "年薪"

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

以上是关于JAVA入门到精通-第59讲-sqlServer基本查询的主要内容,如果未能解决你的问题,请参考以下文章

JAVA入门到精通-第58讲-SQLserver数据类型

JAVA入门到精通-第57讲-SQLserver数据类型

JAVA入门到精通-第55讲-sql server基本使用

JAVA入门到精通-第33讲-绘图技术.坦克大战1

JAVA入门到精通-第1讲

JAVA入门到精通-第40讲-线程