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 "年薪"

原文地址:https://www.cnblogs.com/xuxaut-558/p/10035719.html

时间: 2024-10-02 08:03:01

JAVA入门到精通-第59讲-sqlServer基本查询的相关文章

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

--批量查询 这样查询,效率比较低下: in 关键字,批量查询: select * from emp where  empno  in (123,  345,  800) is null --使用逻辑操作符 --order by 排序 asc   升序:默认是升序: desc 降序: order  by 可以根据不同的字段排序: order by deptno ,  sal  desc 使用别名进行排序: 实际上是种浪费,对字段取个别名,对别名进行排序: --分页查询 结果太多,不分页显示不方便

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

float查询的时候精度很奇怪,不建议用来声明小数: float (3) 精度:小数和整数的位数加起来的位数: 精度:20  小数位数:2 numeric (10, 2) datetime可以表示到毫秒级的:后面可以不带任何参数: --getdate(  ) 得到当前的时间: 时,分,秒,毫秒: 在程序中去拿到时间,JAVA专有的日期转换格式去转换: image图片其实很少用: 软件公司里面如何保存图片? 在数据库中保存图片的路径: 用图片服务器或者图床技术来解决图片的显示: 后面连接数据库群:

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

[关键字]用[ ]包起来 SQLserver数据类型: 非unicode编码: 在计算机世界,每一个字符都有编码的东西 unicode码的特点: 用两个字节表示一个字符(可以是英文字符,汉字). big5支持繁体: iso-8859-1编码:支持欧洲文字编码: gb2312支持中文汉字: gbk可以支持更多的汉字: 邮件服务器,国际性的软件会涉及多种编码的问题, 不同国家的文字,是否支持文字: char最大值能存8000个字符,能存4000个汉字: 非unicode编码,用两个字节 表示一个汉字

JAVA入门到精通-第94讲-山寨QQ项目8-好友在线提示

遇到的问题: 现在每登录一个人,后面的人是能看到前面的登录的人的: 但是,前面的人看不到后面的人登录: //后面每登录一个人,有责任去通知前面登录的人他已经上线了: 通知了完以后,需要更改好友在线的情况: //不让同一个账号反复登录 //如果 好友不在线,则不能聊天 ================================ [ManageQqChat.java] /** * 这是一个管理用户聊天界面的类 */ package com.qq.client.tools; import jav

JAVA入门到精通-第72讲-学生管理系统4-model 2模式(1)

删除.查询.添加.修改: -修改: 每个字段都可能修改: //给?赋值 //在prepareStatement语句后面赋值才好用 //修改完了,更新数据 目前为止,已经完成了增删改查-Model1模式 最大特点: 界面和业务逻辑操作是放在一起的: 优点:简单,开发方便: 缺点:代码复用性不高: 中大型项目可读性差,可维护性不高: 前台后端混杂在一起的: 比如:"数据库密码换了, 所有涉及到数据库的地方都需要发生变化" =================================

JAVA入门到精通-第31讲-常见组件

面板组件-Jpanel  一个JFrame,多个JPanel: JPanel默认是流布局:FlowLayout:  通过JPanel达到复杂布局的目的:  可以认为是网格布局,有3个JPanel:2个Label:2个按钮: 一个密码框和一个文本输入框:   最终展现出来的还是靠JFrame展现的  网格布局好点,3个JPanel,用流布局,控件往里加: ButtonGroup按钮组:一组里面只能选择一个:    对单选框管理,就是把它加入到ButtonGroup里面: 单选框也是一个个放进JPa

JAVA入门到精通-第70讲-学生管理系统2-增删改

-完成一个mini版本学生管理系统 jude软件:很好使的,安装一下就可以用了: -学生管理系统的添加 .修改.删除.上下页分页 ---------------------------------------------- 上面是一个流布局,JPanel 下面是一个流布局,JPanel 中间是Border布局,边界布局,CENTER JTextField jtf; 先加JLable--->Jtf文本域->JButton按钮 ------------------------- mis 系统:信息

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

    用的是Access数据库,安全性不够好,性能也不够强大:   躲在这里,坦克很少过来,做了一个随机数: 把得分的记录保存在数据库里面: SQLServer2005中型数据库:    (x,y)坐标:     800x600:     表示计算机屏幕上的每一行由800个点组成,共有600行:   共有480000个像素:   java绘图技术:   绘图一般在JPane上画: 覆盖JPanel的paintat方法 Graphics是一个图形画笔类,绘图的重要类,可以理解为一只画笔 supe

JAVA入门到精通-第32讲-swing编程实战

 JBorderLayout,左边是JList,拆分窗格: 图片是放在JLabel上的,图片的地址写好就行:  在相关项目下面建立一个文件夹Folder,放置图片:或者复制粘贴:   拆分:水平拆分?垂直拆分?    拆分之后把jList和jl1这两个组件放进去: 可以伸缩:  在窗口左上角出现自己的图标? Border布局: 多行文本框带滚动条,聊天窗口可滚动:   加入QQ左上角图标:      转成图片,getImage; Border布局很有用, CENTER会被自动挤满:  QQ号码.