
谦卑若愚,好学若饥,吾异无他,唯手熟尔! 一个不断追求完美的少年--晨曦Dawn
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 一。需求: 本篇博客是最近笔者做的一个项目,已经上线但是还在不断开发,有些页面上的配置,测试服务器和正式服务器的参数不同,需要经常改动,所以直接改页面肯定不合适! so;产品经理提出一个需求,需要只建一个配置文件,存储正式服务器和测试服务器的配置,要求前后台通用,读取方便,修改方便 二。结构: 采用.json文件实现的前后台通用读取 三。知识点: 前后台不同的.json静态文件读取,解析方式 编写能让springboot识别到自定义静态资源的路径的插件 四。优点: 比.js,.properties文件,以及多次请求后台的静态.class文件要优良一些,无论从性能还是被浏览器缓存Gank的因素来讲,这个.json的方式确实优良 五。方案思路以及最后解决: 1.项目结构 2.创建.json文件---->TheServerURL.json 注意:里面的格式为json { "appId": "123456", "secret": "123456789123", "url61": "http://192.168.1.1", "urlhead": "baidu.com", "urlinit": "www.hao123.com", "urlman": "mi.com", "justChangeThisURL":"https://www.cnblogs.com/DawnCHENXI/" } 3.给springboot注册插件ApplicationConfig,让他识别到放置于resource下的静态资源(.json放在此处是因为修改方便,打成war包之后,它很好找) package com.xy.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; //这个注解需要启动类去设置一下,否者不会识别 @Configuration public class ApplicationConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { /** * 如果我们将/xxxx/** 修改为 /** 与默认的相同时,则会覆盖系统的配置,可以多次使用 addResourceLocations 添加目录, * 优先级先添加的高于后添加的。 * * 如果是/xxxx/** 引用静态资源 加不加/xxxx/ 均可,因为系统默认配置(/**)也会作用 * 如果是/** 会覆盖默认配置,应用addResourceLocations添加所有会用到的静态资源地址,系统默认不会再起作用 */ registry.addResourceHandler("/**") .addResourceLocations("classpath:/META-INF/resources/") .addResourceLocations("classpath:/resources/") .addResourceLocations("classpath:/static/") .addResourceLocations("classpath:/public/") .addResourceLocations("classpath:/"); registry.addResourceHandler("classpath:/mybatis/**"); super.addResourceHandlers(registry); } } 4.前台页面的使用方式(需要jquery支持) function test() { var dataroot="/TheServerURL.json";//json文件路径 var urlTemp; var appid; $.getJSON(dataroot, function(data) { urlTemp = "http://"+data.justChangeThisURL+"/teacher100/skip/login" appid=data.appId var path = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&redirect_uri=" + urlTemp + "&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect"; window.location.href = path; }); } 5.后端构建个工具类,用来承载前端传回来的值(TheServerURL ) package com.xy.model; public class TheServerURL { //测试服务器 public static String urlhead=""; public static String urlinit=""; public static String urlman=""; public static String appId=""; public static String secret=""; public static String url61 = ""; public static String justChangeThisURL=""; public static String getJustChangeThisURL() { return justChangeThisURL; } public static void setJustChangeThisURL(String justChangeThisURL) { TheServerURL.justChangeThisURL = justChangeThisURL; } public static String getUrlhead() { return urlhead; } public static void setUrlhead(String urlhead) { TheServerURL.urlhead = urlhead; } public static String getUrlinit() { return urlinit; } public static void setUrlinit(String urlinit) { TheServerURL.urlinit = urlinit; } public static String getUrlman() { return urlman; } public static void setUrlman(String urlman) { TheServerURL.urlman = urlman; } public static String getAppId() { return appId; } public static void setAppId(String appId) { TheServerURL.appId = appId; } public static String getSecret() { return secret; } public static void setSecret(String secret) { TheServerURL.secret = secret; } public static String getUrl61() { return url61; } public static void setUrl61(String url61) { TheServerURL.url61 = url61; } } 6.注册插件,在启动项目的时候读取配置(这个可以之后再去拓展,或者再写接口,实时刷新) package com.xy.config; import com.alibaba.fastjson.JSON; import com.xy.model.TheServerURL; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; import java.io.*; import java.util.HashMap; @Configuration public class TheURLLoadBean { public TheURLLoadBean(){ try { //读取到静态资源文件 org.springframework.core.io.Resource resource = new ClassPathResource("TheServerURL.json"); File file = null; file = resource.getFile(); //使用io读出数据 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file))); String str = null; StringBuilder all=new StringBuilder(); while((str = br.readLine()) != null){ all.append(str); } if(all!=null){ //采用阿里的fastjson解析这个json HashMap hashMap=JSON.parseObject(all.toString(),HashMap.class); //装配给这个工具类的静态字段 TheServerURL.urlhead=(String) hashMap.get("urlhead"); TheServerURL.urlinit=(String) hashMap.get("urlinit"); TheServerURL.urlman=(String) hashMap.get("urlman"); TheServerURL.appId=(String) hashMap.get("appId"); TheServerURL.secret=(String) hashMap.get("secret"); TheServerURL.url61=(String) hashMap.get("url61"); TheServerURL.justChangeThisURL=(String) hashMap.get("justChangeThisURL"); } } catch (IOException e) { e.printStackTrace(); } } } 7.后端使用配置文件的参数(直接用这个 工具类类名 . 静态字段名 )就可以调用到 TheServerURL.appId 笔者:晨曦Dawn 转载请注明出处! 如果有错误或疑惑,请您指出,互相探讨互相学习,感激不尽!!!!!!!!!!!!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客给刚接触存储过程的朋友做个引导作用,目的是解决游标不走循环 很多人发现他的游标,无论是嵌套循环还是单层的循环,都不会走,或者只走一次,但是从数据上看它并不应该走一次,我把结论给大家说一下 很多人都有这俩行中的一行 DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 它的作用是什么呢? 就是在下面的执行过程中,一旦有空记录(就是没有返回结果),或者一旦有异常,就会把done设置为1,你循环的时候,判断的done。所以就会出现循环不走的问题 解决方案: 1.异常的话需要自己排掉 2.如果是嵌套循环,需要在内层循环结束后加上一个 set done=0; 3.如果你在循环内或者循环前还查了东西,而它没有记录返回,它也会把done改为1,所以,如果你不能删掉那条查询语句的话,就得在后面 set done=0; 大致意思就是这样,可以去尝试一下!!!!!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客要讲的有,如何创建一个唯一的文件名,创建一个唯一的String字符串 为什么要创建唯一呢?再很多情况下,比如文件上传,文件名要不一致,否则就覆盖掉了,如何不一致,这就是本篇博客要讲的内容 注:直接采用随机数是愚蠢的做法,它在很大概率上会有相同的数字出现 方式一:时间戳 推荐指数: 原因:时间戳在高并发情况下有可能会出现相同 解决方案:再拼随机数,注意拼接的时候别让俩个做加法运算 时间戳变量+""+随机数变量 //时间戳第一种 System.out.println(new Date().getTime()); //时间戳第二种 System.out.println(System.currentTimeMillis()); 随机数: //生成六位随机数 System.out.println((int)((Math.random()*9+1)*100000)); 方式二:微秒数 推荐指数: 原因:它比时间戳还要细,控制的力度更强 也可以加随机数或者自己拼接自己的规则 //微秒数 System.out.println(System.nanoTime()); 方式三:UUID 推荐指数: 原因:他是java.util包下的一个可以产生不同的字符变量的一个类,它的功能很强大 //采用UUID的方式 import java.util.UUID; UUID randomUUID = UUID.randomUUID(); System.out.println(randomUUID); 方式四:在前三种基础上自定义规则 推荐指数: 原因:在日常中上面三种都足以满足自己的小Demo,小项目使用,但是在成熟大项目中,或许有些不够看,所以,我讲第四种 思路:文件名不是一个字符串嘛,做拼接的三面三种方式任意一种的时候,可以自己加入自己的规则,比如上传者的id,比如你从那块上传的解释,甚至加入8位甚至更多的随机数等 就是自定义规则,让概率变得更小!!!!!!!!!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本次记录如何设置CefSharp忽略安全证书,以及他的一些其他配置 参考网址: https://peter.sh/experiments/chromium-command-line-switches/ 这个网站记录了CefSharp所有可以设置的配置 http://www.codebye.com/cefsharp-help-2-config-manage.html 这个网站记录了如何具体设置,不过第二个网站在刚才测试中好像没能打开,我简单说一下 具体设置 我在第一个参考网站中找到证书,他有俩个,我不知道哪个起作用,我就都配置了 //安全证书 settings.CefCommandLineArgs.Add("--ignore-urlfetcher-cert-requests", "1"); settings.CefCommandLineArgs.Add("--ignore-certificate-errors", "1"); 这是flash的配置 //flash settings.CefCommandLineArgs.Add("ppapi-flash-path", AppDomain.CurrentDomain.BaseDirectory + "\\Plugins\\pepflash\\pepflashplayer.dll"); 具体放入的位置,参考我上篇博客的InitializeCefSharp方法里,我写个Demo /// <summary> /// 解决anycpu不能兼容 /// </summary> [MethodImpl(MethodImplOptions.NoInlining)] private static void InitializeCefSharp() { var settings = new CefSettings(); // Set BrowserSubProcessPath based on app bitness at runtime settings.BrowserSubprocessPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, Environment.Is64BitProcess ? "x64" : "x86", "CefSharp.BrowserSubprocess.exe"); //安全证书 settings.CefCommandLineArgs.Add("--ignore-urlfetcher-cert-requests", "1"); settings.CefCommandLineArgs.Add("--ignore-certificate-errors", "1"); //settings.CefCommandLineArgs.Add("allow-http-background-page", "1"); //settings.CefCommandLineArgs.Add("allow-insecure-localhost","1"); //settings.CefCommandLineArgs.Add("allow-http-screen-", "1"); //settings.CefCommandLineArgs.Add("reduce-security-for-testing", "1"); //flash settings.CefCommandLineArgs.Add("ppapi-flash-path", AppDomain.CurrentDomain.BaseDirectory + "\\Plugins\\pepflash\\pepflashplayer.dll"); // Make sure you set performDependencyCheck false Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null); }
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述如何在AnyCPU模式下使用CefSharp 因为在某些情况下,不得不用AnyCPU,但是CefSharp支持的是86和64位俩种模式,所以在我查阅了很多国内外的资料下,总结出来的一些精华 参考地址: https://ourcodeworld.com/articles/read/173/how-to-use-cefsharp-chromium-embedded-framework-csharp-in-a-winforms-application https://github.com/cefsharp/CefSharp/issues/1714 https://github.com/cefsharp/CefSharp.MinimalExample/blob/demo/anycpu/CefSharp.MinimalExample.Wpf/App.xaml.cs 三篇结合就可以实现在AnyCPU下使用CefSharp 简单步骤记录 第一篇博客取其第二个,更改配置的那一块,这块不改,下面的没用,项目起不起来 简述一下: 1.修改为首选32位, 2.在你项目名.csproj文件下,加一段 <CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport> 位置如下: 3.在App.config下加一端 <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="x86"/> </assemblyBinding> </runtime> 位置如下: 第二篇博客取的精髓在这块,我给放过来 public partial class App : Application { public App() { //Add Custom assembly resolver AppDomain.CurrentDomain.AssemblyResolve += Resolver; //Any CefSharp references have to be in another method with NonInlining // attribute so the assembly rolver has time to do it's thing. InitializeCefSharp(); } [MethodImpl(MethodImplOptions.NoInlining)] private static void InitializeCefSharp() { var settings = new CefSettings(); // Set BrowserSubProcessPath based on app bitness at runtime settings.BrowserSubprocessPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, Environment.Is64BitProcess ? "x64" : "x86", "CefSharp.BrowserSubprocess.exe"); // Make sure you set performDependencyCheck false Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null); } // Will attempt to load missing assembly from either x86 or x64 subdir // Required by CefSharp to load the unmanaged dependencies when running using AnyCPU private static Assembly Resolver(object sender, ResolveEventArgs args) { if (args.Name.StartsWith("CefSharp")) { string assemblyName = args.Name.Split(new[] { ',' }, 2)[0] + ".dll"; string archSpecificPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, Environment.Is64BitProcess ? "x64" : "x86", assemblyName); return File.Exists(archSpecificPath) ? Assembly.LoadFile(archSpecificPath) : null; } return null; } } 第三篇博客 就是告诉你using指令怎么引,以及详细的写法,要用的话,还是用第二篇博客的这段代码 using System; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Windows; namespace CefSharp.MinimalExample.Wpf { public partial class App : Application { public App() { //Add Custom assembly resolver AppDomain.CurrentDomain.AssemblyResolve += Resolver; //Any CefSharp references have to be in another method with NonInlining // attribute so the assembly rolver has time to do it's thing. InitializeCefSharp(); } [MethodImpl(MethodImplOptions.NoInlining)] private static void InitializeCefSharp() { //Perform dependency check to make sure all relevant resources are in our output directory. var settings = new CefSettings(); settings.BrowserSubprocessPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, Environment.Is64BitProcess ? "x64" : "x86", "CefSharp.BrowserSubprocess.exe"); Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler:null); } // Will attempt to load missing assembly from either x86 or x64 subdir // Required by CefSharp to load the unmanaged dependencies when running using AnyCPU private static Assembly Resolver(object sender, ResolveEventArgs args) { if (args.Name.StartsWith("CefSharp")) { string assemblyName = args.Name.Split(new[] { ',' }, 2)[0] + ".dll"; string archSpecificPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, Environment.Is64BitProcess ? "x64" : "x86", assemblyName); return File.Exists(archSpecificPath) ? Assembly.LoadFile(archSpecificPath) : null; } return null; } } } 三套组合拳打完,CefSharp就可以在AnyCPU模式下使用了
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 首先我讲明一下我要做的,公司有个C# wpf的项目需要我把一个开发好的网页嵌入到客户端当中,由于种种原因,我放弃了ie,转而选择了CefSharp 本篇博客会讲如何安装CefSharp,未来几篇博客将会把我所遇到的问题,包括如何忽略安全证书,如何在anycpu模式下使用CefSharp等种种我踩过的坑都讲述一遍 安装CefSharp步骤一:进入NuGet管理 安装CefSharp步骤二:搜索并且下载 安装CefSharp步骤三:配置管理器 此处可以配置成86或者64位的,但是我的项目做过一些手脚,所以只能是Any CPU,但是正是这样,恰恰出现了问题 步骤四:空跑项目,测试报不报错 大部分情况下都是没有问题的,所以安装成功 我的因为是any cpu,所以出现问题,我下一篇博客来详细讲
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述几种跨域发HTTP请求的几种方法,POST请求,GET请求 目录: 一,采用JsonP的方式(只能是GET) 二,采用CROS的方式(需要在接收的一端也有配置) 三,采用form表单的方式(有些时候会存在问题,一会详细说明) 四,采用代理网站帮忙转(不推荐,不安全,性能低,不做解释) 五,后台JAVA后端通过net方式发送 一,jsonP的方式: $.ajax({ url: "http://localhost:9090/student", type: "GET", dataType: "jsonp", //指定服务器返回的数据类型 success: function (data) { var result = JSON.stringify(data); //json对象转成字符串 $("#text").val(result); } }); 它只能发送get请求 二,CROS的方式:(需要接收的一端也配置) 1.发送处: $.ajax({ url: "your url which return json", type: "POST", crossDomain: true, data: data, dataType: "json", success:function(result){ alert(JSON.stringify(result)); }, error:function(xhr,status,error){ alert(status); } }); 2.接收处: response.addHeader( "Access-Control-Allow-Origin", "*" ); response.addHeader( "Access-Control-Allow-Methods", "POST" ); response.addHeader( "Access-Control-Max-Age", "1000" ); 三,采用Form表单的方式提交,(可以实现POST跨域请求) 把数据封装成form表单中的字段,然后发送过去 不好的点:加入你在form表单提交的过程中,这个新增弹窗被代码给直接关掉,有可能的是它没有传过去 function crossDomainPost() { // Add the iframe with a unique name var iframe = document.createElement("iframe"); var uniqueString = "CHANGE_THIS_TO_SOME_UNIQUE_STRING"; document.body.appendChild(iframe); iframe.style.display = "none"; iframe.contentWindow.name = uniqueString; // construct a form with hidden inputs, targeting the iframe var form = document.createElement("form"); form.target = uniqueString; form.action = "http://INSERT_YOUR_URL_HERE"; form.method = "POST"; // repeat for each parameter var input = document.createElement("input"); input.type = "hidden"; input.name = "INSERT_YOUR_PARAMETER_NAME_HERE"; input.value = "INSERT_YOUR_PARAMETER_VALUE_HERE"; form.appendChild(input); document.body.appendChild(form); form.submit(); } 四,采用代理(不安全,性能不好,所以不讲) 五,采用后台发送(Java的net) 注意的点:不要在事务开启的那层发,有可能你发数据的时候还没持久化到数据库,所以接收的那一端没有 package com.xy.aider; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map; /** * 后台发送跨域的post和get请求 * @author Heng Hui * */ public class SendHttpRequestUtil { /** * 向指定URL发送GET方法的请求 * * @param url * 发送请求的URL * @param param * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return URL 所代表远程资源的响应结果 */ public static String sendGet(String url, String param) { String result = ""; BufferedReader in = null; try { String urlNameString = url + "?" + param; URL realUrl = new URL(urlNameString); // 打开和URL之间的连接 URLConnection connection = realUrl.openConnection(); // 设置通用的请求属性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); //备用方案 //conn.setRequestProperty("UserAgent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); // 建立实际的连接 connection.connect(); // 获取所有响应头字段 Map<String, List<String>> map = connection.getHeaderFields(); // 遍历所有的响应头字段 for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); } // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader( connection.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return result; } /** * 向指定 URL 发送POST方法的请求 * @param url 发送请求的 URL * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return 所代表远程资源的响应结果 */ public static String sendPost(String url, String param) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); // 设置通用的请求属性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); //备用方案 //conn.setRequestProperty("UserAgent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); // 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); //1.获取URLConnection对象对应的输出流 out = new PrintWriter(conn.getOutputStream()); //2.中文有乱码的需要将PrintWriter改为如下 //out=new OutputStreamWriter(conn.getOutputStream(),"UTF-8") // 发送请求参数 out.print(param); // flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送 POST 请求出现异常!"+e); e.printStackTrace(); } //使用finally块来关闭输出流、输入流 finally{ try{ if(out!=null){ out.close(); } if(in!=null){ in.close(); } } catch(IOException ex){ ex.printStackTrace(); } } System.out.println("post推送结果:"+result); return result; } ///数据类似这种写入 public void testDemo(){ //发送 GET 请求 String s=SendHttpRequestUtil.sendGet("http://localhost:6144/Home/RequestString", "key=123&v=456"); System.out.println(s); //发送 POST 请求 String sr=SendHttpRequestUtil.sendPost("http://localhost:6144/Home/RequestPostString", "key=123&v=456"); System.out.println(sr); } }
方式一、使用ServletActionContext(耦合度高,不建议使用) public String login(){ ServletActionContext.getRequest().getSession().setAttribute("user","王彬"); return "success"; } Struts.xml <action name="login" class="cn.xcq.entity.Action1" method="login"> <result>/success.jsp</result> </action> Success.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head> <title>Title</title> </head> <body> <h1>成功页面</h1> ${sessionScope.user} </body> </html> 方式二、实现接口 这个案例使用session作用域,所以实现SessionAware接口 Struts2底层将作用域都封装成了Map。 public class Action1 implements SessionAware { //声明一个Map private Map<String, Object> session; //使用session需 实现sessionaware接口 //requesr RequestAware接口。。。。 public String login(){ session.put("user","程高升"); return "success"; } //重写SessionAware的setSession方法,将声明的session赋值给它 @Override public void setSession(Map<String, Object> map) { this.session=map; } } Success.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head> <title>Title</title> </head> <body> <h1>成功页面</h1> ${sessionScope.user} </body> </html> 方式三、ActionContext //方式三 public String login(){ //session Map<String, Object> session = ActionContext.getContext().getSession(); session.put("user","林帅"); //request Map<String, Object> request =(Map<String, Object>) ActionContext.getContext().get("request"); request.put("name","程高升"); return "success"; }
1.用来实现上一页下一页,我直接写到查询页面上 <%--page的分页--%> <style type="text/css"> a { color: #555555; text-decoration: none; cursor: pointer; } .pages a.p_pre:hover { background-color: #eaeaea; color: #555555; border: 1px solid #cccccc; } .pages a { height: 36px; line-height: 36px; overflow: hidden; color: #666666; font-size: 16px; text-align: center; display: inline-block; padding: 0 12px; margin: 0 4px; border: 1px solid #cccccc; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; } .pages a:hover, .pages a.cur { color: #FFF; background-color: #DD4E62; border: 1px solid #DD4E62; } </style> <div class="pages"> <c:if test="${pager.totalPage>=1}"> <a href="${pageContext.request.contextPath}${pager.url}&pageIndex=1" class="p_pre">首页</a> <c:if test="${pager.pageIndex>1}"> <a href="${pageContext.request.contextPath}${pager.url}&pageIndex=${pager.pageIndex-1}" class="p_pre">上一页</a> </c:if> <c:forEach var="temp" begin="${pager.pageIndex>3?pager.pageIndex-3:1}" end="${pager.totalPage-pager.pageIndex>3?pager.pageIndex+3:pager.totalPage}" step="1"> <c:if test="${pager.pageIndex==temp}"> <a href="${pageContext.request.contextPath}${pager.url}&pageindex=${temp}" class="cur">${temp}</a> </c:if> <c:if test="${pager.pageIndex!=temp}"> <a href="${pageContext.request.contextPath}${pager.url}&pageindex=${temp}">${temp}</a> </c:if> </c:forEach> <c:if test="${pager.pageIndex<pager.totalPage}"> <a href="${pageContext.request.contextPath}${pager.url}&pageindex=${pager.pageIndex+1}" class="p_pre">下一页</a> </c:if> <a href="${pageContext.request.contextPath}${pager.url}&pageIndex=${pager.totalPage}" class="p_pre">尾页</a> </c:if> <c:if test="${pager.totalPage==0}"> <a href="#" class="cur">暂无记录</a> </c:if> </div> 2.遍历的方式 <c:forEach items="${pager.lists}" var="item"> <li class="w-280 m-l-13 m-r-13 bg-c-ffffff m-t-8 m-b-23 fl"> <a href="${pageContext.request.contextPath}/selectAllSys_videoByCid/${item.cid}" class="dsblock w-260 hg-140 ovhidden "> <img src="${pageContext.request.contextPath}/jsp/front/videopic/${item.cimage}" alt=""/> <div class="course-label"> <c:if test="${item.ctype==1}"> <label>精品视频</label> </c:if> <c:if test="${item.ctype!=1}"> <label>最新视频</label> </c:if> <%--<label>${item.ctype}</label>--%> </div> </a> <div class="w-255 p-l-10 p-r-15 fl"> <div class="home_calsstxt w-200 fl"> <h3 class="w-all fs-16 ftc-000000 line-h32 one_hidden m-t-6 fl">${item.cname}</h3> <span class="dsblock w-all fs-14 ftc-ff0000 line-h32 fl">¥${item.cprice}</span> </div> </div> </li> </c:forEach> 3.工具类 package cn.dawn.util; import java.util.List; public class PagerInfo<T> { private int totalPage;// 总页数 private int totalSize;// 总记录数 private int pageSize;//每页的记录数 private int pageIndex;//页码 private String url;//地址 public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } private List<T> lists; public int getTotalPage() { //如果总记录数除以每页显示的记录数能整除,那么总页数等于商,否则商+1 int total=totalSize%pageSize==0?totalSize/pageSize:totalSize/pageSize+1; return total; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public int getTotalSize() { return totalSize; } public void setTotalSize(int totalSize) { this.totalSize = totalSize; } public List<T> getLists() { return lists; } public void setLists(List<T> lists) { this.lists = lists; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageIndex() { return pageIndex; } public void setPageIndex(int pageIndex) { this.pageIndex = pageIndex; } } 4.springmvc方法 /*根据搜索框查视频列表*/ @RequestMapping("/searchcourselisttocontroller") public String searchcourselisttocontroller(Model model,Integer pageindex,String cname){ if(cname==null){ cname=""; } try { PagerInfo<Sys_course> pager = iCourseService.searchcourselisttocontroller(pageindex,cname); pager.setUrl("/searchcourselisttocontroller?cname="+cname); model.addAttribute("pager",pager); } catch (Exception e) { e.printStackTrace(); } return "searchcourselist"; } 5.service层方法 @Override public PagerInfo<Sys_course> selectAllTypeThreeSys_course(Integer pageindex) throws Exception { int index2=pageindex==null?1:pageindex; //分页的集合 PagerInfo<Sys_course> page=new PagerInfo<Sys_course>(); Map<String,Object> map=new HashMap<String,Object>(); map.put("pageIndex",(index2-1)*8); map.put("pageSize",8); List<Sys_course> lists = iCourseDAO.selectAllTypeThreeSys_course(map); page.setLists(lists); page.setTotalSize(iCourseDAO.selectAllTypeThreeSys_courseCount(map)); page.setPageSize(8); page.setPageIndex(index2); return page; } dao层俩个方法 <select id="selectAllTypeThreeSys_course" resultType="Sys_course"> SELECT * FROM sys_course WHERE cparent IN(SELECT c.cid AS ciddd FROM sys_course AS c WHERE cparent IN(SELECT cid FROM sys_course WHERE cparent=0)) ORDER BY ccreatetime DESC LIMIT #{pageIndex},#{pageSize} </select> <select id="selectAllTypeThreeSys_courseCount" resultType="int"> SELECT COUNT(1) FROM sys_course WHERE cparent IN(SELECT c.cid AS ciddd FROM sys_course AS c WHERE cparent IN(SELECT cid FROM sys_course WHERE cparent=0)) ORDER BY ccreatetime DESC </select> hibernate中分页怎么弄 @Test /* * 查询姓名中包含b的员工,并且按照薪水降序排序 * */ public void t12CriteriaPage(){ int count=((Long)session.createCriteria(Emp.class) .add(Restrictions.ilike("name","b",MatchMode.ANYWHERE)) .setProjection(Projections.count("name")).uniqueResult()).intValue(); System.out.println(count); //设置当前页和页大小 int pageIndex=2; int pageSize=2; //计算总页数 int totalPage=(count%pageSize==0)?(count/pageSize):(count/pageSize+1); //根据薪水进行降序排序 Criteria criteria = session.createCriteria(Emp.class) .add(Restrictions.ilike("name","b",MatchMode.ANYWHERE)) .addOrder(Order.desc("sal")); //设置 起始页和页大小 List<Emp> emps=criteria.setFirstResult((pageIndex-1)*pageSize) .setMaxResults(pageSize).list(); /*遍历*/ for (Emp emp:emps){ System.out.println(emp); } /* Hibernate: select count(this_.name) as y0_ from Emp this_ where lower(this_.name) like ? 3 Hibernate: select this_.empId as empId1_1_0_, this_.name as name2_1_0_, this_.sal as sal3_1_0_, this_.job as job4_1_0_, this_.deptNo as deptNo5_1_0_ from Emp this_ where lower(this_.name) like ? order by this_.sal desc limit ?, ? Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Emp{empId=2, name='Ab', job='财务猿2', sal=5000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} * */ } 更简单的hibernate分页 @Test /** * 分页 * * 01.查询总记录数 * 02.每页显示的数据 * 03.总页数 */ public void t1Page(){ String hql="select count(*) from Teacher";//会返回Long类型 int counts=((Long)session.createQuery(hql).uniqueResult()).intValue(); /*页大小*/ int pageSize=2; /*总页数*/ int totalPages=(counts%pageSize==0)?(counts/pageSize):(counts/pageSize+1); /*显示第二页内容*/ int pageIndex=2; hql="from Teacher"; Query query = session.createQuery(hql);; /*从哪一条开始查*/ query.setFirstResult((pageIndex-1)*pageSize); /*设置页大小*/ query.setMaxResults(pageSize); List<Teacher> teachers = query.list(); for (Teacher t:teachers) { System.out.println(t); } }
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述如何在SpringBoot中整合PageHelper,如何实现带多个条件,以及PageInfo中的属性的中文解释(翻译) 一,jar包 <!-- 分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.3</version> </dependency> 二,注册Configuration插件 package cn.dawn.util; /** * Created by Dawn on 2018/6/24. */ import java.util.Properties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.github.pagehelper.PageHelper; /* * 注册MyBatis分页插件PageHelper */ @Configuration public class MybatisConf { @Bean public PageHelper pageHelper() { System.out.println("MyBatisConfiguration.pageHelper()"); PageHelper pageHelper = new PageHelper(); Properties p = new Properties(); p.setProperty("offsetAsPageNum", "true"); p.setProperty("rowBoundsWithCount", "true"); p.setProperty("reasonable", "true"); pageHelper.setProperties(p); return pageHelper; } } 三,dao层接口 package cn.dawn.mapper; import cn.dawn.entity.Sys_noteDetail; import java.util.List; import java.util.Map; /** * Created by Dawn on 2018/4/16. */ public interface INoteDAO { /*笔记分页查询*/ public List<Sys_noteDetail> getOnePagenoteData(Map<String, Object> map) throws Exception; } 做带条件分页最好是Map,因为特别容易整合智能标签,它的多条件就是Map传进来的 四,dao层xml配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.dawn.mapper.INoteDAO"> <!--分页查询--> <select id="getOnePagenoteData" resultType="cn.dawn.entity.Sys_noteDetail"> SELECT * FROM sys_notedetail <where> <if test="dname!= null and dname!=''"> AND dname LIKE '%' #{dname} '%' </if> <if test="startdate!= null and startdate!=''"> AND dentrytime&gt;=#{startdate} </if> <if test="enddate!= null and enddate!=''"> AND dentrytime&lt;=#{enddate} </if> </where> </select> </mapper> 五,调用PageHelper,真正使用它 package cn.dawn.service.impl; import cn.dawn.entity.Sys_noteDetail; import cn.dawn.mapper.INoteDAO; import cn.dawn.service.INoteService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by Dawn on 2018/4/16. */ @Service("noteServiceImpl") public class NoteServiceImpl implements INoteService{ @Resource(name = "INoteDAO") private INoteDAO iNoteDAO; public PageInfo<Sys_noteDetail> getOnePagenoteData(Integer pageIndex, Integer pageSize, String dname, Date startdate, Date enddate) throws Exception { /*创建分页工具类*/ PageHelper.startPage(pageIndex, pageSize); Map<String,Object> map=new HashMap<String,Object>(); map.put("dname",dname); map.put("startdate",startdate); map.put("enddate",enddate); List<Sys_noteDetail> docs = iNoteDAO.getOnePagenoteData(map); PageInfo<Sys_noteDetail> pageInfo = new PageInfo<>(docs); return pageInfo; } } 六,讲述一下PageInfo,方便调用 //当前页 private int pageNum; //每页的数量 private int pageSize; //当前页的数量 private int size; //由于startRow和endRow不常用,这里说个具体的用法 //可以在页面中"显示startRow到endRow 共size条数据" //当前页面第一个元素在数据库中的行号 private int startRow; //当前页面最后一个元素在数据库中的行号 private int endRow; //总记录数 private long total; //总页数 private int pages; //结果集 private List<T> list; //第一页 private int firstPage; //前一页 private int prePage; //是否为第一页 private boolean isFirstPage = false; //是否为最后一页 private boolean isLastPage = false; //是否有前一页 private boolean hasPreviousPage = false; //是否有下一页 private boolean hasNextPage = false; //导航页码数 private int navigatePages; //所有导航页号 private int[] navigatepageNums; 作者:晨曦Dawn 如果上方博客有错误,或者疑惑,请指出,感激不尽!!!!!!!!!!!!!!!!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本此博客记录一套考试题,随后我把项目以及题目发到github上,简单的说一下springboot的开发 本此考试题用Spring+SpringMVC+MyBatis+SpringBoot+MySQL+Druid+.yml配置文件+thymeleaf模板引擎 我会把大量源码放上来,以及整合需要的注意点,大家可以一会去github上下载观看 项目概览: 一,jar包,pom.xml中的配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>z05springbootmyself_exam</artifactId> <packaging>war</packaging> <name>z05springbootmyself_exam Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency> <!-- 核心依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 可以实现热部署,在IDEA上实现热部署还需一些额外的配置,请查阅资料 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <scope>runtime</scope> </dependency> <!-- JDBC for mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- mybatis --> <!--mybatis--> <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> <!--fastJson--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.12</version> </dependency> <!--druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.18</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version> </dependency> <!--thymeleaf 新的模板引擎,比jsp要出色--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!--jdbc--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- 分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.3</version> </dependency> </dependencies> <build> <finalName>z05springbootmyself_exam</finalName> <!--maven插件--> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <!--xml配置,此是为了将来整合Hibernate或者mybatis 默认没有需要配置 --> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> </resources> </build> </project> pom.xml中的配置 注意点:如果自己工程不是通过官网骨架创建,自己粘的话,小心粘了俩个parent节点,他不会报错,但是在后续就不会下载jar包了 二,数据库脚本,我给一份 DROP TABLE IF EXISTS `air_quality_index`; CREATE TABLE `air_quality_index` ( `id` int(11) NOT NULL AUTO_INCREMENT, `district` varchar(255) NOT NULL, `monitorTime` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP, `pm10` int(255) NOT NULL, `pm25` int(255) NOT NULL, `monitoringStation` varchar(255) NOT NULL, `createDate` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of air_quality_index -- ---------------------------- INSERT INTO `air_quality_index` VALUES ('1', '西城区', '2018-05-22 09:34:05', '243', '176', '灵境胡同监测站', '2018-05-22 10:57:21'); INSERT INTO `air_quality_index` VALUES ('2', '东城区', '2018-05-22 09:34:05', '27', '33', '东四监测站', '2018-05-22 09:34:35'); INSERT INTO `air_quality_index` VALUES ('3', '海淀区', '2018-05-22 09:34:05', '21', '30', '航天桥监测站', '2018-05-22 09:34:35'); INSERT INTO `air_quality_index` VALUES ('4', '丰台区', '2018-05-22 09:34:05', '24333', '17', '七里庄监测站', '2018-05-22 10:55:20'); INSERT INTO `air_quality_index` VALUES ('5', '西城区', '2018-05-22 09:58:03', '100', '1', '北京某地', '2018-06-22 16:41:51'); INSERT INTO `air_quality_index` VALUES ('6', '东城区', '2018-05-22 09:58:03', '22', '22', '山东某地222333', '2018-05-22 10:54:36'); INSERT INTO `air_quality_index` VALUES ('7', '西城区', '2018-05-22 09:58:03', '22', '22', '天津某地', '2018-05-22 10:57:41'); INSERT INTO `air_quality_index` VALUES ('8', '西城区', '2018-05-22 09:58:03', '122', '232', '山东222', '2018-05-22 10:58:59'); INSERT INTO `air_quality_index` VALUES ('9', '0', '2018-05-22 09:58:03', '22', '22', '北京某地', '2018-05-22 11:26:42'); INSERT INTO `air_quality_index` VALUES ('10', '西城区', '2018-05-22 09:58:03', '22', '22', '天津某地', '2018-06-22 16:42:17'); INSERT INTO `air_quality_index` VALUES ('11', '西城区', '2018-05-22 09:58:03', '1', '22', '灵境胡同监测站', '2018-06-22 16:42:50'); 数据库脚本 三,application.yml的配置 server: #端口号 port: 8080 spring: #模板引擎 thymeleaf: prefix: classpath:/templates/ mode: HTML5 cache: false #阿里的druid datasource: name: test url: jdbc:mysql:///exam_air username: root password: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver filters: stat maxActive: 20 initialSize: 1 maxWait: 60000 minIdle: 1 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: select 'x' testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxOpenPreparedStatements: 20 mybatis: #映射的xml文件 mapper-locations: classpath:mapping/*.xml #别名 type-aliases-package: com.happy.entity application.yml配置 注意点:他是一种新的模板,yml不可以使用制表符TAB,它通过空格表示层级关系,同样的节点反复出现会有问题 我在里面配置了tomcat的端口,druid的数据源,以及mybatis的部分配置 四,项目骨架预览 五,thymeleaf模板的创建,他是以.html后缀名结尾的文件 1.主页面: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <link rel="stylesheet" th:href="@{/css/bootstrap.min.css}"> <!--引入js的时候切记 不需要加 springboot的默认文件名称--> <script type="text/javascript" th:src="@{/js/jquery-1.8.3.min.js}"></script> <script type="text/javascript" th:src="@{/js/jquery.pagination.js}"></script> <script type="text/javascript" th:src="@{/js/bootstrap-modal.js}"></script> <script type="text/javascript"> window.onload=function () { $("tr:odd").css("background","pink"); } </script> <title>Title</title> <style type="text/css"> table{ border-collapse: collapse; } </style> </head> <body> <table width="70%" border="1" align="center" id="list"> <caption><h1 style="height: 50px;line-height5:0px;border: 1px">空气质量检测信息库</h1> 按区域查询 <select name="district" id="ourSelect"> <option value="0">不限</option> <option value="西城区">西城区</option> <option value="东城区">东城区</option> <option value="海淀区">海淀区</option> <option value="丰台区">丰台区</option> </select> <input type="button" onclick="myselect()" value="查找"/> <a href="/goAddPage">添加空气质量信息</a> </caption> <thead> <tr class="t_head"> <th>序号</th> <th>区域</th> <th>检测时间</th> <th>PM10数据</th> <th>PM2.5数据局</th> <th>监测站</th> </tr> </thead> <tbody id="list-content"> </tbody> </table> <div class="pagination" id="pagination"></div> <div id="isOK"></div> <script type="text/javascript"> $(function () { $("#update").hide(); }) load(); //默认初始化 /*点击查询的触发事件*/ function load() { $.ajax({ url: "/findAll", type: "post", success: function (data) { //清空数据 $("#list-content").html(''); //追加数据 $.each(data, function (i, dom) { //一个dom就是一个新闻对象 $("#list-content").append("<tr><td>"+ dom.id + "</td><td><a onclick='update("+dom.id+")'>"+dom.district+"</a>" + "</td><td>" + dom.monitorTime + "</td><td>" + dom.pm10 + "</td><td >" + dom.pm25 + "</td><td>"+ dom.monitoringStation+"</td></tr>"); }); $("tr:odd").css("background","pink"); } }); }; function myselect() { $.ajax({ url: "/selectByCondition", type: "post", data:{"district":$("#ourSelect").val()}, success: function (data) { //清空数据 $("#list-content").html(''); //追加数据 $.each(data, function (i, dom) { //一个dom就是一个新闻对象 $("#list-content").append("<tr><td>"+ dom.id + "</td><td><a onclick='update("+dom.id+")'>"+dom.district+"</a>" + "</td><td>" + dom.monitorTime + "</td><td>" + dom.pm10 + "</td><td >" + dom.pm25 + "</td><td>"+ dom.monitoringStation+"</td></tr>"); }); $("tr:odd").css("background","pink"); } }); }; function update(id) { $("#update").show(); $("#list").hide(); $.ajax({ url:'/goUpdatePage', type:"post", data:{"id":id}, success:function(data){ $("[name=id]").val(data.id); $("[name=district]").val(data.district); $("[name=monitorTime]").val(data.monitorTime); $("[name=pm10]").val(data.pm10); $("[name=pm25]").val(data.pm25); $("[name=monitoringStation]").val(data.monitoringStation); } }); } </script> <center> <div id="update"> <h2>空气质量信息维护页面</h2> <form method="post" action="/updateAir"> <input type="hidden" name="id"/> <p>监测区域: <select name="district"> <option value="0">不限</option> <option value="西城区">西城区</option> <option value="东城区">东城区</option> <option value="海淀区">海淀区</option> <option value="丰台区">丰台区</option> </select></p> <p>监测日期: <input type="text" name="monitorTime" /></p> <p>PM10值: <input type="text" name="pm10" /></p> <p>PM2.5值: <input type="text" name="pm25" /></p> <p>监测站: <input type="text" name="monitoringStation"/></p> <input type="submit" value="更新"/> <input type="button" onclick="javascript:$('#list').show();$('#update').hide()" value="返回"/> </form> </div> </center> </body> </html> main.html 2.添加页面: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" th:src="@{/js/jquery-1.8.3.min.js}"></script> <style type="text/css"> #box{ width:30%; margin: 0px auto; } </style> <script type="text/javascript"> function checkInfo() { var district=$("[name=district]").val(); var monitorTime=$("[name=monitorTime]").val(); var pm10temp=$("[name=pm10]").val(); var pm10=parseInt(pm10temp); var pm25temp=$("[name=pm25]").val(); var pm25=parseInt(pm25temp); var monitoringStation=$("[name=monitoringStation]").val(); if(monitorTime==""){ alert("检测时间不能为空"); return false; } if(pm10temp==""){ alert("pm10的值不能为空"); return false; } var reg=/^\d+$/; if(!reg.test(pm10)){ alert('pm10只能为正整数'); return false; } if(pm25temp==""){ alert("pm25不能为空"); return false; } if(monitoringStation==""){ alert("监测站不能为空"); return false; } if(district=="不限"){ alert("监测区域不能选择不限"); return false; } return true; } $(function () { $("#form1").submit(function () { return checkInfo(); }); }); </script> </head> <body> <div id="box"> <h2>添加空气质量信息</h2> <form id="form1" method="post" action="/addAir"> <p>监测区域: <select name="district"> <option value="不限">不限</option> <option value="西城区">西城区</option> <option value="东城区">东城区</option> <option value="海淀区">海淀区</option> <option value="丰台区">丰台区</option> </select></p> <p>监测日期: <input type="text"name="monitorTime"/></p> <p>PM10值: <input type="text"name="pm10"/></p> <p>PM2.5值: <input type="text"name="pm25"/></p> <p>监测站: <input type="text"name="monitoringStation"/></p> <input type="submit" value="提交"/> </form> </div> <script type="text/javascript"> </script> </body> </html> addAir.html 3.修改页面: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" th:src="@{/js/jquery-1.8.3.min.js}"></script> <style type="text/css"> #box{ width:30%; margin: 0px auto; } </style> <script type="text/javascript"> </script> </head> <body> <div id="box"> <h2>空气质量信息维护页面</h2> <form method="post" action="/updateAir"> <input type="hidden" name="id" value="${air.id}"/> <p>监测区域: <select name="district"> <option value="0">不限</option> <option value="西城区">西城区</option> <option value="东城区">东城区</option> <option value="海淀区">海淀区</option> <option value="丰台区">丰台区</option> </select></p> <p>监测日期: <input type="text"value="${air.monitorTime}"/></p> <p>PM10值: <input type="text"value="${air.pm10}"/></p> <p>PM2.5值: <input type="text"value="${air.pm25}"/></p> <p>监测站: <input type="text"value="${air.monitoringStation}"/></p> <input type="submit" value="更新"/> <input type="button" value="返回"/> </form> </div> <script type="text/javascript"> </script> </body> </html> updateAir.html 注意点:他是一种新的模板,与jsp写法有不同,展示数据的方式,引用js,css都不太一样,也不同与EL,JSTL,需要摸索 它的核心th <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> 六,实体类 package cn.happy.entity; import cn.happy.util.JsonDateSerializer; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; public class AirModel { private Integer id; private String district; @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss") @JsonSerialize(using = JsonDateSerializer.class) /*处理日期格式*/ private Date monitorTime; private Integer pm10; private Integer pm25; private String monitoringStation; private Date createDate; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getDistrict() { return district; } public void setDistrict(String district) { this.district = district; } public Date getMonitorTime() { return monitorTime; } public void setMonitorTime(Date monitorTime) { this.monitorTime = monitorTime; } public Integer getPm10() { return pm10; } public void setPm10(Integer pm10) { this.pm10 = pm10; } public Integer getPm25() { return pm25; } public void setPm25(Integer pm25) { this.pm25 = pm25; } public String getMonitoringStation() { return monitoringStation; } public void setMonitoringStation(String monitoringStation) { this.monitoringStation = monitoringStation; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } } AirModel 注意点:日期类型处理格式 @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss") @JsonSerialize(using = JsonDateSerializer.class) /*处理日期格式*/ private Date monitorTime; 七,工具类---就是处理日期格式的那个工具类 package cn.happy.util; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; public class JsonDateSerializer extends JsonSerializer<Date> { private SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override public void serialize(Date date, JsonGenerator gen, SerializerProvider provider) throws IOException, JsonProcessingException { String value = dateFormat.format(date); gen.writeString(value); } } JsonDateSerializer 八,Dao层 1.接口: package cn.happy.mapper; import cn.happy.entity.AirModel; import java.util.List; import java.util.Map; public interface IAirDAO { //查询所有 public List<AirModel> findAll() throws Exception; //添加 public int addAir(AirModel model) throws Exception; //修改 public int updateAir(AirModel model) throws Exception; //按条件查询 public List<AirModel> findAirByCondition(Map<String,Object> map) throws Exception; //根据编号查询对象的方法 public AirModel selectOneById(Integer id) throws Exception; } dao层接口 注意:他是一个普通的接口,没有注解是因为我在别处配置了一道,在yml有配置,在启动的那个main方法上面也有一道配置 2.dao层的xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="cn.happy.mapper.IAirDAO" > <!--01.查询所有记录--> <select id="findAll" resultType="cn.happy.entity.AirModel"> select * from air_quality_index </select> <insert id="addAir"> insert into air_quality_index(district,monitorTime,pm10,pm25,monitoringStation,createDate) values(#{district},#{monitorTime},#{pm10},#{pm25},#{monitoringStation},now()) </insert> <!--修改--> <update id="updateAir"> update air_quality_index set district=#{district},monitorTime=#{monitorTime},pm10=#{pm10},pm25=#{pm25},monitoringStation=#{monitoringStation},createDate=now() where id=#{id} </update> <!--按条件查询--> <select id="findAirByCondition" resultType="cn.happy.entity.AirModel"> select * from air_quality_index <where> <if test='district!="0"'> district=#{district} </if> </where> </select> <!--查询单项--> <select id="selectOneById" resultType="cn.happy.entity.AirModel"> select * from air_quality_index where id=#{id} </select> </mapper> dao的映射xml 注意:命名空间,别名 还有那个智能标签if test里面的写法 直接传的String类型他会报错,说没有getString的方法,所以用map往里传参数 假如test='address!=0',他会报错,说不可以转换为数字,故写为test='address!="0"'即可 九,service层: 1.接口: package cn.happy.service; import cn.happy.entity.AirModel; import java.util.List; public interface IAirService { //查询所有 public List<AirModel> findAll() throws Exception; //添加 public int addAir(AirModel model) throws Exception; //修改 public int updateAir(AirModel model) throws Exception; //按条件查询 public List<AirModel> findAirByCondition(String district) throws Exception; //根据编号查询对象的方法 public AirModel selectOneById(Integer id) throws Exception; } IAirService 2.实现类: package cn.happy.service.impl; import cn.happy.entity.AirModel; import cn.happy.mapper.IAirDAO; import cn.happy.service.IAirService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; @Service("airService") public class AirServiceImpl implements IAirService { @Resource(name = "IAirDAO") private IAirDAO dao; @Override public List<AirModel> findAll() throws Exception { return dao.findAll(); } @Override @Transactional public int addAir(AirModel model) { try { return dao.addAir(model); } catch (Exception e) { e.printStackTrace(); return 0; } } @Override public int updateAir(AirModel model) throws Exception { return dao.updateAir(model); } @Override public List<AirModel> findAirByCondition(String district) throws Exception { Map<String,Object> map=new HashMap<String,Object>(); map.put("district",district); return dao.findAirByCondition(map); } @Override public AirModel selectOneById(Integer id) throws Exception { return dao.selectOneById(id); } } AirServiceImpl 注意点:和普通的SSM注解开发没有什么太大的区别,值得注意的是事务的运用,需要在main那边开启一道配置 十,controller层: package cn.happy.controller; import cn.happy.entity.AirModel; import cn.happy.service.IAirService; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.validation.constraints.FutureOrPresent; import java.util.List; @Controller public class FirstController { //植入Service @Resource(name = "airService") private IAirService myAirService; @RequestMapping("/goHome") public String getHome(){ return "main"; } @RequestMapping("/findAll") @ResponseBody public Object findAll() throws Exception { List<AirModel> list = myAirService.findAll(); return list; } @RequestMapping("/goAddPage") public String goAddPage(){ return "addAir"; } //添加数据 @RequestMapping("/addAir") public String addAir(AirModel model, Model modelData) throws Exception { int count = myAirService.addAir(model); if (count>0){ return "redirect:goHome"; }else{ modelData.addAttribute("erroMsg","添加失败"); return "redirect:goHome"; } } @RequestMapping("/goUpdatePage") @ResponseBody public Object goUpdatePage(int id) throws Exception { AirModel air = myAirService.selectOneById(id); return air; } @RequestMapping("/updateAir") public String updateAir(AirModel model) throws Exception { int count = myAirService.updateAir(model); return "redirect:goHome"; } //按条件查询 @RequestMapping("selectByCondition") @ResponseBody public Object selectByCondition(String district) throws Exception { List<AirModel> list = myAirService.findAirByCondition(district); return list; } } FirstController 普普通通,做过SSM的发现,没什么不同 十一,SpringBoot核心启动类的配置 package cn.happy; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication //扫描mapper映射 @MapperScan("cn.happy.*") /*开启事务*/ @EnableTransactionManagement public class ExamApplication { public static void main(String[] args) { SpringApplication.run(ExamApplication.class, args); } } 注意点:开启事务和mybatis的扫描 十二,可以启动项目和调试了 注意: 我没仔细讲js,css,logback,logback就普通配置,无关紧要,css,js放在static下面即可,引入方式可以参考案例,我引用了一个bootstrap的js,这无关紧要,不影响,只需要jquery即可 作者:晨曦Dawn 转载请注明出处,地址:https://www.cnblogs.com/DawnCHENXI/p/9221212.html github地址:(一会上传完成之后,发出来) 如果上方博客有错误或者疑惑,请指出,感激不敬!!!!!!!!!!!!!!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 上篇博客讲了,如何创建SpringBoot工程,所以,我本篇博客讲述,如何跑起来自己的第一个案例 1.准备一个类,让他成为控制器,Controller,springboot的web项目默认就有与springmvc集成,所以,往下看 package cn.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; /** * Created by Dawn on 2018/6/24. */ @RestController /*@RestController有点像@ResponseBody+@Controller,他这个控制器下的所有,都是返回json串*/ public class FirstController { @RequestMapping("/sayHello") public String sayHello(){ return "sayHi"; } } 2.运行项目创建就有的那个类的main方法,他就可以启动springboot自己默认集成的tomcat服务器 3.如果成功之后,就可以正常访问,通过类似http://localhost:8080/你刚才的requestmappring的路径 8080是tomcat默认端口号,如果要改的话,只需要在application.properties中加一行即可 #tomcat server.port=19090
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 创建SpringBoot工程有很多种方式,我只讲俩种最为常见的 一,依托springboot官网提供的模板。(好处:简单,最新版本) 二,从一个Maven项目中拓展成springboot。(好处:可以控制版本,离线创建) 开始案例 一,通过官网骨架 1.开始创建 2.Next 3.Next 4.Next 5.finish 项目骨架如下 二,通过maven 在第一次通过官网创建过后,我们的maven库里已经有了一个版本的springboot,没有必要每次都下最新版本的,所以,我们可以通过maven仓库创建离线版本 1.正常的maven webapp项目的创建 2.在pom文件中将springboot的节点粘过来 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.dawn</groupId> <artifactId>z01springbootmyself</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>Z01SpringBootMyself</name> <description>Demo project for Spring Boot</description> <!--springboot的核心--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!--jdk和编码--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <!--web工程需要的--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--单测需要的--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <!--maven的插件--> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 3.按照springboot的骨架创建java,resourse等,上面那张图所示
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 所谓热部署,就是在项目启动中,修改class类中做的修改操作,无需重新启动项目,就可以变更,在网页展示中有直接变更 首先idea需要三步骤: 热部署对于idea比较特殊,jar包+properties/yml的配置还不够,还需要改idea的设置 一,jar包依赖: <!--热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> 版本号,作用域那些都不需要管 二,setting配置1: 三,idea设置2: 首先Shift+Ctrl+A快捷键,输入Registry 进入之后,将下图展示的勾挂上 之后重新启动项目,就可以实现热部署 如果上述操作有错误,或者有疑问,可以联系我,帮到朋友是我的荣幸
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 我把pom文件,以及它的详细解释发出来 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!--model的版本--> <modelVersion>4.0.0</modelVersion> <!--创建的时候group的包名--> <groupId>cn.dawn</groupId> <!--创建时候指定的名字--> <artifactId>z03springbootmyself_ssm</artifactId> <!--版本号,snapshot 是快照--> <version>0.0.1-SNAPSHOT</version> <!--一会用maven打包项目的方式,jar或者war--> <packaging>jar</packaging> <!--指定的名字--> <name>z03springbootmyself_ssm</name> <!--你对项目的描述--> <description>Demo project for Spring Boot</description> <!--spring-boot-starter-parent:包含了大量配置好的依赖管理, 在自己项目添加这些依赖的时候不需要写<version>版本号--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!--jdk和编码--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <!--jar包目录--> <dependencies> <!--由于创建的是springboot下的web项目,所以,默认会有这个--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--单测--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <!--xml配置,此是为了将来整合Hibernate或者mybatis 默认没有需要配置 --> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.*</include> </includes> </resource> </resources> <!--maven的插件,可以用很多的maven功能--> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- SpringBoot: Spring Boot可以轻松创建独立的,生产级的基于Spring的应用程序,您可以“运行”。 SpringBoot对Spring平台和第三方库有自己的看法(就是有特有的操作),所以您可以不用大惊小怪。大多数Spring Boot应用程序只需要很少的Spring配置。 SpringBoot优点:(特征) 创建独立的Spring应用程序直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件)提供斟酌的'starter'依赖关系来简化您的构建配置尽可能自动配置Spring和第三方库提供生产就绪功能,如指标,运行状况检查和外部配置绝对不会生成代码,并且不需要XML配置 以上是从官网翻译来的,我可以谈论一下自己理解,以及对springboot的展望 springboot是极其优秀的框架,他可以解决jar包冲突,可以简化配置,而且极易上手,提供的插件很丰富,很强大,也很出色 springboot从2014年开始,带来的影响力是颠覆性的,我觉得,这个框架只会越来越强,越来越主流
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客会详细讲述Spring中的事务,会展开来用语言解释,用于了解概念和准备面试 事务的概念: 一个或者一组sql语句来完成一个功能!要么都执行,要么都不执行 事务具有的四个特性: ACID特性! 01.原子性:一个事物都是一个不可分割的单位!所有的操作 要么都执行,要么都不执行! 02.一致性:事务必须是数据库从一个一致性的状态到达另一个一致性的状态! 03.隔离性:一个事务的执行不会被其他的事务干扰!事务之间相互独立! 04.持久性:事务一旦被提交!这个操作对数据库来说是永久性的! Spring的事务管理: 事务本事是数据库中的概念! 按理说应该在数据访问层(dao)! 绝大多数的情况下,我们是把事务 提升到 业务逻辑层! 01.使用spring的事务代理工厂 来 管理事务! 02.使用spring的注解 来 管理事务! 常用 03.使用AspectJ的AOP配置 来 管理事务! 常用 需要掌握的两个属性名: isolation:事务的隔离级别! 01.default:采用数据库默认的事务隔离级别 001.mysql ---》repeatable-read 002.oracle---》read_committed 02. repeatable-read:可重复读取!解决了脏读,不可重复读,没解决幻读! 03. read_committed:读已提交! 解决了脏读,没解决不可重复读,幻读! 04. read_uncommitted:读未提交!什么都没有解决! 05. serializable:串行化!级别最高!效率最低!不存在并发的问题! propagation: 事务的传播行为:一共7中方式! 01.required:是spring默认的事务传播行为! 指定的方法必须在事务中执行!如果没有事务,则会自动创建一个事务! 02.supports:有事务就在事务环境下执行,没有事务就直接执行! 03.mandatory: 指定的方法必须在事务中执行!如果没有事务,则抛出异常! 04.requires_new:总是新创建一个事务! 如果当前方法存在事务,则把当前的事务挂起,直到新创建的事务执行完毕后执行! 05.not_supported:指定的方法不能在事务中执行!如果当前方法存在事务,则把当前的事务挂起! 06.never:指定的方法不能在事务中执行!如果当前方法存在事务,则抛出异常! 07.nested:指定的方法必须在事务内执行! 如果执行的方法没有事务,则会创建一个事务! 如果执行的方法没有事务,则会嵌套执行! timeout_default:定义了事务默认的超时时间! Spring事务管理的接口:PlatformTransactionManager 常用的两个实现类: 01.使用jdbc和MyBatis时 使用DataSourceTrancationManager 02.使用hibernate时 使用HibernateTrancationManager Spring事务回滚的方式: 默认的回滚方式--》发生运行时异常回滚!发送受查异常时提交! 受查异常肯定需要我们手动的设置回滚方式! 运行时异常严重!一旦发生,JVM中止执行! 实现自定义异常类!RuntimeException --> Exception ---> Throwable
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述Hibernate中的二级缓存的配置,作者将使用的是ehcache缓存 一,目录 1.二级缓存的具体配置 1.1 jar包的引用和注意事项 1.2 ehcache.xml的配置 1.3 集成到hibernate.cfg.xml 1.4 需要使用二级缓存的 XXXX.hbm.xml中的配置 2.二级缓存的测试方法 2.1 测试是否配通,二级缓存存在性的证明 2.2 在二级缓存中设置readonly 2.3 设置二级缓存的模式 二,二级缓存的具体配置 1.jar包的引用和注意事项(我合起来了,用的话打开) <!--Hibernate的核心jar--> <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.12.Final</version> </dependency> <!--配置需要的ehcahe插件--> <!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache --> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.10.4</version> </dependency> <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-ehcache --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>5.2.12.Final</version> </dependency> ehcache需要的jar节点 注意事项:注意hibernate的核心jar和hibernate-ehcache的jar版本号尽可能的保持一致,还有如果使用高版本的hibernate的话ehcache版本太低不合适 hibernate的jar包版本在4.0之前和之后有一个本质的区别,就是配置的区别,我会在后面配置到的时候会讲的 2.ehcache.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <ehcache> <!-- 默认的临时文件--> <diskStore path="java.io.tmpdir"/> <!-- maxElementsInMemory:在内存中对象最大保存数量 eternal:是否永久不销毁 timeToIdleSeconds:最大空闲时间 timeToLiveSeconds:最大存活时间 overflowToDisk:内存溢出是否保存到磁盘 memoryStoreEvictionPolicy 缓存清理策略 1 FIFO first in first out ,先进先出 2 LFU Less Frequently Used ,最少被使用的 2 LRU Least Recently Used ,最近最少使用的,缓存的元素有一个时间戳, 当缓存容量满了,而又需要腾出地方来缓存新的元素的时候, 那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。 --> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" memoryStoreEvictionPolicy="LRU" /> </ehcache> 3.集成到hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!--jdbc连接四要素--> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///y2167</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property> <!--在控制台上展示sql--> <property name="show_sql">true</property> <!--格式化sql--> <!--<property name="format_sql">true</property>--> <!--====================================================================--> <!--ddl操作生成策咯,每次运行都在原有表上修改,没有的话就创建表--> <!-- <property name="hbm2ddl.auto"></property> key - hbm2ddl.auto:自动生成表结构策略 value - update(使用最多):当数据库不存在表时,hibernate启动后会自动生成表结构。 当数据库表存在时,如果一样,则只会写入数据,不会改变表结构。 当数据库表存在时,如果不一样,则会修改表结构,原有的表结构不会改变。 create(很少):无论表结构是否存在,hibernate启动后都会重新生成表结构。(造成之前的数据丢失) create-drop(极少):无论表结构是否存在,hibernate启动都会重新生成表结构。并且hibernate关闭后,表结构会被删除。来无影去无踪。 validate(很少):不会创建表结构,不会修改表结构。校验与数据库中的表结构是否一样,如果不一样则报异常。 --> <property name="hbm2ddl.auto">update</property> <!--重点关注此处!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!--> <!--开启hibernate需要的2级缓存--> <!-- 开启二级缓存 --> <property name="hibernate.cache.use_second_level_cache">true</property> <!-- 开启查询缓存 --> <property name="hibernate.cache.use_query_cache">true</property> <!-- 高速缓存提供程序 --> <!-- Hibernate4.0 以前使用该设置<prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.SingletonEhCacheProvider</prop>--> <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory</property> <!--重点关注此处!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!--> <!--使用getCurrentSession()需要配置此标签--> <property name="current_session_context_class">thread</property> <!--与小配置文件映射--> <mapping resource="cn/dawn/day05/dao/Dept.hbm.xml"></mapping> <mapping resource="cn/dawn/day05/dao/Emp.hbm.xml"></mapping> </session-factory> </hibernate-configuration> 正如我上面所展示的,4.0版本之前和之后,配置的方式不同 4.使用到二级缓存的hbm.xml小配置中配置一行代码 <cache usage="read-only"/> 它的位置在class节点下,id节点之前,我把完整的给合起来 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.dawn.day05.entity"> <!--如果上面指定package的话,class的name就不必写全类名--> <!--lazy:是否懒加载(延迟加载) 默认值是true,延迟加载--> <!--<class name="Teacher">--> <!--直接加载--> <class name="Dept" lazy="false"> <!--配置使用2级缓存的策略 usage:使用的缓存清理策略 include:是否缓存延迟加载的对象 01.all:缓存所有对象 02.non-lazy:不缓存延迟加载的对象 --> <cache usage="read-only"/> <!--主键--> <id name="deptId" column="deptId"> <!--主键生成策咯 assigned程序员自己创建--> <!--identity是mysql里的自增,一会做增加操作不必再给主键赋值--> <!--increment是先查最大的主键列,在下一条给主键加一--> <!--sequence是oracle的主键生成策咯,他一会需要指定序列名字<param name="sequence">序列名</param>--> <generator class="assigned"></generator> </id> <property name="name"/> <property name="location"/> <!--table指的是中间表,承载关联关系的表--> <set name="emps" cascade="all" inverse="true"> <key> <!--本类表的id--> <column name="deptNo"/> </key> <!--另外与他有多对多关联的实体类--> <one-to-many class="Emp"/> </set> </class> </hibernate-mapping> hbm.xml中配置cache的位置参考 三,二级缓存的测试方法: 1.测试是否配通,二级缓存存在性的证明 理论就是查一遍,干掉一级缓存,再查一遍,看看sql语句的数量就能明白二级缓存起没起作用 @Test /* * 二级缓存存在性的证明 * 清空一级缓存,看看发几条sql语句 * */ public void t1CheckHasCacheTwo(){ Dept dept = session.get(Dept.class, 1); session.clear(); dept=session.get(Dept.class,1); /* Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? * */ } 2.在二级缓存中设置readonly 对象将不可修改 @Test /* * 验证2级缓存策略 当为usage="read-only"的时候 * * 会引发异常:UnsupportedOperationException: Can't write to a readonly object * 无法修改只读的对象 * */ public void t2ChcheTwoUsageReadOnly(){ Dept dept = session.get(Dept.class, 1); dept.setName("你让我修改一下又不会死"); tr.commit(); /* Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Hibernate: update Dept set name=?, location=? where deptId=? java.lang.UnsupportedOperationException: Can't write to a readonly object * */ } 3.设置二级缓存的模式(setCacheModel) 配置二级缓存的模式,就可以指定他在什么时候起作用 @Test /** * 设置2级缓存的模式 * * NORMAL : 和2级缓存关联,可读可写 * IGNORE : 不和2级缓存关联 * GET : 和2级缓存关联,只读 * PUT : 和2级缓存关联,只写 * REFRESH :和2级缓存关联,只写 * REFRESH可以设置强行和数据库同步 * 在核心配置文件中配置下面的属性即可 * hibernate.cache.use_minimal_puts */ public void t3CacheMode(){ Dept dept = session.get(Dept.class, 1); /*部门信息一条sql*/ session.clear(); /*一级缓存被清除*/ session.setCacheMode(CacheMode.PUT);/*二级缓存只能写不能读取*/ dept = session.get(Dept.class, 1); /*当为PUT的时候,不会查二级缓存了,一级缓存又没有,所以有sql语句查数据库 Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? * */ } 作者:晨曦Dawn 转载请注明出处,博客地址:https://www.cnblogs.com/DawnCHENXI/p/9141734.html 如果上方博客有错误,请您指出,感激不尽!!!!!!!!!!!!!!!!!!!!!!!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲师Hibernate中的Criteria查询! 一,Criteria简介: 刚接触Hibernate的时候,就有一个概念,全自动的ORM框架,不用写SQL语句,但是实际我们还是有了另一个名词HQL,这难道是来搞笑的吗? 其实不然,当你接触到Criteria这个名词的时候,你就知道全自动的魅力了 二,Criteria的优缺点: 优点: 全自动,无需sql,hql,它以Java OOP的思想来操作数据库 使用简单,上手快 缺点: 他对sql语句进行了高级的封装,所以性能不高 对于特别复杂的sql,Criteria无能为力,不过hibernate有sql和hql帮他善后 三,具体使用 我将使用Criteria做 13 个案例,方便大家学习和查阅 1.使用Criteria查询全部 @Test /*查询所有的部门信息*/ public void t1CriteriaSelectAll(){ Criteria criteria = session.createCriteria(Dept.class); List<Dept> depts = criteria.list(); for (Dept dept:depts){ System.out.println(dept); } /* Hibernate: select this_.deptId as deptId1_0_0_, this_.name as name2_0_0_, this_.location as location3_0_0_ from Dept this_ Dept{deptId=1, name='xx部', location='1楼'} Dept{deptId=2, name='研发部', location='2楼'} Dept{deptId=3, name='销售部', location='3楼'} * */ } 2.带条件查询(= 等于的操作) @Test /*带条件查询,查name=研发部的部门信息 * ******************************* * criteria.add(Criterion类型) * Criterion 是一个接口 , 规范 * Restrictions 是一个类, 约束,给我们的查询增加各种条件 * Restrictions所有的方法返回值都是Criterion或者是其实现类,方法的修饰符都是static * */ public void t2CriteriaSelectDeptByParamter(){ Criteria criteria = session.createCriteria(Dept.class); /*加条件*/ criteria.add(Restrictions.eq("name","研发部")); Dept dept = (Dept) criteria.uniqueResult(); System.out.println(dept); /* Hibernate: select this_.deptId as deptId1_0_0_, this_.name as name2_0_0_, this_.location as location3_0_0_ from Dept this_ where this_.name=? Dept{deptId=2, name='研发部', location='2楼'} * */ } 3.带条件查询(> 大于的操作) @Test /*查询薪水大于10k的员工信息*/ public void t3CriteriaSalGt10000(){ Criteria criteria = session.createCriteria(Emp.class); /*加条件*/ criteria.add(Restrictions.gt("sal",10000d)); List<Emp> emps = criteria.list(); for (Emp emp:emps){ System.out.println(emp); } /* Hibernate: select this_.empId as empId1_1_0_, this_.name as name2_1_0_, this_.sal as sal3_1_0_, this_.job as job4_1_0_, this_.deptNo as deptNo5_1_0_ from Emp this_ where this_.sal>? Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Emp{empId=4, name='aaA', job='程序猿1', sal=100000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Emp{empId=5, name='aB', job='程序猿2', sal=50000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Emp{empId=6, name='AC', job='程序猿3', sal=60000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Emp{empId=7, name='AD', job='Boss', sal=5000000.0, dept=null} * */ } 4.带条件查询(between 在俩者之间的操作) @Test /*查询薪水在5k----10k之间的,between*/ public void t4CriteriaSalBetween(){ Criteria criteria = session.createCriteria(Emp.class); /*加条件*/ criteria.add(Restrictions.between("sal",5000d,10000d)); List<Emp> emps = criteria.list(); for (Emp emp:emps){ System.out.println(emp); } /* Hibernate: select this_.empId as empId1_1_0_, this_.name as name2_1_0_, this_.sal as sal3_1_0_, this_.job as job4_1_0_, this_.deptNo as deptNo5_1_0_ from Emp this_ where this_.sal between ? and ? Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Emp{empId=1, name='a', job='财务猿1', sal=10000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=2, name='Ab', job='财务猿2', sal=5000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=3, name='bAa', job='财务猿3', sal=6000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} * */ } 5.查询表关联中一对多,一的一方没有数据的 @Test /*查询没有部门的员工*/ /*查询一的一方没有*/ public void t5CriteriaisNull(){ Criteria criteria = session.createCriteria(Emp.class); /*加条件*/ criteria.add(Restrictions.isNull("dept")); List<Emp> emps = criteria.list(); for (Emp emp:emps){ System.out.println(emp); } /* Hibernate: select this_.empId as empId1_1_0_, this_.name as name2_1_0_, this_.sal as sal3_1_0_, this_.job as job4_1_0_, this_.deptNo as deptNo5_1_0_ from Emp this_ where this_.deptNo is null Emp{empId=7, name='AD', job='Boss', sal=5000000.0, dept=null} * */ } 6.查询表关联中一对多,多的一方没有数据的 @Test /*查询没有员工的部门*/ /*查询多的一方没有*/ public void t6CriteriaisEmpty(){ Criteria criteria = session.createCriteria(Dept.class); /*加条件*/ criteria.add(Restrictions.isEmpty("emps")); List<Dept> depts = criteria.list(); for (Dept dept:depts){ System.out.println(dept); } /* Hibernate: select this_.deptId as deptId1_0_0_, this_.name as name2_0_0_, this_.location as location3_0_0_ from Dept this_ where not exists (select 1 from Emp where this_.deptId=deptNo) Dept{deptId=3, name='销售部', location='3楼'} * */ } 7.查询使用or(就是什么或者什么,只要满足一个即可) @Test /*查询职位是程序猿1或者是财务猿1的员工信息,使用or*/ public void t7CriteriaOr(){ Criteria criteria = session.createCriteria(Emp.class); /*加条件*/ criteria.add(Restrictions.or( Restrictions.eq("job","程序猿1"), Restrictions.eq("job","财务猿1") )); List<Emp> emps = criteria.list(); for (Emp emp:emps){ System.out.println(emp); } /* Hibernate: select this_.empId as empId1_1_0_, this_.name as name2_1_0_, this_.sal as sal3_1_0_, this_.job as job4_1_0_, this_.deptNo as deptNo5_1_0_ from Emp this_ where (this_.job=? or this_.job=?) Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Emp{empId=1, name='a', job='财务猿1', sal=10000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=4, name='aaA', job='程序猿1', sal=100000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} * */ } 8.查询使用in(就是等于 在多个值其中一个的时候 再查询展示) @Test /*查询职位是程序猿1或者是财务猿1的员工信息,使用in*/ public void t8CriteriaIn(){ Criteria criteria = session.createCriteria(Emp.class); /*加条件*/ List<String> jobs=new ArrayList<String>(); jobs.add("程序猿1"); jobs.add("财务猿1"); criteria.add(Restrictions.in("job",jobs)); List<Emp> emps = criteria.list(); for (Emp emp:emps){ System.out.println(emp); } /* Hibernate: select this_.empId as empId1_1_0_, this_.name as name2_1_0_, this_.sal as sal3_1_0_, this_.job as job4_1_0_, this_.deptNo as deptNo5_1_0_ from Emp this_ where this_.job in (?, ?) Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Emp{empId=1, name='a', job='财务猿1', sal=10000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=4, name='aaA', job='程序猿1', sal=100000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} * */ } 9.and操作(可以多个条件) @Test /*这个disjunction()后可以用add来拼接多个条件*/ /*查询职位是程序猿1或者是财务猿1的员工信息, * 查询职务是 程序猿1或者是财务猿1的 员工信息 使用 disJunction * * * Restrictions.disjunction 返回值是一个 DisJunction 类 * DisJunction 类 extends Junction 类 * Junction 类有一个方法叫add()===》criteria.add() * * public Junction add(Criterion criterion) { criteria.add(criterion); return this; } */ public void t9CriteriaAdd(){ Criteria criteria = session.createCriteria(Emp.class); /*加条件*/ /*.add可以拼接多个条件*/ criteria.add(Restrictions.disjunction().add(Restrictions.eq("job","程序猿1")).add(Restrictions.eq("job","财务猿1"))); List<Emp> emps = criteria.list(); for (Emp emp:emps){ System.out.println(emp); } /* Hibernate: select this_.empId as empId1_1_0_, this_.name as name2_1_0_, this_.sal as sal3_1_0_, this_.job as job4_1_0_, this_.deptNo as deptNo5_1_0_ from Emp this_ where (this_.job=? or this_.job=?) Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Emp{empId=1, name='a', job='财务猿1', sal=10000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=4, name='aaA', job='程序猿1', sal=100000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} * */ } 10.模糊查询like(或者ilike) @Test /** * like 和 ilike的区别 * * like 模糊查询 * ilike 模糊并且忽略大小写查询 * * MatchMode: 我们的value值出现的位置 * anywhere: 前后 * start: 前 * end: 后 */ public void t10CriteriaLike(){ Criteria criteria = session.createCriteria(Emp.class); /*加条件*/ /*.add可以拼接多个条件*/ criteria.add(Restrictions.like("name","b", MatchMode.END)); List<Emp> emps = criteria.list(); for (Emp emp:emps){ System.out.println(emp); } /* Hibernate: select this_.empId as empId1_1_0_, this_.name as name2_1_0_, this_.sal as sal3_1_0_, this_.job as job4_1_0_, this_.deptNo as deptNo5_1_0_ from Emp this_ where this_.name like ? Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Emp{empId=2, name='Ab', job='财务猿2', sal=5000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=5, name='aB', job='程序猿2', sal=50000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} * */ } 11.聚合函数(avg(),sum(),count(),max(),min()这些) @Test /** * 聚合函数 * setProjection 需要我们传递一个Projection * Projections类中的所有方法返回值都是Projection或者其实现类 * 如果设值之后,没有清空,那么之前的参数会被带入下次的查询! */ public void t11CriteriaProjectionList(){ Criteria criteria = session.createCriteria(Emp.class); /*加条件*/ /*.add可以拼接多个条件*/ criteria.setProjection(Projections.projectionList() .add(Projections.max("sal")) .add(Projections.min("sal")) .add(Projections.avg("sal")) .add(Projections.sum("sal")) ); List<Object[]> list = criteria.list(); for (Object[] o:list){ System.out.println("最高薪水:"+o[0]); System.out.println("最低薪水:"+o[1]); System.out.println("平均薪水:"+o[2]); System.out.println("总薪水:"+o[3]); } /* Hibernate: select max(this_.sal) as y0_, min(this_.sal) as y1_, avg(this_.sal) as y2_, sum(this_.sal) as y3_ from Emp this_ 最高薪水:5000000.0 最低薪水:5000.0 平均薪水:747285.7142857143 总薪水:5231000.0 * */ } 12.带条件的分页+降序排(使用Criteria查询) @Test /* * 查询姓名中包含b的员工,并且按照薪水降序排序 * */ public void t12CriteriaPage(){ int count=((Long)session.createCriteria(Emp.class) .add(Restrictions.ilike("name","b",MatchMode.ANYWHERE)) .setProjection(Projections.count("name")).uniqueResult()).intValue(); System.out.println(count); //设置当前页和页大小 int pageIndex=2; int pageSize=2; //计算总页数 int totalPage=(count%pageSize==0)?(count/pageSize):(count/pageSize+1); //根据薪水进行降序排序 Criteria criteria = session.createCriteria(Emp.class) .add(Restrictions.ilike("name","b",MatchMode.ANYWHERE)) .addOrder(Order.desc("sal")); //设置 起始页和页大小 List<Emp> emps=criteria.setFirstResult((pageIndex-1)*pageSize) .setMaxResults(pageSize).list(); /*遍历*/ for (Emp emp:emps){ System.out.println(emp); } /* Hibernate: select count(this_.name) as y0_ from Emp this_ where lower(this_.name) like ? 3 Hibernate: select this_.empId as empId1_1_0_, this_.name as name2_1_0_, this_.sal as sal3_1_0_, this_.job as job4_1_0_, this_.deptNo as deptNo5_1_0_ from Emp this_ where lower(this_.name) like ? order by this_.sal desc limit ?, ? Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Emp{empId=2, name='Ab', job='财务猿2', sal=5000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} * */ } 四,DetachedCriteria的使用 1.DetachedCriteria和Criteria 的相同与区别 * DetachedCriteria和 Criteria的区别 * 相同点:都能用来 做查询操作 * 不同点: * 01.DetachedCriteria在创建的时候 不需要session! * 02.真正执行查询的时候getExecutableCriteria(session)才使用session * 03.DetachedCriteria自身可以作为一个参数 2.DetacjedCriteria的具体使用案例 @Test /* * DetachedCriteria和 Criteria的区别 * 相同点:都能用来 做查询操作 * 不同点: * 01.DetachedCriteria在创建的时候 不需要session! * 02.真正执行查询的时候getExecutableCriteria(session)才使用session * 03.DetachedCriteria自身可以作为一个参数 * * 薪水 大于 平均值的员工信息 * */ public void t13DetachedCriteria(){ //得到DetachedCriteria对象 DetachedCriteria criteria=DetachedCriteria.forClass(Emp.class) .setProjection(Projections.avg("sal")); /*执行查询*/ double avg=(Double)criteria.getExecutableCriteria(session).uniqueResult(); System.out.println("薪水的平均值是:"+avg); /*薪水大于 平均值的员工信息*/ List<Emp> list=session.createCriteria(Emp.class) .add(Property.forName("sal").gt(criteria)) .list(); for (Emp emp:list){ System.out.println(emp); } /* Hibernate: select avg(this_.sal) as y0_ from Emp this_ 薪水的平均值是:747285.7142857143 Hibernate: select this_.empId as empId1_1_0_, this_.name as name2_1_0_, this_.sal as sal3_1_0_, this_.job as job4_1_0_, this_.deptNo as deptNo5_1_0_ from Emp this_ where this_.sal > (select avg(this_.sal) as y0_ from Emp this_) Emp{empId=7, name='AD', job='Boss', sal=5000000.0, dept=null} * * */ } 作者:晨曦Dawn 转载请注明出处,博客地址:https://www.cnblogs.com/DawnCHENXI/p/9141579.html 如果上方博客有错误,请您指出,感激不尽!!!!!!!!!!!!!!!!!!!!!!!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述命名查询,所谓命名查询是什么呢? Hibernate中允许我们在xml,实体类,甚至注解的方式来编写查询语句,本篇博客将讲述xml中的方式 一,准备好准备工作,我由于上篇博客把大量的准备都做好,所以,本篇从简 二,预览hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.dawn.day05.entity"> <!--如果上面指定package的话,class的name就不必写全类名--> <!--lazy:是否懒加载(延迟加载) 默认值是true,延迟加载--> <!--<class name="Teacher">--> <!--直接加载--> <class name="Emp" lazy="false"> <!--主键--> <id name="empId" column="empId"> <!--主键生成策咯 assigned程序员自己创建--> <!--identity是mysql里的自增,一会做增加操作不必再给主键赋值--> <!--increment是先查最大的主键列,在下一条给主键加一--> <!--sequence是oracle的主键生成策咯,他一会需要指定序列名字<param name="sequence">序列名</param>--> <generator class="assigned"></generator> </id> <property name="name"/> <property name="sal"/> <property name="job"/> <!--table指的是中间表,承载关联关系的表--> <!--另外与他有多对多关联的实体类--> <many-to-one name="dept" column="deptNo" class="Dept"/> </class> <!--hql--> <!--HQL命名查询--> <query name="getAllEmps"> <!--这个符号表示不编译关键字,比如大于号小于号等--> <![CDATA[ from Emp ]]> </query> <!--SQL命名查询,返回的是一个Object数据--> <sql-query name="getAllEmpsBySql"> <!--这个符号表示不编译关键字,比如大于号小于号等--> <![CDATA[ select * from emp ]]> </sql-query> <!--查询中携带条件--> <sql-query name="getAllEmpById"> <!--这个符号表示不编译关键字,比如大于号小于号等--> <![CDATA[ select * from emp where empId=:id ]]> </sql-query> <!--查询返回一个对象--> <sql-query name="getEmpObject"> <return-scalar column="empId"/> <return-scalar column="name"/> <return-scalar column="sal"/> <return-scalar column="job"/> <!--但是无法绑定关联对象--> <!--这个符号表示不编译关键字,比如大于号小于号等--> <![CDATA[ select * from emp where empId=:id ]]> </sql-query> </hibernate-mapping> 三,查全部使用HQL语句(用命名查询) 1.在xml中使用到的方法是这个: <!--hql--> <!--HQL命名查询--> <query name="getAllEmps"> <!--这个符号表示不编译关键字,比如大于号小于号等--> <![CDATA[ from Emp ]]> </query> 此处需要注意的就是<![CDATA[ ]]>这个标签,它表示不以关键字的形式编译里面的字符,例如<小于号在xml不以尖括号的形式编译 2.单测方法: @Test /*HQL命名查询*/ public void t1HQLnamedquery(){ List<Emp> emps = session.getNamedQuery("getAllEmps").list(); for (Emp emp:emps){ System.out.println(emp); } /* Hibernate: select emp0_.empId as empId1_1_, emp0_.name as name2_1_, emp0_.sal as sal3_1_, emp0_.job as job4_1_, emp0_.deptNo as deptNo5_1_ from Emp emp0_ Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Hibernate: select dept0_.deptId as deptId1_0_0_, dept0_.name as name2_0_0_, dept0_.location as location3_0_0_ from Dept dept0_ where dept0_.deptId=? Emp{empId=1, name='a', job='财务猿1', sal=10000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=2, name='Ab', job='财务猿2', sal=5000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=3, name='bAa', job='财务猿3', sal=6000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=4, name='aaA', job='程序猿1', sal=100000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Emp{empId=5, name='aB', job='程序猿2', sal=50000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Emp{empId=6, name='AC', job='程序猿3', sal=60000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Emp{empId=7, name='AD', job='Boss', sal=5000000.0, dept=null} * */ } 四,查全部使用SQL语句(用命名查询) 1.xml中 <!--SQL命名查询,返回的是一个Object数据--> <sql-query name="getAllEmpsBySql"> <!--这个符号表示不编译关键字,比如大于号小于号等--> <![CDATA[ select * from emp ]]> </sql-query> 2.单测方法: @Test /*SQL命名查询,返回的是一个Object数据*/ public void t2HQLnamequeryBySQL(){ List<Object[]> list=session.getNamedQuery("getAllEmpsBySql").list(); for(Object[] emp:list){ System.out.println(emp[0]);//id System.out.println(emp[1]);//name /*System.out.println(emp[2]);//sal*/ } /* Hibernate: select * from emp 1 a 2 Ab 3 bAa 4 aaA 5 aB 6 AC 7 AD * */ } 五,带条件查询(用命名查询,返回的是List<Object[]>) 1.xml中: <!--查询中携带条件--> <sql-query name="getAllEmpById"> <!--这个符号表示不编译关键字,比如大于号小于号等--> <![CDATA[ select * from emp where empId=:id ]]> </sql-query> 2.单测方法: @Test /*查询中携带条件*/ public void t3HQLnamedqueryByParamter(){ List<Object[]> list = session.getNamedQuery("getAllEmpById").setParameter("id", 1).list(); for(Object[] emp:list){ System.out.println(emp[0]);//id System.out.println(emp[1]);//name /*System.out.println(emp[2]);//sal*/ } /* Hibernate: select * from emp where empId=? 1 a * */ } 六,带条件查询,返回的是Object(使用命名查询) 1.xml中: <!--查询返回一个对象--> <sql-query name="getEmpObject"> <return-scalar column="empId"/> <return-scalar column="name"/> <return-scalar column="sal"/> <return-scalar column="job"/> <!--但是无法绑定关联对象--> <!--这个符号表示不编译关键字,比如大于号小于号等--> <![CDATA[ select * from emp where empId=:id ]]> </sql-query> 2.单测方法: @Test /*查询返回一个对象*/ public void t4HQLnamedqueryReturnOneObj(){ Query query = session.getNamedQuery("getEmpObject").setParameter("id", 1); /*把查询出来的结果集转换成指定的对象*/ query.setResultTransformer(Transformers.aliasToBean((Emp.class))); Emp emp = (Emp)query.uniqueResult(); System.out.println(emp); /* Hibernate: select * from emp where empId=? Emp{empId=1, name='a', job='财务猿1', sal=10000.0, dept=null} * */ }
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客将会解释Hibernate中的连接查询(各种join) 一,目录 1.内链接 1.1显式内连接(inner join) 1.1迫切显式内连接(inner join fetch) 2.外连接 2.1左外连接(left join) 2.2迫切左外连接(left join fetch) 2.3以及为什么我们在hibernate中尽量避免使用右外连接,具体的解释 二,准备工作 1.数据库脚本的引用,我把测试需要的数据库的脚本给兄弟们传一下 DROP TABLE IF EXISTS `dept`; CREATE TABLE `dept` ( `deptId` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `location` varchar(255) DEFAULT NULL, PRIMARY KEY (`deptId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*Data for the table `dept` */ insert into `dept`(`deptId`,`name`,`location`) values (1,'xx部','1楼'),(2,'研发部','2楼'),(3,'销售部','3楼'); /*Table structure for table `emp` */ DROP TABLE IF EXISTS `emp`; CREATE TABLE `emp` ( `empId` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `sal` double DEFAULT NULL, `job` varchar(255) DEFAULT NULL, `deptNo` int(11) DEFAULT NULL, PRIMARY KEY (`empId`), KEY `FK110A81763AD08` (`deptNo`), CONSTRAINT `FK110A81763AD08` FOREIGN KEY (`deptNo`) REFERENCES `dept` (`deptId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*Data for the table `emp` */ insert into `emp`(`empId`,`name`,`sal`,`job`,`deptNo`) values (1,'a',10000,'财务猿1',1),(2,'Ab',5000,'财务猿2',1),(3,'bAa',6000,'财务猿3',1),(4,'aaA',100000,'程序猿1',2),(5,'aB',50000,'程序猿2',2),(6,'AC',60000,'程序猿3',2),(7,'AD',5000000,'Boss',NULL); 连接查询需要使用到的sql脚本 2.实体类的创建:值得注意的是toString()需要做手脚,否者就无限递归了 2.1Dept(部门的实体类) package cn.dawn.day05.entity; import java.util.HashSet; import java.util.Set; /** * Created by Dawn on 2018/6/4. */ public class Dept { private Integer deptId; private String name; private String location; /*一个部门对应多个员工*/ private Set<Emp> emps=new HashSet<Emp>(); public Integer getDeptId() { return deptId; } public void setDeptId(Integer deptId) { this.deptId = deptId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public Set<Emp> getEmps() { return emps; } public void setEmps(Set<Emp> emps) { this.emps = emps; } @Override public String toString() { return "Dept{" + "deptId=" + deptId + ", name='" + name + '\'' + ", location='" + location + '\'' + '}'; } } 2.2Emp(员工实体类) package cn.dawn.day05.entity; /** * Created by Dawn on 2018/6/4. */ public class Emp { private Integer empId; private String name; private String job; private Double sal; //多个员工属于一个部门 private Dept dept; public Integer getEmpId() { return empId; } public void setEmpId(Integer empId) { this.empId = empId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public Double getSal() { return sal; } public void setSal(Double sal) { this.sal = sal; } public Dept getDept() { return dept; } public void setDept(Dept dept) { this.dept = dept; } @Override public String toString() { return "Emp{" + "empId=" + empId + ", name='" + name + '\'' + ", job='" + job + '\'' + ", sal=" + sal + ", dept=" + dept + '}'; } } 3.hbm.xml小配置的配置 3.1Dept.hbm.xml的配置 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.dawn.day05.entity"> <!--如果上面指定package的话,class的name就不必写全类名--> <!--lazy:是否懒加载(延迟加载) 默认值是true,延迟加载--> <!--<class name="Teacher">--> <!--直接加载--> <class name="Dept" lazy="false"> <!--主键--> <id name="deptId" column="deptId"> <!--主键生成策咯 assigned程序员自己创建--> <!--identity是mysql里的自增,一会做增加操作不必再给主键赋值--> <!--increment是先查最大的主键列,在下一条给主键加一--> <!--sequence是oracle的主键生成策咯,他一会需要指定序列名字<param name="sequence">序列名</param>--> <generator class="assigned"></generator> </id> <property name="name"/> <property name="location"/> <!--table指的是中间表,承载关联关系的表--> <set name="emps" cascade="all" inverse="true"> <key> <!--本类表的id--> <column name="deptNo"/> </key> <!--另外与他有多对多关联的实体类--> <one-to-many class="Emp"/> </set> </class> </hibernate-mapping> 3.2Emp.hbm.xml小配置的配置 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.dawn.day05.entity"> <!--如果上面指定package的话,class的name就不必写全类名--> <!--lazy:是否懒加载(延迟加载) 默认值是true,延迟加载--> <!--<class name="Teacher">--> <!--直接加载--> <class name="Emp" lazy="false"> <!--主键--> <id name="empId" column="empId"> <!--主键生成策咯 assigned程序员自己创建--> <!--identity是mysql里的自增,一会做增加操作不必再给主键赋值--> <!--increment是先查最大的主键列,在下一条给主键加一--> <!--sequence是oracle的主键生成策咯,他一会需要指定序列名字<param name="sequence">序列名</param>--> <generator class="assigned"></generator> </id> <property name="name"/> <property name="sal"/> <property name="job"/> <!--table指的是中间表,承载关联关系的表--> <!--另外与他有多对多关联的实体类--> <many-to-one name="dept" column="deptNo" class="Dept"/> </class> </hibernate-mapping> 4.hibernate.cfg.xml这个Hibernate核心配置的配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!--jdbc连接四要素--> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///y2167</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property> <!--在控制台上展示sql--> <property name="show_sql">true</property> <!--格式化sql--> <!--<property name="format_sql">true</property>--> <!--====================================================================--> <!--ddl操作生成策咯,每次运行都在原有表上修改,没有的话就创建表--> <!-- <property name="hbm2ddl.auto"></property> key - hbm2ddl.auto:自动生成表结构策略 value - update(使用最多):当数据库不存在表时,hibernate启动后会自动生成表结构。 当数据库表存在时,如果一样,则只会写入数据,不会改变表结构。 当数据库表存在时,如果不一样,则会修改表结构,原有的表结构不会改变。 create(很少):无论表结构是否存在,hibernate启动后都会重新生成表结构。(造成之前的数据丢失) create-drop(极少):无论表结构是否存在,hibernate启动都会重新生成表结构。并且hibernate关闭后,表结构会被删除。来无影去无踪。 validate(很少):不会创建表结构,不会修改表结构。校验与数据库中的表结构是否一样,如果不一样则报异常。 --> <property name="hbm2ddl.auto">update</property> <!--使用getCurrentSession()需要配置此标签--> <property name="current_session_context_class">thread</property> <!--与小配置文件映射--> <mapping resource="cn/dawn/day05/dao/Dept.hbm.xml"></mapping> <mapping resource="cn/dawn/day05/dao/Emp.hbm.xml"></mapping> </session-factory> </hibernate-configuration> 三,显式内连接(inner join) @Test /*内连接*/ /*返回的是Object[]数组,只有6条数据*/ public void t1innerjoin(){ String hql="from Emp e inner join e.dept"; List<Object[]> list = session.createQuery(hql).list(); for(Object[] o:list){ System.out.println(o[0]);//Emp对象 System.out.println(o[1]);//Dept对象 } /* Hibernate: alter table Emp add constraint FK42q0wt6tw3e1tcygsbj6pexh foreign key (deptNo) references Dept (deptId) Hibernate: select emp0_.empId as empId1_1_0_, dept1_.deptId as deptId1_0_1_, emp0_.name as name2_1_0_, emp0_.sal as sal3_1_0_, emp0_.job as job4_1_0_, emp0_.deptNo as deptNo5_1_0_, dept1_.name as name2_0_1_, dept1_.location as location3_0_1_ from Emp emp0_ inner join Dept dept1_ on emp0_.deptNo=dept1_.deptId Emp{empId=1, name='a', job='财务猿1', sal=10000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Dept{deptId=1, name='xx部', location='1楼'} Emp{empId=2, name='Ab', job='财务猿2', sal=5000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Dept{deptId=1, name='xx部', location='1楼'} Emp{empId=3, name='bAa', job='财务猿3', sal=6000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Dept{deptId=1, name='xx部', location='1楼'} Emp{empId=4, name='aaA', job='程序猿1', sal=100000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Dept{deptId=2, name='研发部', location='2楼'} Emp{empId=5, name='aB', job='程序猿2', sal=50000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Dept{deptId=2, name='研发部', location='2楼'} Emp{empId=6, name='AC', job='程序猿3', sal=60000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Dept{deptId=2, name='研发部', location='2楼'} * */ } 四,迫切显式内连接(inner join fetch) @Test /*迫切内连接*/ /*返回的是Object,只有6条数据*/ public void t2innerjoinFetch(){ String hql="from Emp e inner join fetch e.dept"; List<Emp> list = session.createQuery(hql).list(); for(Emp e:list){ System.out.println(e);//Emp对象 } /* Hibernate: select emp0_.empId as empId1_1_0_, dept1_.deptId as deptId1_0_1_, emp0_.name as name2_1_0_, emp0_.sal as sal3_1_0_, emp0_.job as job4_1_0_, emp0_.deptNo as deptNo5_1_0_, dept1_.name as name2_0_1_, dept1_.location as location3_0_1_ from Emp emp0_ inner join Dept dept1_ on emp0_.deptNo=dept1_.deptId Emp{empId=1, name='a', job='财务猿1', sal=10000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=2, name='Ab', job='财务猿2', sal=5000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=3, name='bAa', job='财务猿3', sal=6000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=4, name='aaA', job='程序猿1', sal=100000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Emp{empId=5, name='aB', job='程序猿2', sal=50000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Emp{empId=6, name='AC', job='程序猿3', sal=60000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} * */ } 五,左外连接(left join) @Test /*左外连接*/ /*返回的是Object[]数组,有7条数据,多出来一条,以Emp表为准*/ public void t3leftjoin(){ String hql="from Emp e left join e.dept"; List<Object[]> list = session.createQuery(hql).list(); for(Object[] o:list){ System.out.println(o[0]);//Emp对象 System.out.println(o[1]);//Dept对象 } /* Hibernate: select emp0_.empId as empId1_1_0_, dept1_.deptId as deptId1_0_1_, emp0_.name as name2_1_0_, emp0_.sal as sal3_1_0_, emp0_.job as job4_1_0_, emp0_.deptNo as deptNo5_1_0_, dept1_.name as name2_0_1_, dept1_.location as location3_0_1_ from Emp emp0_ left outer join Dept dept1_ on emp0_.deptNo=dept1_.deptId Emp{empId=1, name='a', job='财务猿1', sal=10000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Dept{deptId=1, name='xx部', location='1楼'} Emp{empId=2, name='Ab', job='财务猿2', sal=5000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Dept{deptId=1, name='xx部', location='1楼'} Emp{empId=3, name='bAa', job='财务猿3', sal=6000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Dept{deptId=1, name='xx部', location='1楼'} Emp{empId=4, name='aaA', job='程序猿1', sal=100000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Dept{deptId=2, name='研发部', location='2楼'} Emp{empId=5, name='aB', job='程序猿2', sal=50000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Dept{deptId=2, name='研发部', location='2楼'} Emp{empId=6, name='AC', job='程序猿3', sal=60000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Dept{deptId=2, name='研发部', location='2楼'} Emp{empId=7, name='AD', job='Boss', sal=5000000.0, dept=null} null * */ } 六,迫切左外连接(left join fetch) @Test /*迫切左外连接*/ /*返回的是Object,有7条数据*/ public void t4leftjoinFetch(){ String hql="from Emp e left join fetch e.dept"; List<Emp> list = session.createQuery(hql).list(); for(Emp e:list){ System.out.println(e);//Emp对象 } /* Hibernate: select emp0_.empId as empId1_1_0_, dept1_.deptId as deptId1_0_1_, emp0_.name as name2_1_0_, emp0_.sal as sal3_1_0_, emp0_.job as job4_1_0_, emp0_.deptNo as deptNo5_1_0_, dept1_.name as name2_0_1_, dept1_.location as location3_0_1_ from Emp emp0_ left outer join Dept dept1_ on emp0_.deptNo=dept1_.deptId Emp{empId=1, name='a', job='财务猿1', sal=10000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=2, name='Ab', job='财务猿2', sal=5000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=3, name='bAa', job='财务猿3', sal=6000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=4, name='aaA', job='程序猿1', sal=100000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Emp{empId=5, name='aB', job='程序猿2', sal=50000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Emp{empId=6, name='AC', job='程序猿3', sal=60000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Emp{empId=7, name='AD', job='Boss', sal=5000000.0, dept=null} * */ } 七,以及为什么我们在hibernate中尽量避免使用右外连接,具体的解释 以右表为准,返回的左表对象,如果右表有一个null值做关联,那么左表的对象就是null,如果把这个对象直接访问其属性,就会引发空指针异常 所以,我们一般不会使用右外连接 @Test /*迫切右外连接*/ /*返回的是Object,*/ /*hibernate中一般不使用他,不是不能用,而是特别容易出现空指针的异常*/ /*注意观察最后一行查出来的数据,如果我用访问他的属性,这就很难受了*/ /*public void t5rightjoinFetch(){ String hql="from Emp e right join fetch e.dept"; List<Emp> list = session.createQuery(hql).list(); for(Emp e:list){ System.out.println(e);//Emp对象 } *//* Hibernate: select emp0_.empId as empId1_1_0_, dept1_.deptId as deptId1_0_1_, emp0_.name as name2_1_0_, emp0_.sal as sal3_1_0_, emp0_.job as job4_1_0_, emp0_.deptNo as deptNo5_1_0_, dept1_.name as name2_0_1_, dept1_.location as location3_0_1_ from Emp emp0_ right outer join Dept dept1_ on emp0_.deptNo=dept1_.deptId Emp{empId=1, name='a', job='财务猿1', sal=10000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=2, name='Ab', job='财务猿2', sal=5000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=3, name='bAa', job='财务猿3', sal=6000.0, dept=Dept{deptId=1, name='xx部', location='1楼'}} Emp{empId=4, name='aaA', job='程序猿1', sal=100000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Emp{empId=5, name='aB', job='程序猿2', sal=50000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} Emp{empId=6, name='AC', job='程序猿3', sal=60000.0, dept=Dept{deptId=2, name='研发部', location='2楼'}} null * *//* }*/
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客将讲述Hibernate中的多对多关联关系的操作,准备的篇幅较少,望海涵 一,讲述多对多 多对多的关联关系,比如学生和教师来说,一个学生由多个教师授课,一个教师授课给多个学生,这就是多对多 讲述多对多,首先要有一个表叫做中间表,他来承载关联关系 二,实体类的创建 1.Stu学生类创建: package cn.dawn.day04.entity; /** * Created by Dawn on 2018/6/2. */ import java.io.Serializable; import java.util.Set; /*学生实体类*/ public class Stu implements Serializable{ private Long sid; private String sname; /*教师对象集合*/ private Set<Tea> teas; public Long getSid() { return sid; } public void setSid(Long sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public Set<Tea> getTeas() { return teas; } public void setTeas(Set<Tea> teas) { this.teas = teas; } } 2.Tea教室类的创建: package cn.dawn.day04.entity; import java.io.Serializable; import java.util.Set; /** * Created by Dawn on 2018/6/2. */ /*教师实体类*/ public class Tea implements Serializable { private Long tid; private String tname; /*学生对象集合*/ private Set<Stu> stus; public Long getTid() { return tid; } public void setTid(Long tid) { this.tid = tid; } public String getTname() { return tname; } public void setTname(String tname) { this.tname = tname; } public Set<Stu> getStus() { return stus; } public void setStus(Set<Stu> stus) { this.stus = stus; } } 三,hbm.xml文件的创建 1.Stu.hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.dawn.day04.entity"> <!--如果上面指定package的话,class的name就不必写全类名--> <!--lazy:是否懒加载(延迟加载) 默认值是true,延迟加载--> <!--<class name="Teacher">--> <!--直接加载--> <class name="Stu" lazy="false"> <!--主键--> <id name="sid" column="sid"> <!--主键生成策咯 assigned程序员自己创建--> <!--identity是mysql里的自增,一会做增加操作不必再给主键赋值--> <!--increment是先查最大的主键列,在下一条给主键加一--> <!--sequence是oracle的主键生成策咯,他一会需要指定序列名字<param name="sequence">序列名</param>--> <generator class="increment"></generator> </id> <property name="sname" column="tname"></property> <!--table指的是中间表,承载关联关系的表--> <set name="teas" table="tea_stu" cascade="save-update" inverse="false"> <key> <!--本类表的id--> <column name="sid"></column> </key> <!--另外与他有多对多关联的实体类--> <many-to-many class="Tea" column="tid"></many-to-many> </set> </class> </hibernate-mapping> 2.Tea.hbm.xml文件的创建: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.dawn.day04.entity"> <!--如果上面指定package的话,class的name就不必写全类名--> <!--lazy:是否懒加载(延迟加载) 默认值是true,延迟加载--> <!--<class name="Teacher">--> <!--直接加载--> <class name="Tea" lazy="false"> <!--主键--> <id name="tid" column="tid"> <!--主键生成策咯 assigned程序员自己创建--> <!--identity是mysql里的自增,一会做增加操作不必再给主键赋值--> <!--increment是先查最大的主键列,在下一条给主键加一--> <!--sequence是oracle的主键生成策咯,他一会需要指定序列名字<param name="sequence">序列名</param>--> <generator class="increment"></generator> </id> <property name="tname" column="tname"></property> <!--table指的是中间表,承载关联关系的表--> <set name="stus" table="tea_stu" cascade="save-update" inverse="false"> <key> <!--本类表的id--> <column name="tid"></column> </key> <!--另外与他有多对多关联的实体类--> <many-to-many class="Stu" column="sid"></many-to-many> </set> </class> </hibernate-mapping> 四,hibernate.cfg.xml中管理上方俩个hbm.xml小配置文件 <!--与小配置文件映射--> <mapping resource="cn/dawn/day04/dao/Tea.hbm.xml"></mapping> <mapping resource="cn/dawn/day04/dao/Stu.hbm.xml"></mapping> 五,单测方法: @Test /*同时保存,并建立关联关系*/ public void t1ManyToManyInsert(){ /* * 新建一个教师 */ Tea tea1=new Tea(); tea1.setTname("老雨"); /** * 新建俩个学生 */ Stu stu1=new Stu(); stu1.setSname("小六"); Stu stu2=new Stu(); stu2.setSname("小八"); Set<Stu> students = new HashSet<Stu>(); students.add(stu1); students.add(stu2); /** * 通过课程建立课程与学生之间的关系 */ tea1.setStus(students);//因为课程是一个新的,所以根据没有学生 /*新增*/ session.save(tea1); /*事务提交*/ tr.commit(); /* Hibernate: create table Stu (sid bigint not null, tname varchar(255), primary key (sid)) engine=MyISAM Hibernate: create table Tea (tid bigint not null, tname varchar(255), primary key (tid)) engine=MyISAM Hibernate: create table tea_stu (tid bigint not null, sid bigint not null, primary key (sid, tid)) engine=MyISAM Hibernate: alter table tea_stu add constraint FK1lo22k662lgxr7d79rmfajlu3 foreign key (sid) references Stu (sid) Hibernate: alter table tea_stu add constraint FKgq01y04i2r2ye5pd8abh5x42u foreign key (tid) references Tea (tid) Hibernate: select max(tid) from Tea Hibernate: select max(sid) from Stu Hibernate: insert into Tea (tname, tid) values (?, ?) Hibernate: insert into Stu (tname, sid) values (?, ?) Hibernate: insert into Stu (tname, sid) values (?, ?) Hibernate: insert into tea_stu (tid, sid) values (?, ?) Hibernate: insert into tea_stu (tid, sid) values (?, ?) * */ } 六,总结: 我认为此处写的已经足够,最好的学习方法就是尝试,自己来试一下 我可以提出需求: 1.保存单个学生 2.修改一个教师下关联的学生 3.将一个学生关联的所有教师都干掉 等等等。。。。。。。。。。。。。
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客将讲述Hibernate中的关联查询,及其级联(cascade)操作,以及指定哪一方维护关联关系的(inverse) 一,讲述目录如下: 1.单向一对多:(增加一个区县及其它以下的对应街道) 2.单项一对多:(查询一个区县,以及它下面所有的对应街道) 3.单项多对一:(查询一个指定的街道,并同时展示出其对应的区县) 4.双向一对多(多对一):(值得注意:toString()套路不对容易引发错误Error------StackOverflowError) 5.inverse的使用和详解:(指定哪一方来维护关联关系) 6.级联删除:(删除主表中的数据,同时将会干掉外键是它的数据,慎用!!!!!!) 注:其实还想讲一下多对多,但是没有准备,下篇博客会详细总结; 二,单向一对多:(增加一个区县及其它以下的对应街道) 1.简介: 我会在此案例下做好全部准备工作,其他的案例会在此案例上做略改操作: 2.实体类的准备: 2.1:District区县实体类: package cn.dawn.day03.entity; import java.util.ArrayList; import java.util.List; /** * Created by Dawn on 2018/5/30. */ /*区县*/ public class District { private Integer id;//区县id private String name;//区县名称 /*一个区县对应多个街道*/ private List<Street> streets=new ArrayList<Street>(); @Override public String toString() { return "District{" + "id=" + id + ", name='" + name + '\'' + ", streets=" + streets + '}'; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Street> getStreets() { return streets; } public void setStreets(List<Street> streets) { this.streets = streets; } public District() { } public District(Integer id, String name, List<Street> streets) { this.id = id; this.name = name; this.streets = streets; } public District(Integer id, String name) { this.id = id; this.name = name; } } 2.2:Street街道类: package cn.dawn.day03.entity; /** * Created by Dawn on 2018/5/30. */ /*街道类*/ public class Street { private Integer id;//街道id private String name;//街道名称 private District district; @Override public String toString() { return "Street{" + "id=" + id + ", name='" + name + '\'' + ", district=" + district + '}'; } public Street() { } public Street(Integer id, String name) { this.id = id; this.name = name; } public District getDistrict() { return district; } public void setDistrict(District district) { this.district = district; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 3.hbm文件的准备: 3.1:District.hbm.xml文件的配置: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.dawn.day03.entity"> <!--如果上面指定package的话,class的name就不必写全类名--> <!--lazy:是否懒加载(延迟加载) 默认值是true,延迟加载--> <!--<class name="Teacher">--> <!--直接加载--> <class name="District" lazy="false"> <!--主键--> <id name="id" column="id"> <!--主键生成策咯 assigned程序员自己创建--> <!--identity是mysql里的自增,一会做增加操作不必再给主键赋值--> <!--increment是先查最大的主键列,在下一条给主键加一--> <!--sequence是oracle的主键生成策咯,他一会需要指定序列名字<param name="sequence">序列名</param>--> <generator class="assigned"></generator> </id> <property name="name" column="name"></property> <!-- 配置一对多的关联管理 name:关联关系属性名 column:数据库中对应的外键 class:关联关系的类型 cascade:对当前对象操作的时候,是否影响关联对象 inverse="true": 放弃与数据库的交互 --> <bag name="streets" cascade="save-update" > <key column="districtid"></key> <one-to-many class="Street"></one-to-many> </bag> </class> </hibernate-mapping> 3.2:Street.hbm.xml文件配置: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.dawn.day03.entity"> <!--如果上面指定package的话,class的name就不必写全类名--> <!--lazy:是否懒加载(延迟加载) 默认值是true,延迟加载--> <!--<class name="Teacher">--> <!--直接加载--> <class name="Street" lazy="false"> <!--主键--> <id name="id" column="id"> <!--主键生成策咯 assigned程序员自己创建--> <!--identity是mysql里的自增,一会做增加操作不必再给主键赋值--> <!--increment是先查最大的主键列,在下一条给主键加一--> <!--sequence是oracle的主键生成策咯,他一会需要指定序列名字<param name="sequence">序列名</param>--> <generator class="assigned"></generator> </id> <property name="name" column="name"></property> <!--配置多对一的关联关系 name: 本类中 关联关系的属性名 class:关联关系的类型 column:在数据库中两个表的外键 --> <!--<many-to-one name="district" class="District" column="districtId"/>--> </class> </hibernate-mapping> 4.单测方法,增加一个区县及其它以下的对应街道: @Test /** * 单项一对多,增加一个区县及其他下面的对应街道 * 千万注意,在hbm中要加:级联 * cascade="save-update" */ public void t1OneToMany(){ /*创建三个街道*/ Street street1=new Street(1,"海淀1街"); Street street2=new Street(2,"海淀2街"); Street street3=new Street(3,"海淀3街"); List<Street> streets=new ArrayList<Street>(); streets.add(street1); streets.add(street2); streets.add(street3); /*添加一个区到数据库*/ District district=new District(1,"测试海淀区"); /*也可以从数据库中获取一个区,推荐第二种*/ /*District district = session.get(District.class, 1);*/ district.setStreets(streets); /*新增街道*/ session.save(district); tr.commit(); /*执行结果 Hibernate: create table District (id integer not null, name varchar(255), primary key (id)) engine=MyISAM Hibernate: create table Street (id integer not null, name varchar(255), districtid integer, primary key (id)) engine=MyISAM Hibernate: alter table Street add constraint FKjuba2team1j6124qeurjyblk1 foreign key (districtid) references District (id) Hibernate: select street_.id, street_.name as name2_1_ from Street street_ where street_.id=? Hibernate: select street_.id, street_.name as name2_1_ from Street street_ where street_.id=? Hibernate: select street_.id, street_.name as name2_1_ from Street street_ where street_.id=? Hibernate: insert into District (name, id) values (?, ?) Hibernate: insert into Street (name, id) values (?, ?) Hibernate: insert into Street (name, id) values (?, ?) Hibernate: insert into Street (name, id) values (?, ?) Hibernate: update Street set districtid=? where id=? Hibernate: update Street set districtid=? where id=? Hibernate: update Street set districtid=? where id=? */ } 三,单项一对多:(查询一个区县,以及它下面所有的对应街道) 1.在原有代码不改变的情况下,做如下操作: 2.查询一个区县,以及它下面所有的对应街道: @Test /*查询指定区县下所有的街道*/ public void t2selectStreetByDistrict(){ /*获取id为1的区县*/ District district=session.get(District.class,1); /*获取区县下所有的街道*/ List<Street> streets = district.getStreets(); for (Street street:streets) { System.out.println(street); } /*运行结果 Hibernate: alter table Street add constraint FKjuba2team1j6124qeurjyblk1 foreign key (districtid) references District (id) Hibernate: select district0_.id as id1_0_0_, district0_.name as name2_0_0_ from District district0_ where district0_.id=? Hibernate: select streets0_.districtid as district3_1_0_, streets0_.id as id1_1_0_, streets0_.id as id1_1_1_, streets0_.name as name2_1_1_ from Street streets0_ where streets0_.districtid=? Street{id=1, name='海淀1街'} Street{id=2, name='海淀2街'} Street{id=3, name='海淀3街'} * */ } 四,单项多对一:(查询一个指定的街道,并同时展示出其对应的区县) 1.先把二.3.3.1中District.hbm.xml把 <bag节点注释掉,或者直接干掉> <!--<bag name="streets" cascade="save-update" > <key column="districtid"></key> <one-to-many class="Street"></one-to-many> </bag>--> 2.其实应该再多的一方,植入一个少的一方的对象,但是我在准备工作中就已经做过了 /*街道类*/ public class Street { private Integer id;//街道id private String name;//街道名称 /*重点:::::::::*/ private District district; 3.在Street.hbm.xml配置文件中,把我注释掉的那个<many-to-one>的节点放开: <!--配置多对一的关联关系 name: 本类中 关联关系的属性名 class:关联关系的类型 column:在数据库中两个表的外键 --> <many-to-one name="district" class="District" column="districtId"/> 4.书写测试方法:查询一个指定的街道,并同时展示出其对应的区县: @Test /*查询指定街道所对应的县区*/ /*多对一*/ /*先把之前配置的那个干掉*/ public void t3ManyToOne(){ /*需要在多的一方的实体类加入少的一方对象,并且在hbm配置manytoone*/ Street street = session.get(Street.class, 1); System.out.println(street); /* Hibernate: alter table Street add constraint FKfch89j84iailpfqs5bpkj2rs0 foreign key (districtId) references District (id) Hibernate: select street0_.id as id1_1_0_, street0_.name as name2_1_0_, street0_.districtId as district3_1_0_ from Street street0_ where street0_.id=? Hibernate: select district0_.id as id1_0_0_, district0_.name as name2_0_0_ from District district0_ where district0_.id=? Street{id=1, name='海淀1街', district=District{id=1, name='测试海淀区', streets=[]}} */ } 五,双向一对多(多对一):(值得注意:toString()套路不对容易引发错误Error------StackOverflowError) 1.解释: 他们的的关系是相互的,都要参与维护关联关系 2.讲四中注释掉District.hbm.xml中的<bag>标签再放开 <bag name="streets" cascade="save-update" > <key column="districtid"></key> <one-to-many class="Street"></one-to-many> </bag> 3.值得注意的是,需要修改toString()方法,否者他会互相调用,出现堆栈溢出的错误 4.先不改toString()的时候,书写测试方法:(查询一个街道及其对应的区县) @Test /*双向的一对多,就是关系是相互的!!!!!!!!*/ /*将t3干掉的配置再加回去*/ public void t4twoway(){ Street street = session.get(Street.class, 1); System.out.println(street); /*注:toString需要做个手段,否则互相调用的话就死循环,堆栈溢出java.lang.StackOverflowError*/ /* Hibernate: alter table Street add constraint FKfch89j84iailpfqs5bpkj2rs0 foreign key (districtId) references District (id) Hibernate: select street0_.id as id1_1_0_, street0_.name as name2_1_0_, street0_.districtId as district3_1_0_ from Street street0_ where street0_.id=? Hibernate: select district0_.id as id1_0_0_, district0_.name as name2_0_0_ from District district0_ where district0_.id=? Hibernate: select streets0_.districtid as district3_1_0_, streets0_.id as id1_1_0_, streets0_.id as id1_1_1_, streets0_.name as name2_1_1_, streets0_.districtId as district3_1_1_ from Street streets0_ where streets0_.districtid=? java.lang.StackOverflowError ...... * */ } 5.修改任意一toString()方法,使其不再互相无节制的调用: /*区县*/ public class District { private Integer id;//区县id private String name;//区县名称 /*一个区县对应多个街道*/ private List<Street> streets=new ArrayList<Street>(); @Override public String toString() { return "District{" + "id=" + id + ", name='" + name + '\'' + ", streets=" + streets.size() + '}'; } 6.重新执行4中的代码,发现不会再出现错误,成功查询 六,inverse的使用和详解:(指定哪一方来维护关联关系) 1.讲解: (1).Hibernate中的规则是,多的一方必须维护关联关系,所以,我们只能修改一的一方(one-to-many) (2).inverse默认值为false,就是与数据库交互,会维护关联关系,如果为了性能的提升,我们可以放弃一的一方与数据库交互,即放弃维护关联关系,将值改为true即可; 2.District.hbm.xml中的配置修改的如下: <!-- 配置一对多的关联管理 name:关联关系属性名 column:数据库中对应的外键 class:关联关系的类型 cascade:对当前对象操作的时候,是否影响关联对象 inverse="true": 放弃与数据库的交互 --> <bag name="streets" cascade="save-update" inverse="false"> <key column="districtid"></key> <one-to-many class="Street"></one-to-many> </bag> 3.单测方法(先测试一的一方维护关联关系): @Test public void t5inverse(){ //创建区县 District district=new District(2,"大兴区"); //创建街道 Street street1=new Street(4,"大兴3街道"); Street street2=new Street(5,"大兴4街道"); //把街道放进区县的街道集合中 district.getStreets().add(street1); district.getStreets().add(street2); //新增区县 session.save(district); tr.commit(); /** * 产生了8条sql语句! 发现 后面两条update 是无用功!!!! Hibernate: alter table Street add constraint FKfch89j84iailpfqs5bpkj2rs0 foreign key (districtId) references District (id) Hibernate: select street_.id, street_.name as name2_1_, street_.districtId as district3_1_ from Street street_ where street_.id=? Hibernate: select street_.id, street_.name as name2_1_, street_.districtId as district3_1_ from Street street_ where street_.id=? Hibernate: insert into District (name, id) values (?, ?) Hibernate: insert into Street (name, districtId, id) values (?, ?, ?) Hibernate: insert into Street (name, districtId, id) values (?, ?, ?) Hibernate: update Street set districtid=? where id=? Hibernate: update Street set districtid=? where id=? 3条insert是 District产生的! 为什么会产生两条update?? Street! hibernate中 规定: 01.多的一方 many-to-one,必须去维护双方的关系! 因为many-to-one压根就没有inverse这个属性! 02.inverse默认为false! 不反转! 我来维护! 03.必须在一的一方 设置 inverse="true" 放弃维护的权力! 维护===》是否与数据库产生交互! */ } 4.将inverse改为true,放弃维护的权力,再执行刚才的代码,发现: /*修改inverse=true,删除刚才添加的数据,再次执行单测*/ /* Hibernate: alter table Street add constraint FKfch89j84iailpfqs5bpkj2rs0 foreign key (districtId) references District (id) Hibernate: select street_.id, street_.name as name2_1_, street_.districtId as district3_1_ from Street street_ where street_.id=? Hibernate: select street_.id, street_.name as name2_1_, street_.districtId as district3_1_ from Street street_ where street_.id=? Hibernate: insert into District (name, id) values (?, ?) Hibernate: insert into Street (name, districtId, id) values (?, ?, ?) Hibernate: insert into Street (name, districtId, id) values (?, ?, ?) 发现后面的update没有了 */ 七,级联删除(慎用慎用慎用!!!!!!!!!!!!!!!!!!!!!!!) 1.讲述: 如果设置完毕后,当干掉主键所在的那张表中的一台记录,它所关联的外键的那一行记录也会被干掉,所以说很危险,不要使用!! 2.设置District.hbm.xml中的cascade="delete"和inverse="false"(或者inverse不配置) <bag name="streets" cascade="delete" inverse="false"> <key column="districtid"></key> <one-to-many class="Street"></one-to-many> </bag> 3.书写测试代码,比如删一个区县: @Test /*级联删除*/ /*cascade="delete" inverse="false"*/ public void t6deleteMapping(){ /*cascade="delete" inverse="false"记得改这个参数*/ /*获取id为2的区县*/ District district=session.get(District.class,2); /*删除*/ session.delete(district); tr.commit(); /* Hibernate: alter table Street add constraint FKfch89j84iailpfqs5bpkj2rs0 foreign key (districtId) references District (id) Hibernate: select district0_.id as id1_0_0_, district0_.name as name2_0_0_ from District district0_ where district0_.id=? Hibernate: select streets0_.districtid as district3_1_0_, streets0_.id as id1_1_0_, streets0_.id as id1_1_1_, streets0_.name as name2_1_1_, streets0_.districtId as district3_1_1_ from Street streets0_ where streets0_.districtid=? Hibernate: update Street set districtid=null where districtid=? Hibernate: delete from Street where id=? Hibernate: delete from Street where id=? Hibernate: delete from District where id=? * */ /*他会把俩张表的都干掉了,所以,慎用!!!!!!!!!!!!!*/ } 作者:晨曦Dawn 转载请注明出处:https://www.cnblogs.com/DawnCHENXI/p/9123184.html 如果有错误请您指出,感激不尽!!!!!!!!!!!!!!!!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述Hibernate中的分页 hibernate中的分页其实很好写,它通过操作对象的方式,来进行分页查询操作 分页无非就是查俩个:1.总记录数,2.当前页的数据 根据当前页的页码(第几页)和页大小(每页展示几条数据),写出类似mysql的limit语句的前后值 直接放代码,我会把注释标明: @Test /** * 分页 * * 01.查询总记录数 * 02.每页显示的数据 * 03.总页数 */ public void t1Page(){ String hql="select count(*) from Teacher";//会返回Long类型 int counts=((Long)session.createQuery(hql).uniqueResult()).intValue(); /*页大小*/ int pageSize=2; /*总页数*/ int totalPages=(counts%pageSize==0)?(counts/pageSize):(counts/pageSize+1); /*显示第二页内容*/ int pageIndex=2; hql="from Teacher"; Query query = session.createQuery(hql);; /*从哪一条开始查*/ query.setFirstResult((pageIndex-1)*pageSize); /*设置页大小*/ query.setMaxResults(pageSize); List<Teacher> teachers = query.list(); for (Teacher t:teachers) { System.out.println(t); } }
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客将讲述,以优雅的方式创建session对象,我将会说明优点,并提炼成工具类 优点: 1.无需手动关闭session 2.提高了性能,不需要频繁的创建session对象 说明: 虽然getCurrentSession()底层调用了openSession(),但是做了单例操作,所以性能更高,更安全 工具类: package cn.dawn.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; /** * Created by Dawn on 2018/5/30. */ public class SessionFactoryUtil { private static Configuration configuration;//加载核心配置文件 private static SessionFactory factory;//单例对象 //在类加载的时候,加载静态代码块 static { configuration=new Configuration().configure();//默认加载根目录下的hibernate.cfg.xml factory=configuration.buildSessionFactory(); } //通过sessionfactory创建session /*设置同步,保证线程安全*/ public static synchronized Session getCurrentSession(){ return factory.getCurrentSession(); /*不能直接使用,需要在核心配置文件中加入一个节点*/ /*<property name="current_session_context_class">thread</property>*/ } } 另外需要在hibernate.hbm.xml中配置一个节点: <property name="current_session_context_class">thread</property> 简单的使用案例: package cn.dawn.day03; import cn.dawn.day03.entity.Teacher; import cn.dawn.util.SessionFactoryUtil; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.query.Query; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.List; /** * Created by Dawn on 2018/5/25. */ /*分页*/ public class Test0120180530Page { /*事物*/ Transaction tr=null; /*session*/ Session session=null; @Test /** * 分页 * * 01.查询总记录数 * 02.每页显示的数据 * 03.总页数 */ public void t1Page(){ String hql="select count(*) from Teacher";//会返回Long类型 int counts=((Long)session.createQuery(hql).uniqueResult()).intValue(); /*页大小*/ int pageSize=2; /*总页数*/ int totalPages=(counts%pageSize==0)?(counts/pageSize):(counts/pageSize+1); /*显示第二页内容*/ int pageIndex=2; hql="from Teacher"; Query query = session.createQuery(hql);; /*从哪一条开始查*/ query.setFirstResult((pageIndex-1)*pageSize); /*设置页大小*/ query.setMaxResults(pageSize); List<Teacher> teachers = query.list(); for (Teacher t:teachers) { System.out.println(t); } } /*在执行之前加载配置,运行事物*/ @Before public void beforeTest(){ /*使用工具类*/ /*创建session*/ session = SessionFactoryUtil.getCurrentSession(); /*创建事物*/ tr = session.beginTransaction(); } /*在执行之后,提交事物,关闭session*/ @After public void afterTest(){ /*提交事物*/ /*tr.commit();*/ /*关闭session*/ /*session.close();*/ } }
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客将叙述hibernate中的投影查询 一,目录: 1.解释什么是投影查询 2.返回Object单个对象(可以是强类型,无所谓) 3.返回Object数组 4.返回自定义的对象 二,解释什么是投影查询: sql语句: select name,age from userinfo; 如果用hibernate中就不是这么表示,select后面的列名就是需要投影的列,通过特定的写法,直接返回可以操作的对象 三,返回Object单个对象(可以是强类型,无所谓) @Test /*投影成object类型*/ public void t01TouyingObject(){ String hql="select name from Teacher"; List<Object> list = session.createQuery(hql).list(); for (Object t:list){ System.out.println(t); } } 四,返回Object数组 @Test /*投影成object[]类型*/ public void t02TouyingObjectArr(){ String hql="select name,sal from Teacher"; List<Object[]> list = session.createQuery(hql).list(); for (Object[] t:list){ System.out.println(t[0]); System.out.println(t[1]); } } 五,返回自定义的对象 值得注意的是,必须有对应的构造方法: @Test /*投影成自定义对象类型*/ public void t03TouyingObjectMyself(){ String hql="select new Teacher(name,sal) from Teacher"; List<Teacher> list = session.createQuery(hql).list(); for (Teacher t:list){ System.out.println(t); } }
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客会讲解Hibernate中的参数绑定,就是相当于sql语句中的where后面的条件 一,讲解概述: 1.通过下标的方式绑定参数 2.通过自定义参数名的方式绑定参数(多用于多表操作) 3.通过传入自定义对象的方式绑定参数(多用于单表操作) 4.通过类似智能标签的方式绑定参数(多用于带条件的多表操作) 二,通过下标的方式绑定参数 @Test /*通过下标的方式指定参数*/ public void t01Parameterbyunderid(){ /*模拟前台输入参数*/ Teacher teacher=new Teacher("a",400.00); /*hql语句*/ String hql="from Teacher where address=? and sal>?"; Query query = session.createQuery(hql); /*赋值*/ query.setParameter(0,teacher.getAddress()); query.setParameter(1,teacher.getSal()); /*查询*/ List list = query.list(); /*遍历*/ for (Object t:list) { System.out.println(t); } } 三,通过自定义参数名的方式绑定参数(多用于多表操作) @Test /*通过自定义参数名的方式指定参数*/ public void t02Parameterbymyselfkey(){ /*模拟前台输入参数*/ Teacher teacher=new Teacher("a",400.00); /*hql语句*/ String hql="from Teacher where address=:teaAdd and sal>:teasal"; Query query = session.createQuery(hql); /*赋值*/ query.setParameter("teaAdd",teacher.getAddress()); query.setParameter("teasal",teacher.getSal()); /*查询*/ List list = query.list(); /*遍历*/ for (Object t:list) { System.out.println(t); } } 四,通过传入自定义对象的方式绑定参数(多用于单表操作) @Test /*通过自定义对象的方式指定参数*/ /*适合单表操作*/ public void t03ParameterbymyselfObject(){ /*模拟前台输入参数*/ Teacher teacher=new Teacher("a",400.00); /*hql语句*/ String hql="from Teacher where address=:address and sal>:sal"; Query query = session.createQuery(hql); /*赋值*/ query.setProperties(teacher); /*查询*/ List list = query.list(); /*遍历*/ for (Object t:list) { System.out.println(t); } } 五,通过类似智能标签的方式绑定参数(多用于带条件的多表操作) @Test /*通过自定义参数名的方式指定动态参数*/ /*适合多表操作*/ public void t04ParameterbyDongtai(){ /*模拟前台输入参数*/ Teacher teacher=new Teacher("a",400.00); /*hql语句*/ StringBuffer hql=new StringBuffer("from Teacher where 1=1 "); if(teacher.getAddress()!=null){ hql.append("and address=:teaAdd "); } if(teacher.getSal()>0){ hql.append("and sal>:teasal "); } Query query = session.createQuery(hql.toString()); /*赋值*/ query.setParameter("teaAdd",teacher.getAddress()); query.setParameter("teasal",teacher.getSal()); /*查询*/ List list = query.list(); /*遍历*/ for (Object t:list) { System.out.println(t); } }
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客主要叙述Hibernate中的三种状态:临时状态(瞬时状态),持久状态,游离状态 commit和flush三种状态间的使用,commit和flush的区别: saveOrUpdate和merge三种状态间的使用,saveOrUpdate和merge的区别 前方标注一下,用的是mysql数据库,主键生成策略是increment 一,Hibernate-ORM的对象的三种状态: * Hibernate对象的三种状态 * 1.临时状态(瞬时态)(临时态,自由态) * 我们通过new关键字创建出一个类的实例对象, 这个对象和hibernate没有任何关系! * 2.持久状态 * 对象被session管理。就会产生有一个OID(主键标识符)!这个对象和hibernate有关系 * 3.游离状态(托管态) * 曾经被session管理过!有OID *和瞬时态的区别在于,是否存在OID! 大话一下:临时状态就是没有关系,就像你和大街上任意一个女孩没有关系,持久状态就是你和她有了联系(男女朋友,结婚),游离状态就是已经分手了(但是有过曾经) 二,一张图揭秘如何进入各个状态的方法: 三,各个状态的小案例: @Test /*简单写一下三种状态,和根据这个increment主键生成策咯生成记录 * * ---------------------------------- Hibernate: select max(tid) from Teacher ---------------------------------- Hibernate: insert into Teacher (name, tid) values (?, ?) * */ public void t01ThreeStatus01(){ System.out.println("----------------------------------"); Teacher teacher=new Teacher("孟六爱自由");//临时状态(瞬时状态) session.save(teacher);//持久状态 System.out.println("----------------------------------"); tr.commit(); session.evict(teacher);//游离状态 } 四,commit()和flush(): 1.区别: * commit()和flush()的区别 * * flush():是缓存清理,把缓存中的数据同步到数据库!但是不会持久化 * commit():在执行的时候,会默认执行flush(),之后会持久化 * flush()在执行的时候会进行缓存清理,在缓存清理的时候,会进行脏检查! 2. 什么是脏检查? * 在一个对象被session管理的时候,会创建这个对象的快照, * 我们之后commit的时候,会拿当前的对象信息和之前对象的快照进行对比, * 如果当前对象的属性发生改变,那么现在的对象就是脏对象! * 脏对象会被同步到数据库中! 3.对一个持久化状态的commit操作: @Test /* * 写一下commit可以提交属于持久化状态的数据 * Hibernate: select teacher0_.tid as tid1_0_0_, teacher0_.name as name2_0_0_ from Teacher teacher0_ where teacher0_.tid=? Hibernate: update Teacher set name=? where tid=? * */ public void t02CommitAndFlush01(){ Teacher teacher=session.get(Teacher.class,3);/*持久化状态*/ teacher.setName("CommitTest1"); tr.commit(); } 它会在没有update()的情况下也会做修改,并且持久化到数据库 4.对一个持久化状态的flush操作: @Test /* * 写一下flush可以同步到数据库,但是不会持久化 * Hibernate: select teacher0_.tid as tid1_0_0_, teacher0_.name as name2_0_0_ from Teacher teacher0_ where teacher0_.tid=? * * */ public void t02CommitAndFlush02(){ Teacher teacher=session.get(Teacher.class,3);/*持久化状态*/ teacher.setName("flushTest1"); session.flush(); } 它可以同步到数据库,之后执行完毕之后就回滚掉了,不会持久化,我下面一个例子做证明 5.证明flush只是做同步,不是持久化: @Test /* * 测试flush是否真实同步到数据库, * 排除缓存,看看是否确实持久化到数据库中还是只是同步,一会就回滚 * Hibernate: select teacher0_.tid as tid1_0_0_, teacher0_.name as name2_0_0_ from Teacher teacher0_ where teacher0_.tid=? ============================CommitTest1 Hibernate: update Teacher set name=? where tid=? Hibernate: select teacher0_.tid as tid1_0_0_, teacher0_.name as name2_0_0_ from Teacher teacher0_ where teacher0_.tid=? ============================flushTest2 * */ public void t02CommitAndFlush03(){ Teacher teacher=session.get(Teacher.class,3);/*持久化状态*/ System.out.println("============================"+teacher.getName());/*CommitTest1*/ teacher.setName("flushTest2"); session.flush(); //清理缓存 session.clear(); //清空缓存 teacher=session.get(Teacher.class,3);/*持久化状态*/ System.out.println("============================"+teacher.getName());/*flushTest2*/ } 五,saveOrUpdate()和merge(): 1.区别: 最核心的区别:::::::merge()不会改变对象的状态!!! * save(): 把瞬时态转换成持久态 * update(): 把游离态转换成持久态 * saveOrUpdate(): * 会根据对象是否有OID来判断执行save还是update * 如果有oid 执行update * 如果没有oid 执行save * merge(): 产生的sql语句和saveOrUpdate有点类似, * 但是!!!!! * 01.merge不会改变对象的状态 * 02.当我们的对象处于瞬时状态时,会将对象复制一份到session的缓存中, * 然后执行save方法,执行insert 2.持久化状态下的saveOrUpdate(): @Test /* * saveOrUpdate * 它会改变状态 * 它会根据有没有oid标识(此java对象的状态),来选择执行save还是update * * 当是update的时候的案例 * Hibernate: select teacher0_.tid as tid1_0_0_, teacher0_.name as name2_0_0_ from Teacher teacher0_ where teacher0_.tid=? Hibernate: update Teacher set name=? where tid=? * */ public void t03SaveOrUpdate01(){ Teacher teacher=session.get(Teacher.class,4);/*持久化状态*/ teacher.setName("SaveOrUpdate01"); session.saveOrUpdate(teacher); /*他走的是update*/ tr.commit(); } 3.临时(瞬时)状态下的SaveOrUpdate(): @Test /* * saveOrUpdate * 它会改变状态 * 它会根据有没有oid标识(此java对象的状态),来选择执行save还是update * * 当是save的时候的案例 * Hibernate: select max(tid) from Teacher Hibernate: insert into Teacher (name, tid) values (?, ?) * * */ public void t03SaveOrUpdate02(){ Teacher teacher=new Teacher("王老师66");//临时状态(瞬时状态) teacher.setName("SaveOrUpdate02"); session.saveOrUpdate(teacher); /*他走的是update*/ tr.commit(); } 4.(临时)瞬时状态下的merge(): @Test /* * Merge和SaveOrUpdate用法类似,但是他不能改变状态,所以有些时候他会有点问题 * 案例一,save * Hibernate: select max(tid) from Teacher Hibernate: insert into Teacher (name, tid) values (?, ?) * */ public void t04Merge01(){ Teacher teacher=new Teacher("Merge01goodnice");//临时状态(瞬时状态) teacher.setName("Merge01"); session.merge(teacher); /*他走的是update*/ tr.commit(); } 5.持久化状态下的merger(): @Test /* * Merge和SaveOrUpdate用法类似,但是他不能改变状态,所以有些时候他会有点问题 * 案例二,update * Hibernate: select teacher0_.tid as tid1_0_0_, teacher0_.name as name2_0_0_ from Teacher teacher0_ where teacher0_.tid=? Hibernate: update Teacher set name=? where tid=? * */ public void t04Merge02(){ Teacher teacher=session.get(Teacher.class,4);/*持久化状态*/ teacher.setName("Merge02"); session.merge(teacher); /*他走的是update*/ tr.commit(); } 6.测试merge()是否会改变对象状态(一): 先准备一个临时对象,做merge操作,之后做update()操作,因为update得操作持久化对象,所以,只需要看报不报错就知道merge会不会改变状态 @Test /* * Merge和SaveOrUpdate用法类似,但是他不能改变状态,所以有些时候他会有点问题 * 案例三,他不会改变状态的案例 它会抛异常,因为不是持久化状态的无法用update,虽然他已经进行了插入操作 Hibernate: select max(tid) from Teacher Hibernate: insert into Teacher (name, tid) values (?, ?) org.hibernate.TransientObjectException: The given object has a null identifier: cn.dawn.day02.entity.Teacher ........ * */ public void t04Merge03(){ Teacher teacher=new Teacher("Merge03");//临时状态(瞬时状态) session.merge(teacher); /*他走的是save,但是没有改变为持久化状态*/ tr.commit(); session.update(teacher); tr.commit(); } 报错,所以merge()没有改变对象状态 7.测试merge()是否会改变对象状态(二): 准备一个临时状态的对象,执行俩次merge(),看是发俩条insert还是有update @Test /* * Merge和SaveOrUpdate用法类似,但是他不能改变状态,所以有些时候他会有点问题 * 案例四,创建一个对象后,merge一次,之后改变他的属性,再marge一次。。。 他会执行俩次save,因为此对象是临时状态,merge不会改变java对象的状态 Hibernate: select max(tid) from Teacher Hibernate: insert into Teacher (name, tid) values (?, ?) Hibernate: insert into Teacher (name, tid) values (?, ?) ........ * */ public void t04Merge04(){ Teacher teacher=new Teacher("Merge04");//临时状态(瞬时状态) session.merge(teacher); /*他走的是save,但是没有改变为持久化状态*/ teacher.setName("Merge04NewValue"); session.merge(teacher); tr.commit(); } 结论:两条insert,所以merge()不会改变对象状态 作者:晨曦Dawn 转载请注明出处:博客地址:https://www.cnblogs.com/DawnCHENXI/p/9101984.html 如果有错误,请指出!感激不尽!!!!!!!!!!!!!!!!!!!!!!!!!!!!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- Hibernate中查多条(全部)使用list()或iterator() 本篇介绍: 1.如何使用list()和iterator(); 2.list()和iterator的相同处与区别; 3.缓存对list()或iterator的影响; 一,list()和iterator()的使用: 1.list(): @Test /*简单的根据list查所有*/ public void t1ListDemo01(){ /*创建hql*/ String hql="from Teacher"; Query query = session.createQuery(hql); List<Teacher> list = query.list(); for(Teacher t : list){ System.out.println(t); } } 2.iterator()的使用: @Test /*简单的根据iterate查所有*/ public void t2IterateDemo01(){ /*创建hql*/ String hql="from Teacher"; Query query = session.createQuery(hql); Iterator<Teacher> iterate = query.iterate(); while (iterate.hasNext()){ iterate.next(); System.out.println(iterate); } } 二,list()和iterator()的相同不同 1.相同: 查询所使用的hql都一致; 都是可以查多条记录; 都会保存到缓存中; 2.不同: list()他不从缓存中拿值,但是从数据库里查出来的值会保存一道在缓存中; list()它会发送一条sql语句 iterator()发送的sql语句的条数 =(1+记录数) iterator()不从缓存拿值,但是之后的next()如果缓存中有值,是会从缓存中拿值的 next()发送的sql最多只有记录数那么多条sql 三,验证缓存对list()和iterator()的影响,并且验证二的相同和不同 1.看list()是否从缓存中拿值 @Test /*看list走不走缓存*/ public void t3ListCacheDemo01(){ /*创建hql*/ String hql="from Teacher"; Query query = session.createQuery(hql); List<Teacher> list = query.list();/*它在此处都会保存到缓存但是,它查的时候不查缓存*/ for(Teacher t : list){ System.out.println(t); } List<Teacher> list1 = query.list(); for(Teacher t : list1){ System.out.println(t); } } 结论:不会 2.看一下清除缓存是否对list()有影响: @Test /*看list走不走缓存*/ public void t4ListCacheDemo02(){ /*创建hql*/ String hql="from Teacher"; Query query = session.createQuery(hql); List<Teacher> list = query.list();/*它在此处都会保存到缓存但是,它查的时候不查缓存*/ for(Teacher t : list){ System.out.println(t); } /*清一下缓存*/ session.clear(); List<Teacher> list1 = query.list(); for(Teacher t : list1){ System.out.println(t); } } 结论:不会有影响 3.测试list()是否会保存数据到缓存中: @Test /*测试list确实会保存到缓存*/ public void t5ListCacheDemo03(){ /*创建hql*/ String hql="from Teacher"; Query query = session.createQuery(hql); List<Teacher> list = query.list();/*它在此处都会保存到缓存但是,它查的时候不查缓存*/ for(Teacher t : list){ System.out.println(t); } Teacher teacher = session.get(Teacher.class, 1); } 结论:是的,他查询的时候不从缓存中查询,但是查完数据库会保存数据到缓存中一份 4.测试iterator是否使用缓存,以及他后面的next()是否使用缓存 @Test /*测试iterate是否使用缓存,以及next()是否使用缓存*/ public void t6ListCacheDemo01(){ /*创建hql*/ String hql="from Teacher"; Query query = session.createQuery(hql); Iterator<Teacher> iterate = query.iterate(); while (iterate.hasNext()){ iterate.next(); System.out.println(iterate); } Iterator<Teacher> iterate1 = query.iterate(); while (iterate1.hasNext()){ iterate1.next(); System.out.println(iterate); } } @Test /*测试iterate是否使用缓存,以及next()是否使用缓存*/ public void t7ListCacheDemo02(){ Teacher teacher = session.get(Teacher.class, 1); /*创建hql*/ String hql="from Teacher"; Query query = session.createQuery(hql); Iterator<Teacher> iterate = query.iterate(); while (iterate.hasNext()){ iterate.next(); System.out.println(iterate); } } 结论:iterator不从缓存中拿值,但是next()确确实实是用缓存的 作者:晨曦Dawn 转载请注明出处,博客地址:https://www.cnblogs.com/DawnCHENXI/p/9092424.html 如果博客文章有错误,请指出,感激不尽!!!!!!!!!!!!!!!!!!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客会讲如何用get()或load()查询单个对象和对缓存的简单操作,以及他俩的区别和相同(前面有的那些配置不做重复展示,见谅) Hibernate中查询单个,就是用get()或load()任意一个做操作即可! 我会讲明区别和相同的地方,再加上一些验证我说的区别和相同的实例: 一,查询单个 1.使用get()查询单个 @Test /*get他是直接加载*/ public void t4GetDemo01(){ System.out.println("----------------------------------"); Teacher teacher = session.get(Teacher.class, 1); System.out.println("----------------------------------"); System.out.println(teacher.getName()); } 2.使用load()查询单个 @Test /*load他是懒加载*/ public void t5LoadDemo01(){ System.out.println("----------------------------------"); Teacher teacher = session.load(Teacher.class, 1); System.out.println("----------------------------------"); System.out.println(teacher.getName()); } 二,相同处: 1.get()和load()都使用缓存,他们查找记录的策咯是,先找一级缓存,有就拿来用,没有再去找二级,二级还没有就找数据库 (验证规则:同样的查俩次,看看发几次sql不就好了么!) /*get查记录从一级缓存开始找,一级没找到去二级找,二级没找到去数据库,数据库没找到返回null*/ @Test /*测试get缓存1*/ /*从他只发一条sql就知道他走的有缓存,因为二级缓存没有配置,所以,是一级缓存*/ public void t6GetCacheDemo01(){ System.out.println("----------------------------------"); Teacher teacher1 = session.get(Teacher.class, 1); Teacher teacher2 = session.get(Teacher.class, 1); System.out.println("----------------------------------"); } 2.他俩使用基本相似,传的同样俩个参数,返回值也一样 三,区别: 1.get()是直接加载,load是懒加载(又称延迟加载) (验证:) /*get和load都是查询,区别:*/ @Test /*get他是直接加载*/ public void t4GetDemo01(){ System.out.println("----------------------------------"); Teacher teacher = session.get(Teacher.class, 1); System.out.println("----------------------------------"); System.out.println(teacher.getName()); } @Test /*load他是懒加载*/ public void t5LoadDemo01(){ System.out.println("----------------------------------"); Teacher teacher = session.load(Teacher.class, 1); System.out.println("----------------------------------"); System.out.println(teacher.getName()); } /*测试在有懒加载的时候不使用它查不查数据*/ public void t12LoadLazyTrueDemo02(){ Teacher teacher = session.load(Teacher.class, 1); System.out.println("----------------------------------"); } 2.查询一个没有的记录,get()返回的是null,load()则会引发异常ObjectNotFoundException @Test /*测试get获取一个没有的值*/ public void t9GetHaventDemo01(){ Teacher teacher = session.get(Teacher.class, 5); System.out.println("----------------------------------"); System.out.println(teacher); } @Test /*测试load获取一个没有的值,会抛ObjectNotFoundException*/ public void t10LoadHaventDemo01(){ Teacher teacher = session.load(Teacher.class, 5); System.out.println("----------------------------------"); System.out.println(teacher); } 四,操作一级缓存查看对get()和load()的影响(清除单个缓存,和全部缓存) @Test /*清除单个缓存*/ public void t7GetCacheDemo02(){ System.out.println("----------------------------------"); Teacher teacher1 = session.get(Teacher.class, 1); Teacher teacher2 = session.get(Teacher.class, 2); System.out.println("----------------------------------"); session.evict(teacher1); teacher1= session.get(Teacher.class, 1); } @Test /*清除全部缓存*/ public void t8GetCacheDemo03(){ System.out.println("----------------------------------"); Teacher teacher1 = session.get(Teacher.class, 1); Teacher teacher2 = session.get(Teacher.class, 2); System.out.println("----------------------------------"); session.clear(); teacher1= session.get(Teacher.class, 1); teacher2 = session.get(Teacher.class, 2); } 结论:get()和load()确实使用到了缓存,如果缓存被清除,他们就得再发sql到数据库去查 五,load()也可以直接加载 方案: 在**.hbm.xml小配置文件中,配置延迟加载lazy=false <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.dawn.day01.entity"> <!--如果上面指定package的话,class的name就不必写全类名--> <!--lazy:是否懒加载(延迟加载) 默认值是true,延迟加载--> <!--<class name="Teacher">--> <!--直接加载--> <class name="Teacher" lazy="false"> <!--主键--> <id name="id" column="tid"> <!--主键生成策咯 assigned程序员自己创建--> <!--identity是mysql里的自增,一会做增加操作不必再给主键赋值--> <!--increment是先查最大的主键列,在下一条给主键加一--> <!--sequence是oracle的主键生成策咯,他一会需要指定序列名字<param name="sequence">序列名</param>--> <generator class="assigned"></generator> </id> <property name="name" column="name"></property> </class> </hibernate-mapping> 测试: @Test /*测试在没有懒加载的时候不使用它查不查数据*/ public void t12LoadLazyTrueDemo02(){ Teacher teacher = session.load(Teacher.class, 1); System.out.println("----------------------------------"); } 作者:晨曦Dawn 转载请注明出处,博客地址:https://www.cnblogs.com/DawnCHENXI/p/9090682.html 如果有错误,请指出,感激不尽!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 此篇博客简单记录五种常用的主键生成策咯: 不同的主键生成策略,生成的sql语句,以及hibernate的操作都是不同的! 3.1:assigned 主键是由程序猿自己设置的!如果我们不设置,会出现异常! 3.2:identity 针对于mysql数据库的主键自增 (mysql数据库说了算,必须设置主键自增,否则出现异常) 3.3:sequence 针对于oracle数据库中的序列 <generator class="sequence"> <param name="sequence">序列名称</param> </generator> 3.4:increment 首先会产生一条sql select max(id) from teacher 之后id+1 赋值给主键 3.5:uuid 能够保证在不同的数据库和不同的服务器下,主键的唯一性!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本笔者使用的是Idea+mysql+maven做Hibernate的博客,本篇及其以后都是如此! 首先写好思路和流水,我说一下会讲什么: 1.pom节点:jar包的引用; 1.1包括如何在不是resource的其他地方编译xml文件 2.核心配置文件hibernate.cfg.xml书写 2.1核心配置文件中的表生成策咯 2.2jdbc的四要素 2.3如何关联小配置文件**.hbm.xml 2.4在控制台展示sql语句与格式化sql语句 3.实体类的创建 4.小配置**.hbm.xml的配置书写 4.1主键生成策咯 4.2实体类和数据表如何映射 5.书写单测增删改 5.1事务环境的运行 话不多少,开始案例: 一,创建maven项目; 1.引入jar包,此处较长,合起来了 <!--单元测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!--Hibernate的核心jar--> <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.12.Final</version> </dependency> <!--jta 事务的api--> <!-- https://mvnrepository.com/artifact/javax.transaction/jta --> <dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.1</version> </dependency> <!-- 添加Log4J依赖 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-nop</artifactId> <version>1.6.4</version> </dependency> <!-- 添加javassist --> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.12.0.GA</version> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.1.Final</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.39</version> </dependency> Hibernate的pom节点 2.使非resource下面的xml参与编译 <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build> 二.核心配置文件hibernate.cfg.xml书写 配置了hbm2ddl.auto的话甚至连数据库的表都无需自己创建,只要一个实体类,自动创建数据库的表 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!--jdbc连接四要素--> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///y2167</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property> <!--在控制台上展示sql--> <property name="show_sql">true</property> <!--格式化sql--> <property name="format_sql">true</property> <!--====================================================================--> <!--ddl操作生成策咯,每次运行都在原有表上修改,没有的话就创建表--> <!-- <property name="hbm2ddl.auto"></property> key - hbm2ddl.auto:自动生成表结构策略 value - update(使用最多):当数据库不存在表时,hibernate启动后会自动生成表结构。 当数据库表存在时,如果一样,则只会写入数据,不会改变表结构。 当数据库表存在时,如果不一样,则会修改表结构,原有的表结构不会改变。 create(很少):无论表结构是否存在,hibernate启动后都会重新生成表结构。(造成之前的数据丢失) create-drop(极少):无论表结构是否存在,hibernate启动都会重新生成表结构。并且hibernate关闭后,表结构会被删除。来无影去无踪。 validate(很少):不会创建表结构,不会修改表结构。校验与数据库中的表结构是否一样,如果不一样则报异常。 --> <property name="hbm2ddl.auto">update</property> <!--与小配置文件映射--> <mapping resource="cn/dawn/day01/dao/Teacher.hbm.xml"></mapping> </session-factory> </hibernate-configuration> 三,实体类的创建: 此处需要注意的是属性要使用封装类,因为封装类实现了Serializable接口,再举例说明,Interge允许空值,int不行,封装类有更多的功能(方法) 构造也是值得注意的,最好保留一个无参构造,(血泪教训) package cn.dawn.day01.entity; /** * Created by Dawn on 2018/5/25. */ /*实体*/ public class Teacher { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Teacher{" + "id=" + id + ", name='" + name + '\'' + '}'; } } 四,小配置Teacher.hbm.xml 值得注意的是:1.主键生成策咯,2.导入的包名 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.dawn.day01.entity"> <!--如果上面指定package的话,class的name就不必写全类名--> <!--lazy:是否懒加载(延迟加载) 默认值是true,延迟加载--> <!--<class name="Teacher">--> <!--直接加载--> <class name="Teacher"> <!--主键--> <id name="id" column="tid"> <!--主键生成策咯 assigned程序员自己创建--> <!--identity是mysql里的自增,一会做增加操作不必再给主键赋值--> <!--increment是先查最大的主键列,在下一条给主键加一--> <!--sequence是oracle的主键生成策咯,他一会需要指定序列名字<param name="sequence">序列名</param>--> <generator class="assigned"></generator> </id> <property name="name" column="name"></property> </class> </hibernate-mapping> 五,书写测试类 1.先写@Before的代码,需要在执行单测前创建事务对象和Session对象 package cn.dawn.day01; import cn.dawn.day01.entity.Teacher; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.After; import org.junit.Before; import org.junit.Test; /** * Created by Dawn on 2018/5/25. */ public class Test0120180525InsertDeleteUpdate { /*事物*/ Transaction tr=null; /*session*/ Session session=null; /*在执行之前加载配置,运行事物*/ @Before public void beforeTest(){ /*加载hibernate核心*/ Configuration cfg=new Configuration().configure(); /*创建session工厂*/ SessionFactory sessionFactory=cfg.buildSessionFactory(); /*创建session*/ session = sessionFactory.openSession(); /*创建事物*/ tr = session.beginTransaction(); } } 2.创建@After的方法,用于单测结束后提交事务和关闭Session对象 /*在执行之后,提交事物,关闭session*/ @After public void afterTest(){ /*提交事物*/ tr.commit(); /*关闭session*/ session.close(); } 3.增:根据不同的主键生成策咯,它的新增写法不同 如果是identity就无需往对象set主键id值 如果是assigned则需要程序员自己创建,必须给set主键值,否者抛异常 /*Demo01最简单的Hibernate例子,做一下添加操作*/ public void t1InsertDemo(){ System.out.println("----------------------------------"); /*创建一个对象*/ Teacher teacher=new Teacher(); teacher.setId(1); teacher.setName("孟六"); /*调用执行*/ session.save(teacher); System.out.println("----------------------------------"); } 4.改:会根据您传进来的主键值改其他属性 @Test /*Demo01最简单的Hibernate例子,做一下添加操作*/ public void t1InsertDemo(){ System.out.println("----------------------------------"); /*创建一个对象*/ Teacher teacher=new Teacher(); teacher.setId(1); teacher.setName("孟六"); /*调用执行*/ session.save(teacher); System.out.println("----------------------------------"); } 5.删除:只需要一个有主键id的对象,就可以删除您表中的对应的记录 @Test /*删除*/ public void t2DeleteDemo(){ System.out.println("----------------------------------"); Teacher teacher=new Teacher(); teacher.setId(1); session.delete(teacher); System.out.println("----------------------------------"); } 作者:晨曦Dawn 转载请注明出处:https://www.cnblogs.com/DawnCHENXI/p/9090482.html 如有错误,请指出,感激不尽!!!!!!!!!!!!!!!!!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 对于学过ORM框架的朋友来说,上手HibernateORM来说,既熟悉有有一点陌生,熟悉无非是灵魂相通,陌生的只是一些语言罢了 1.1:Hibernate-ORM简介 1.Hibernate是一个开发源代码的对象关系映射框架(ORM); 2.对JDBC进行了轻量级的封装,可以将实体类和数据库中的表产生映射关系; 3.是一个全自动的ORM框架;hibernate能自动生成sql语句; 4.程序猿可以完全按照面向对象的编程思想来操作数据库. Hibernate ORM: 我们研究的主题; Hibernate Search:类似于lucence全文检索 Hibernate Validator:验证框架 Hibernate OGM:针对于Nosql数据库的操作 1.2:核心配置文件hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 配置文件中的需要我们配置的重要内容: 01.连接数据库的四要素 02.管理各种hbm.xml映射文件 03.缓存的设置 04.是否显示sql语句 05.是否格式化sql语句 06.hbm2ddl的配置 1.2:核心API 1. Configuration 类----------------》对应mybatis的SqlsessionFactoryBuilder 加载hibernate的核心配置文件,以及负责启动hibernate,创建SessionFactory对象 2. SessionFactory 接口----------------》对应mybatis的SqlsessionFactory 初始化Hibernate,是数据存储源的代理,负责创建Session对象! 一个项目中我们使用一个SessionFactory就足够了! 如果我们需要操作多个数据库时,建立每个数据库指定一个SessionFactory! 3. Session接口----------------》对应mybatis的Sqlsession 负责执行持久化对象的CRUD操作!是线程不安全的!可以开启事务!创建Transaction对象! Session ===>会话session HttpSession ===>用户session 4. Transaction接口 针对于事务的操作! 5. Query接口 方便我们对数据库数据的查询,有两种方式来实现查询: 01.sql 02.hql 6. Criteria接口 和query接口非常相似!完全面向对象的思想去操作数据库!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 先说明此篇博客看明白了可以干嘛: 就是在js或者jquery中操作一个EL表达式的一个list集合或者复杂类型或者内存地址 首先说明,从el表达式拿到的复杂类型,包括内存地址,js是无法直接进行操作的,所以得转换为简单类型,不是直接拿内存地址操作 eval也操作不了内存地址 我先说明思路:就是先用jstl转换为为简单类型,然后对简单类型做操作,示例不写的复杂,看一下就好: /*最牛的判断方式!!!!!!!*/ var flagchongfu=false; var array = new Array(); <c:forEach items="${muser.sysCourseList}" var="t"> array.push(${t.vid}); //js中可以使用此标签,将EL表达式中的值push到数组中 </c:forEach> for(var i=0;i<array.length;i++) { if(array[i]==id){ flagchongfu=true; } } if(flagchongfu==true){ layer.alert('不要重复购买', {icon: 2}); return; } 作者:晨曦Dawn 作者的博客园地址:http://www.cnblogs.com/DawnCHENXI/p/9061478.html 转载请注明出处! 参考博客:天降爆米花 https://blog.csdn.net/dream20nn/article/details/51496860
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客记录了表分区 表分区的含义: 典型的拿空间换时间的案例! 表分区对一张表进行分区,分区之后表中的数据存在相对应的分区内(可以是不同物理存储的位置),实际上他还是一张表!!!!!!! 表分区的好处: 均衡了IO(可以放在多个不同磁盘的位置) 提升了查询性能(可以不必检索所有记录) 维护方便(假如数据出现问题,分区之后只需维护出现问题的那个分区) 增强了可用性(假如一个表分区挂掉了,其他分区可以继续使用,而不是全挂掉) 表分区的缺点: 假如数据量太小,就无需使用表分区,否者浪费性能 提供数据库脚本供测试使用:(合起来了,以免影响阅读) create table DEPT ( deptno NUMBER(2) not null, dname VARCHAR2(20), loc VARCHAR2(13) ); alter table DEPT add constraint PK_DEPT primary key (DEPTNO); create table TEACHER ( tno NUMBER(4) not null, tname VARCHAR2(30) not null, tid CHAR(18), gendar CHAR(3), birthdate DATE, job VARCHAR2(20), hiredate DATE, sal NUMBER(7,2), deptno NUMBER(2), mgrno NUMBER(4), comm NUMBER(7,2) ); insert into DEPT (deptno, dname, loc) values (40, '人力部', '北京海淀'); insert into DEPT (deptno, dname, loc) values (30, '产品部', '北京海淀'); insert into DEPT (deptno, dname, loc) values (20, '招生部', '上海虹桥'); insert into DEPT (deptno, dname, loc) values (10, '研究院', '北京海淀'); insert into DEPT (deptno, dname, loc) values (50, '系统部', '北京昌平'); commit; insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1002, '赵辉', '110101760609001 ', '男', to_date('09-06-1976', 'dd-mm-yyyy'), '考试专员', to_date('23-05-2006 02:40:40', 'dd-mm-yyyy hh24:mi:ss'), 29370.95, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1003, '杨利乐', '110101198705256045', '女', to_date('25-05-1987', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7134.32, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1004, '王益辉', '110101199108154770', '男', to_date('15-08-1991', 'dd-mm-yyyy'), '营销专员', to_date('16-01-2012 03:12:43', 'dd-mm-yyyy hh24:mi:ss'), 30737.36, 20, null, 2300.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1006, '秦璐璐', '110101199004153068', '女', to_date('14-04-1990', 'dd-mm-yyyy'), '运维工程师', to_date('20-06-2012 00:47:09', 'dd-mm-yyyy hh24:mi:ss'), 9013.25, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1007, '梁改焕', '110101196911206548', '女', to_date('20-11-1969', 'dd-mm-yyyy'), '讲师', to_date('13-06-2006 23:07:02', 'dd-mm-yyyy hh24:mi:ss'), 8664.16, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1008, '冯爱仙', '110101196804021521', '女', to_date('02-04-1968', 'dd-mm-yyyy'), '讲师', to_date('06-06-2006 13:41:50', 'dd-mm-yyyy hh24:mi:ss'), 29936.29, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1009, '秦亚杰', '110101196312163531', '男', to_date('16-12-1963', 'dd-mm-yyyy'), '岗位分析师', to_date('13-07-2005 06:32:30', 'dd-mm-yyyy hh24:mi:ss'), 24991.44, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1010, '刘浩星', '110101198806283516', '男', to_date('28-06-1988', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 22645.92, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1011, '秦春叶', '110101197103033540', '女', to_date('03-03-1971', 'dd-mm-yyyy'), '网络营销师', to_date('07-07-2007 16:02:04', 'dd-mm-yyyy hh24:mi:ss'), 31653.23, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1012, '陈水花', '110101192811043026', '女', to_date('04-11-1928', 'dd-mm-yyyy'), '考试专员', to_date('29-01-2005 23:21:59', 'dd-mm-yyyy hh24:mi:ss'), 29773.37, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1013, '马付妮', '110101195806133522', '女', to_date('13-06-1958', 'dd-mm-yyyy'), '研发', to_date('17-11-2004 08:54:04', 'dd-mm-yyyy hh24:mi:ss'), 17041.60, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1015, '刘得安', '110101195210083518', '男', to_date('08-10-1952', 'dd-mm-yyyy'), '考试专员', to_date('13-03-2005 23:25:37', 'dd-mm-yyyy hh24:mi:ss'), 30356.99, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1016, '高利芹', '110101198307276020', '女', to_date('27-07-1983', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 25751.36, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1017, '刘志刚', '110101197806164493', '男', to_date('16-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('10-05-2008 13:46:33', 'dd-mm-yyyy hh24:mi:ss'), 22344.73, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1018, '高心立', '110101194102076011', '男', to_date('07-02-1941', 'dd-mm-yyyy'), '网络营销师', to_date('03-03-2005 15:17:07', 'dd-mm-yyyy hh24:mi:ss'), 19981.02, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1019, '徐丽', '11010119790809354X', '男', to_date('09-08-1979', 'dd-mm-yyyy'), '研发', to_date('09-12-2009 18:37:22', 'dd-mm-yyyy hh24:mi:ss'), 10950.33, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1021, '刘志红', '110101196504284452', '男', to_date('28-04-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('20-09-2011 10:51:33', 'dd-mm-yyyy hh24:mi:ss'), 7122.60, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1022, '孔鹏飞', '110101198603304014', '男', to_date('30-03-1986', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7045.28, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1023, '李建坡', '110101731107301 ', '男', to_date('07-11-1973', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2009 06:28:20', 'dd-mm-yyyy hh24:mi:ss'), 21133.91, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1024, '冯爱敏', '110101196907283840', '女', to_date('18-07-1969', 'dd-mm-yyyy'), '营销专员', to_date('12-09-2005 22:41:06', 'dd-mm-yyyy hh24:mi:ss'), 3360.91, 20, null, 50000.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1025, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '网络营销师', to_date('03-09-2007 14:55:06', 'dd-mm-yyyy hh24:mi:ss'), 12136.65, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1026, '牛伟伟', '11010119851120602X', '女', to_date('20-11-1985', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 6622.66, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1027, '郭香云', '110101196010154525', '女', to_date('15-10-1960', 'dd-mm-yyyy'), '网络营销师', to_date('03-05-2005 13:01:22', 'dd-mm-yyyy hh24:mi:ss'), 26436.18, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1028, '朱花枝', '110101195605154028', '女', to_date('15-05-1956', 'dd-mm-yyyy'), '研发', to_date('11-09-2007 07:41:01', 'dd-mm-yyyy hh24:mi:ss'), 10095.22, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1029, '李岗', '110101196505163095', '男', to_date('16-05-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('09-11-2007 17:26:38', 'dd-mm-yyyy hh24:mi:ss'), 23928.84, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1030, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '营销专员', to_date('12-05-2007 19:48:21', 'dd-mm-yyyy hh24:mi:ss'), 3492.19, 20, null, 25000.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1031, '孙龙举', '110101198908306037', '男', to_date('30-08-1989', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4323.84, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1032, '韩朝旭', '110101199003270513', '男', to_date('27-03-1900', 'dd-mm-yyyy'), '人力资源师', to_date('11-09-2010 17:54:30', 'dd-mm-yyyy hh24:mi:ss'), 13740.92, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1033, '孙少光', '110101198809274535', '男', to_date('27-09-1988', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 19778.62, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1035, '邓香敏', '110101196607163109', '女', to_date('16-07-1966', 'dd-mm-yyyy'), '人力资源师', to_date('12-04-2007 17:47:14', 'dd-mm-yyyy hh24:mi:ss'), 29463.38, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1037, '霍振方', '110101198411070014', '男', to_date('07-11-1984', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 23731.31, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1038, '许双鸽', '110101781217004 ', '女', to_date('17-12-1978', 'dd-mm-yyyy'), '网络营销师', to_date('05-09-2007 18:45:00', 'dd-mm-yyyy hh24:mi:ss'), 16512.52, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1040, '张春红', '110101197806176089', '女', to_date('17-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('21-11-2004 06:52:30', 'dd-mm-yyyy hh24:mi:ss'), 31728.83, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1041, '卢玉莲', '110101510606004 ', '女', to_date('06-06-1951', 'dd-mm-yyyy'), '人力资源师', to_date('30-03-2009 17:05:45', 'dd-mm-yyyy hh24:mi:ss'), 17596.43, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1042, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '讲师', to_date('13-06-2008 03:24:47', 'dd-mm-yyyy hh24:mi:ss'), 8443.59, 50, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1043, '朱水娃', '110101195210033512', '男', to_date('03-10-1952', 'dd-mm-yyyy'), '讲师', to_date('11-10-2009 03:40:53', 'dd-mm-yyyy hh24:mi:ss'), 9123.09, 30, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1045, '高大荣', '110101195504073528', '女', to_date('07-04-1955', 'dd-mm-yyyy'), '考试专员', to_date('07-12-2005 14:56:05', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1046, '秦付根', '110101195301034035', '男', to_date('03-01-1953', 'dd-mm-yyyy'), '讲师', to_date('10-12-2004 22:51:51', 'dd-mm-yyyy hh24:mi:ss'), 16420.33, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1047, '樊增妮', '110101410715352 ', '女', to_date('15-07-1941', 'dd-mm-yyyy'), '网络营销师', to_date('02-12-2005 14:41:54', 'dd-mm-yyyy hh24:mi:ss'), 13316.01, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1048, '宋素敏', '11010119720111458X', '女', to_date('11-02-1972', 'dd-mm-yyyy'), '岗位分析师', to_date('26-09-2004 12:15:57', 'dd-mm-yyyy hh24:mi:ss'), 2142.92, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1049, '李记', '110101194803256012', '男', to_date('25-03-1948', 'dd-mm-yyyy'), '网络营销师', to_date('23-03-2006 19:12:45', 'dd-mm-yyyy hh24:mi:ss'), 13866.09, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1050, '秦单风', '110101198911153625', '女', to_date('15-11-1989', 'dd-mm-yyyy'), '考试专员', to_date('21-10-2012 05:31:34', 'dd-mm-yyyy hh24:mi:ss'), 21419.38, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1051, '秦占豪', '110101198509034011', '男', to_date('03-09-1985', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 31564.79, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1054, '张利娟', '110101197901173062', '女', to_date('17-01-1979', 'dd-mm-yyyy'), '网络营销师', to_date('08-05-2011 22:37:13', 'dd-mm-yyyy hh24:mi:ss'), 7419.99, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1055, '陈向琼', '11010119871010354X', '男', to_date('10-10-1987', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1056, '杨晓磊', '110101199105106079', '男', to_date('10-05-1991', 'dd-mm-yyyy'), '研发', to_date('05-04-2012 22:16:05', 'dd-mm-yyyy hh24:mi:ss'), 20812.41, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1057, '黄芳菊', '110101196611133520', '女', to_date('13-11-1966', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2008 17:36:20', 'dd-mm-yyyy hh24:mi:ss'), 12711.46, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1058, '李红勤', '110101197209084047', '女', to_date('08-09-1972', 'dd-mm-yyyy'), '运维工程师', to_date('01-03-2007 05:57:34', 'dd-mm-yyyy hh24:mi:ss'), 21119.95, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1060, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '考试专员', to_date('22-08-2007 08:06:47', 'dd-mm-yyyy hh24:mi:ss'), 24544.66, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1061, '高发娃', '110101192905226032', '男', to_date('22-05-1929', 'dd-mm-yyyy'), '运维工程师', to_date('12-12-2004 22:49:04', 'dd-mm-yyyy hh24:mi:ss'), 23458.34, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1062, '李新昌', '110101196403106013', '男', to_date('10-03-1964', 'dd-mm-yyyy'), '研发', to_date('01-04-2011 18:00:33', 'dd-mm-yyyy hh24:mi:ss'), 18605.46, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1065, '赵永刚', '110101197507310014', '男', to_date('31-07-1975', 'dd-mm-yyyy'), '岗位分析师', to_date('05-12-2009 15:00:29', 'dd-mm-yyyy hh24:mi:ss'), 3155.96, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1067, '冯世伟', '110101198811154532', '男', to_date('15-11-1988', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 17854.88, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1068, '张延付', '110101197005233514', '男', to_date('23-05-1970', 'dd-mm-yyyy'), '岗位分析师', to_date('21-05-2009 10:16:16', 'dd-mm-yyyy hh24:mi:ss'), 24294.43, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1070, '陈粉', '110101195801206040', '女', to_date('20-01-1958', 'dd-mm-yyyy'), '营销专员', to_date('29-06-2011 21:27:04', 'dd-mm-yyyy hh24:mi:ss'), 17708.56, 20, null, 600.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1071, '张根祥', '110101194412126513', '男', to_date('12-12-1944', 'dd-mm-yyyy'), '岗位分析师', to_date('06-10-2006 12:14:34', 'dd-mm-yyyy hh24:mi:ss'), 8802.52, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1074, '李秋彩', '110101197411186020', '女', to_date('18-11-1974', 'dd-mm-yyyy'), '考试专员', to_date('09-04-2005 01:11:29', 'dd-mm-yyyy hh24:mi:ss'), 19315.97, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1075, '李建玲', '110101198110164423', '女', to_date('16-10-1981', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9023.25, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1076, '张仙', '110101530824316 ', '女', to_date('24-08-1953', 'dd-mm-yyyy'), '考试专员', to_date('09-05-2011 11:15:29', 'dd-mm-yyyy hh24:mi:ss'), 8654.83, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1077, '朱金典', '110101196810023531', '男', to_date('02-10-1968', 'dd-mm-yyyy'), '营销专员', to_date('11-01-2008 11:13:31', 'dd-mm-yyyy hh24:mi:ss'), 6687.97, 20, null, 2700.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1079, '孙玉环', '110101195006056047', '女', to_date('05-06-1950', 'dd-mm-yyyy'), '考试专员', to_date('17-11-2008 12:48:12', 'dd-mm-yyyy hh24:mi:ss'), 7490.24, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1080, '邢中景', '110101198208284519', '男', to_date('28-08-1982', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 24990.57, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1081, '韩巧真', '110101198404190026', '女', to_date('19-04-1984', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9880.26, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1084, '杜巧琴', '110101196201036089', '女', to_date('03-01-1962', 'dd-mm-yyyy'), '岗位分析师', to_date('13-01-2011 16:11:23', 'dd-mm-yyyy hh24:mi:ss'), 21655.36, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1085, '席妞娃', '110101194601154026', '女', to_date('15-01-1946', 'dd-mm-yyyy'), '运维工程师', to_date('15-08-2008 06:36:11', 'dd-mm-yyyy hh24:mi:ss'), 24615.12, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1087, '薛素粉', '110101196701044528', '女', to_date('04-01-1967', 'dd-mm-yyyy'), '讲师', to_date('10-09-2007 06:07:14', 'dd-mm-yyyy hh24:mi:ss'), 12357.56, null, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1088, '王雪英', '110101193311264521', '女', to_date('26-11-1933', 'dd-mm-yyyy'), '岗位分析师', to_date('18-02-2006 23:37:15', 'dd-mm-yyyy hh24:mi:ss'), 23670.53, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1089, '刘秀菊', '110101530414306 ', '女', to_date('14-04-1953', 'dd-mm-yyyy'), '研发', to_date('11-09-2004 18:17:49', 'dd-mm-yyyy hh24:mi:ss'), 22608.20, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1090, '刘芳芳', '110101198912216025', '女', to_date('21-12-1989', 'dd-mm-yyyy'), '网络营销师', to_date('10-10-2012 00:24:11', 'dd-mm-yyyy hh24:mi:ss'), 9749.45, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1091, '郝方方', '110101198605165580', '女', to_date('16-05-1986', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 5944.72, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1092, '赵利萍', '110101196712063564', '女', to_date('06-12-1967', 'dd-mm-yyyy'), '岗位分析师', to_date('01-08-2006 17:26:08', 'dd-mm-yyyy hh24:mi:ss'), 4575.09, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1093, '杨联星', '110101195312284013', '男', to_date('28-12-1953', 'dd-mm-yyyy'), '考试专员', to_date('27-10-2009 08:41:47', 'dd-mm-yyyy hh24:mi:ss'), 24545.93, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1094, '冯焕', '110101194205093524', '女', to_date('09-05-1942', 'dd-mm-yyyy'), '运维工程师', to_date('27-09-2010 18:25:55', 'dd-mm-yyyy hh24:mi:ss'), 21391.42, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1096, '杨晓雨', '110101198910070043', '女', to_date('07-10-1989', 'dd-mm-yyyy'), '营销专员', to_date('07-08-2013 05:49:14', 'dd-mm-yyyy hh24:mi:ss'), 4161.31, 20, null, 2322.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1097, '柴帅友', '110101198510254038', '男', to_date('25-10-1985', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7805.94, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1098, '韩国强', '110101621016003 ', '男', to_date('16-10-1962', 'dd-mm-yyyy'), '研发', to_date('01-09-2007 12:30:52', 'dd-mm-yyyy hh24:mi:ss'), 13755.87, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1099, '王参妮', '11010119490831352X', '女', to_date('31-08-1949', 'dd-mm-yyyy'), '岗位分析师', to_date('11-10-2005 13:17:18', 'dd-mm-yyyy hh24:mi:ss'), 26627.94, 30, null, null); commit; 数据库脚本 --创建表分区根据某一列(range)(用范围限定,范围分区) 概念: 表空间的创建: 操作代码 create table TEACHER ( tno NUMBER(4) not null, tname VARCHAR2(30) not null, tid CHAR(18), gendar CHAR(3), birthdate DATE, job VARCHAR2(20), hiredate DATE, sal NUMBER(7,2), deptno NUMBER(2), mgrno NUMBER(4), comm NUMBER(7,2) ) partition by range(tno) ( partition part1 values less than(1030) tablespace partition1, partition part2 values less than(1080) tablespace partition2, partition part3 values less than(maxvalue) tablespace partition3 ); 查询表分区 --查询对应表分区下的数据 select * from teacher partition(part3) --查询所有表分区 select * from all_tab_partitions --查询子分区和分区(组合分区中用的) select * from teacher partition(EMPLOYEE_DEPTNO_10) select * from teacher SUBPARTITION(EMPLOYEE_10_JOB_MAGAGER) 删除表分区 --1.删除表分区,包含分区中的所有数据 alter table teacher drop partition part1; --查一下有没有 select * from teacher partition(part1) select * from teacher select * from all_tab_partitions --继续删 alter table teacher drop partition part2; alter table teacher drop partition part3; --报错,所以更换另外一种手段 --2.删除表以及它的表分区,到回收站 drop table teacher purge; --查一下 select * from all_tab_partitions --3.清空回收站,以防止有同名表分区 purge table teacher 创建表分区,(list)根据列表(男或者女,中国省份这种定值) 操作: create table TEACHER ( tno NUMBER(4) not null, tname VARCHAR2(30) not null, tid CHAR(18), gendar CHAR(3), birthdate DATE, job VARCHAR2(20), hiredate DATE, sal NUMBER(7,2), deptno NUMBER(2), mgrno NUMBER(4), comm NUMBER(7,2) ) partition by list(gendar) ( partition part1 values ('男') tablespace partition1, partition part2 values ('女') tablespace partition2 ); 创建分区(Hash),必须是2的n次方的分区数量 操作: create table TEACHER ( tno NUMBER(4) not null, tname VARCHAR2(30) not null, tid CHAR(18), gendar CHAR(3), birthdate DATE, job VARCHAR2(20), hiredate DATE, sal NUMBER(7,2), deptno NUMBER(2), mgrno NUMBER(4), comm NUMBER(7,2) ) partition by hash(tname) ( partition part1 tablespace partition1, partition part2 tablespace partition2 ); 组合分区() 可以使用上面三种中的任意俩种,或者任意一种使用俩次进行组合嵌套 对于同一张组合分区表而言,子分区的名字不能相同,即使不在相同的分区里! 操作: create table TEACHER ( tno NUMBER(4) not null, tname VARCHAR2(30) not null, tid CHAR(18), gendar CHAR(3), birthdate DATE, job VARCHAR2(20), hiredate DATE, sal NUMBER(7,2), deptno NUMBER(2), mgrno NUMBER(4), comm NUMBER(7,2) ) PARTITION BY LIST (DEPTNO) SUBPARTITION BY LIST (JOB) ( PARTITION EMPLOYEE_DEPTNO_10 VALUES (10) TABLESPACE partition1 ( SUBPARTITION EMPLOYEE_10_JOB_MAGAGER VALUES ('考试专员'), SUBPARTITION EMPLOYEE_10_JOB_DEFAULT VALUES (DEFAULT) ), PARTITION EMPLOYEE_DEPTNO_20 VALUES (20) TABLESPACE partition2 ( SUBPARTITION EMPLOYEE_20_JOB_MAGAGER VALUES ('考试专员'), SUBPARTITION EMPLOYEE_20_JOB_DEFAULT VALUES (DEFAULT) ), PARTITION EMPLOYEE_DEPTNO_OTHERS VALUES (DEFAULT) TABLESPACE partition3 ( SUBPARTITION EMPLOYEE_30_JOB_MAGAGER VALUES ('考试专员'), SUBPARTITION EMPLOYEE_30_JOB_DEFAULT VALUES (DEFAULT) ) ); --查询子分区和分区(组合分区中用的) select * from teacher partition(EMPLOYEE_DEPTNO_10) select * from teacher SUBPARTITION(EMPLOYEE_10_JOB_MAGAGER)
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 伪列:不真实存储在真表中,但是我们可以查询到不能对伪列进行增删改操作! 分页可以用rownum来分!!!!!!!(因为oracle中没有limit) 放一份数据库脚本,供测试使用 create table DEPT ( deptno NUMBER(2) not null, dname VARCHAR2(20), loc VARCHAR2(13) ); alter table DEPT add constraint PK_DEPT primary key (DEPTNO); create table TEACHER ( tno NUMBER(4) not null, tname VARCHAR2(30) not null, tid CHAR(18), gendar CHAR(3), birthdate DATE, job VARCHAR2(20), hiredate DATE, sal NUMBER(7,2), deptno NUMBER(2), mgrno NUMBER(4), comm NUMBER(7,2) ); insert into DEPT (deptno, dname, loc) values (40, '人力部', '北京海淀'); insert into DEPT (deptno, dname, loc) values (30, '产品部', '北京海淀'); insert into DEPT (deptno, dname, loc) values (20, '招生部', '上海虹桥'); insert into DEPT (deptno, dname, loc) values (10, '研究院', '北京海淀'); insert into DEPT (deptno, dname, loc) values (50, '系统部', '北京昌平'); commit; insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1002, '赵辉', '110101760609001 ', '男', to_date('09-06-1976', 'dd-mm-yyyy'), '考试专员', to_date('23-05-2006 02:40:40', 'dd-mm-yyyy hh24:mi:ss'), 29370.95, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1003, '杨利乐', '110101198705256045', '女', to_date('25-05-1987', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7134.32, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1004, '王益辉', '110101199108154770', '男', to_date('15-08-1991', 'dd-mm-yyyy'), '营销专员', to_date('16-01-2012 03:12:43', 'dd-mm-yyyy hh24:mi:ss'), 30737.36, 20, null, 2300.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1006, '秦璐璐', '110101199004153068', '女', to_date('14-04-1990', 'dd-mm-yyyy'), '运维工程师', to_date('20-06-2012 00:47:09', 'dd-mm-yyyy hh24:mi:ss'), 9013.25, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1007, '梁改焕', '110101196911206548', '女', to_date('20-11-1969', 'dd-mm-yyyy'), '讲师', to_date('13-06-2006 23:07:02', 'dd-mm-yyyy hh24:mi:ss'), 8664.16, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1008, '冯爱仙', '110101196804021521', '女', to_date('02-04-1968', 'dd-mm-yyyy'), '讲师', to_date('06-06-2006 13:41:50', 'dd-mm-yyyy hh24:mi:ss'), 29936.29, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1009, '秦亚杰', '110101196312163531', '男', to_date('16-12-1963', 'dd-mm-yyyy'), '岗位分析师', to_date('13-07-2005 06:32:30', 'dd-mm-yyyy hh24:mi:ss'), 24991.44, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1010, '刘浩星', '110101198806283516', '男', to_date('28-06-1988', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 22645.92, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1011, '秦春叶', '110101197103033540', '女', to_date('03-03-1971', 'dd-mm-yyyy'), '网络营销师', to_date('07-07-2007 16:02:04', 'dd-mm-yyyy hh24:mi:ss'), 31653.23, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1012, '陈水花', '110101192811043026', '女', to_date('04-11-1928', 'dd-mm-yyyy'), '考试专员', to_date('29-01-2005 23:21:59', 'dd-mm-yyyy hh24:mi:ss'), 29773.37, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1013, '马付妮', '110101195806133522', '女', to_date('13-06-1958', 'dd-mm-yyyy'), '研发', to_date('17-11-2004 08:54:04', 'dd-mm-yyyy hh24:mi:ss'), 17041.60, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1015, '刘得安', '110101195210083518', '男', to_date('08-10-1952', 'dd-mm-yyyy'), '考试专员', to_date('13-03-2005 23:25:37', 'dd-mm-yyyy hh24:mi:ss'), 30356.99, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1016, '高利芹', '110101198307276020', '女', to_date('27-07-1983', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 25751.36, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1017, '刘志刚', '110101197806164493', '男', to_date('16-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('10-05-2008 13:46:33', 'dd-mm-yyyy hh24:mi:ss'), 22344.73, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1018, '高心立', '110101194102076011', '男', to_date('07-02-1941', 'dd-mm-yyyy'), '网络营销师', to_date('03-03-2005 15:17:07', 'dd-mm-yyyy hh24:mi:ss'), 19981.02, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1019, '徐丽', '11010119790809354X', '男', to_date('09-08-1979', 'dd-mm-yyyy'), '研发', to_date('09-12-2009 18:37:22', 'dd-mm-yyyy hh24:mi:ss'), 10950.33, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1021, '刘志红', '110101196504284452', '男', to_date('28-04-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('20-09-2011 10:51:33', 'dd-mm-yyyy hh24:mi:ss'), 7122.60, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1022, '孔鹏飞', '110101198603304014', '男', to_date('30-03-1986', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7045.28, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1023, '李建坡', '110101731107301 ', '男', to_date('07-11-1973', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2009 06:28:20', 'dd-mm-yyyy hh24:mi:ss'), 21133.91, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1024, '冯爱敏', '110101196907283840', '女', to_date('18-07-1969', 'dd-mm-yyyy'), '营销专员', to_date('12-09-2005 22:41:06', 'dd-mm-yyyy hh24:mi:ss'), 3360.91, 20, null, 50000.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1025, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '网络营销师', to_date('03-09-2007 14:55:06', 'dd-mm-yyyy hh24:mi:ss'), 12136.65, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1026, '牛伟伟', '11010119851120602X', '女', to_date('20-11-1985', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 6622.66, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1027, '郭香云', '110101196010154525', '女', to_date('15-10-1960', 'dd-mm-yyyy'), '网络营销师', to_date('03-05-2005 13:01:22', 'dd-mm-yyyy hh24:mi:ss'), 26436.18, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1028, '朱花枝', '110101195605154028', '女', to_date('15-05-1956', 'dd-mm-yyyy'), '研发', to_date('11-09-2007 07:41:01', 'dd-mm-yyyy hh24:mi:ss'), 10095.22, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1029, '李岗', '110101196505163095', '男', to_date('16-05-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('09-11-2007 17:26:38', 'dd-mm-yyyy hh24:mi:ss'), 23928.84, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1030, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '营销专员', to_date('12-05-2007 19:48:21', 'dd-mm-yyyy hh24:mi:ss'), 3492.19, 20, null, 25000.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1031, '孙龙举', '110101198908306037', '男', to_date('30-08-1989', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4323.84, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1032, '韩朝旭', '110101199003270513', '男', to_date('27-03-1900', 'dd-mm-yyyy'), '人力资源师', to_date('11-09-2010 17:54:30', 'dd-mm-yyyy hh24:mi:ss'), 13740.92, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1033, '孙少光', '110101198809274535', '男', to_date('27-09-1988', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 19778.62, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1035, '邓香敏', '110101196607163109', '女', to_date('16-07-1966', 'dd-mm-yyyy'), '人力资源师', to_date('12-04-2007 17:47:14', 'dd-mm-yyyy hh24:mi:ss'), 29463.38, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1037, '霍振方', '110101198411070014', '男', to_date('07-11-1984', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 23731.31, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1038, '许双鸽', '110101781217004 ', '女', to_date('17-12-1978', 'dd-mm-yyyy'), '网络营销师', to_date('05-09-2007 18:45:00', 'dd-mm-yyyy hh24:mi:ss'), 16512.52, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1040, '张春红', '110101197806176089', '女', to_date('17-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('21-11-2004 06:52:30', 'dd-mm-yyyy hh24:mi:ss'), 31728.83, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1041, '卢玉莲', '110101510606004 ', '女', to_date('06-06-1951', 'dd-mm-yyyy'), '人力资源师', to_date('30-03-2009 17:05:45', 'dd-mm-yyyy hh24:mi:ss'), 17596.43, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1042, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '讲师', to_date('13-06-2008 03:24:47', 'dd-mm-yyyy hh24:mi:ss'), 8443.59, 50, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1043, '朱水娃', '110101195210033512', '男', to_date('03-10-1952', 'dd-mm-yyyy'), '讲师', to_date('11-10-2009 03:40:53', 'dd-mm-yyyy hh24:mi:ss'), 9123.09, 30, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1045, '高大荣', '110101195504073528', '女', to_date('07-04-1955', 'dd-mm-yyyy'), '考试专员', to_date('07-12-2005 14:56:05', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1046, '秦付根', '110101195301034035', '男', to_date('03-01-1953', 'dd-mm-yyyy'), '讲师', to_date('10-12-2004 22:51:51', 'dd-mm-yyyy hh24:mi:ss'), 16420.33, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1047, '樊增妮', '110101410715352 ', '女', to_date('15-07-1941', 'dd-mm-yyyy'), '网络营销师', to_date('02-12-2005 14:41:54', 'dd-mm-yyyy hh24:mi:ss'), 13316.01, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1048, '宋素敏', '11010119720111458X', '女', to_date('11-02-1972', 'dd-mm-yyyy'), '岗位分析师', to_date('26-09-2004 12:15:57', 'dd-mm-yyyy hh24:mi:ss'), 2142.92, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1049, '李记', '110101194803256012', '男', to_date('25-03-1948', 'dd-mm-yyyy'), '网络营销师', to_date('23-03-2006 19:12:45', 'dd-mm-yyyy hh24:mi:ss'), 13866.09, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1050, '秦单风', '110101198911153625', '女', to_date('15-11-1989', 'dd-mm-yyyy'), '考试专员', to_date('21-10-2012 05:31:34', 'dd-mm-yyyy hh24:mi:ss'), 21419.38, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1051, '秦占豪', '110101198509034011', '男', to_date('03-09-1985', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 31564.79, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1054, '张利娟', '110101197901173062', '女', to_date('17-01-1979', 'dd-mm-yyyy'), '网络营销师', to_date('08-05-2011 22:37:13', 'dd-mm-yyyy hh24:mi:ss'), 7419.99, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1055, '陈向琼', '11010119871010354X', '男', to_date('10-10-1987', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1056, '杨晓磊', '110101199105106079', '男', to_date('10-05-1991', 'dd-mm-yyyy'), '研发', to_date('05-04-2012 22:16:05', 'dd-mm-yyyy hh24:mi:ss'), 20812.41, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1057, '黄芳菊', '110101196611133520', '女', to_date('13-11-1966', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2008 17:36:20', 'dd-mm-yyyy hh24:mi:ss'), 12711.46, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1058, '李红勤', '110101197209084047', '女', to_date('08-09-1972', 'dd-mm-yyyy'), '运维工程师', to_date('01-03-2007 05:57:34', 'dd-mm-yyyy hh24:mi:ss'), 21119.95, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1060, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '考试专员', to_date('22-08-2007 08:06:47', 'dd-mm-yyyy hh24:mi:ss'), 24544.66, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1061, '高发娃', '110101192905226032', '男', to_date('22-05-1929', 'dd-mm-yyyy'), '运维工程师', to_date('12-12-2004 22:49:04', 'dd-mm-yyyy hh24:mi:ss'), 23458.34, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1062, '李新昌', '110101196403106013', '男', to_date('10-03-1964', 'dd-mm-yyyy'), '研发', to_date('01-04-2011 18:00:33', 'dd-mm-yyyy hh24:mi:ss'), 18605.46, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1065, '赵永刚', '110101197507310014', '男', to_date('31-07-1975', 'dd-mm-yyyy'), '岗位分析师', to_date('05-12-2009 15:00:29', 'dd-mm-yyyy hh24:mi:ss'), 3155.96, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1067, '冯世伟', '110101198811154532', '男', to_date('15-11-1988', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 17854.88, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1068, '张延付', '110101197005233514', '男', to_date('23-05-1970', 'dd-mm-yyyy'), '岗位分析师', to_date('21-05-2009 10:16:16', 'dd-mm-yyyy hh24:mi:ss'), 24294.43, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1070, '陈粉', '110101195801206040', '女', to_date('20-01-1958', 'dd-mm-yyyy'), '营销专员', to_date('29-06-2011 21:27:04', 'dd-mm-yyyy hh24:mi:ss'), 17708.56, 20, null, 600.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1071, '张根祥', '110101194412126513', '男', to_date('12-12-1944', 'dd-mm-yyyy'), '岗位分析师', to_date('06-10-2006 12:14:34', 'dd-mm-yyyy hh24:mi:ss'), 8802.52, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1074, '李秋彩', '110101197411186020', '女', to_date('18-11-1974', 'dd-mm-yyyy'), '考试专员', to_date('09-04-2005 01:11:29', 'dd-mm-yyyy hh24:mi:ss'), 19315.97, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1075, '李建玲', '110101198110164423', '女', to_date('16-10-1981', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9023.25, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1076, '张仙', '110101530824316 ', '女', to_date('24-08-1953', 'dd-mm-yyyy'), '考试专员', to_date('09-05-2011 11:15:29', 'dd-mm-yyyy hh24:mi:ss'), 8654.83, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1077, '朱金典', '110101196810023531', '男', to_date('02-10-1968', 'dd-mm-yyyy'), '营销专员', to_date('11-01-2008 11:13:31', 'dd-mm-yyyy hh24:mi:ss'), 6687.97, 20, null, 2700.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1079, '孙玉环', '110101195006056047', '女', to_date('05-06-1950', 'dd-mm-yyyy'), '考试专员', to_date('17-11-2008 12:48:12', 'dd-mm-yyyy hh24:mi:ss'), 7490.24, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1080, '邢中景', '110101198208284519', '男', to_date('28-08-1982', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 24990.57, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1081, '韩巧真', '110101198404190026', '女', to_date('19-04-1984', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9880.26, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1084, '杜巧琴', '110101196201036089', '女', to_date('03-01-1962', 'dd-mm-yyyy'), '岗位分析师', to_date('13-01-2011 16:11:23', 'dd-mm-yyyy hh24:mi:ss'), 21655.36, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1085, '席妞娃', '110101194601154026', '女', to_date('15-01-1946', 'dd-mm-yyyy'), '运维工程师', to_date('15-08-2008 06:36:11', 'dd-mm-yyyy hh24:mi:ss'), 24615.12, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1087, '薛素粉', '110101196701044528', '女', to_date('04-01-1967', 'dd-mm-yyyy'), '讲师', to_date('10-09-2007 06:07:14', 'dd-mm-yyyy hh24:mi:ss'), 12357.56, null, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1088, '王雪英', '110101193311264521', '女', to_date('26-11-1933', 'dd-mm-yyyy'), '岗位分析师', to_date('18-02-2006 23:37:15', 'dd-mm-yyyy hh24:mi:ss'), 23670.53, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1089, '刘秀菊', '110101530414306 ', '女', to_date('14-04-1953', 'dd-mm-yyyy'), '研发', to_date('11-09-2004 18:17:49', 'dd-mm-yyyy hh24:mi:ss'), 22608.20, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1090, '刘芳芳', '110101198912216025', '女', to_date('21-12-1989', 'dd-mm-yyyy'), '网络营销师', to_date('10-10-2012 00:24:11', 'dd-mm-yyyy hh24:mi:ss'), 9749.45, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1091, '郝方方', '110101198605165580', '女', to_date('16-05-1986', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 5944.72, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1092, '赵利萍', '110101196712063564', '女', to_date('06-12-1967', 'dd-mm-yyyy'), '岗位分析师', to_date('01-08-2006 17:26:08', 'dd-mm-yyyy hh24:mi:ss'), 4575.09, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1093, '杨联星', '110101195312284013', '男', to_date('28-12-1953', 'dd-mm-yyyy'), '考试专员', to_date('27-10-2009 08:41:47', 'dd-mm-yyyy hh24:mi:ss'), 24545.93, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1094, '冯焕', '110101194205093524', '女', to_date('09-05-1942', 'dd-mm-yyyy'), '运维工程师', to_date('27-09-2010 18:25:55', 'dd-mm-yyyy hh24:mi:ss'), 21391.42, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1096, '杨晓雨', '110101198910070043', '女', to_date('07-10-1989', 'dd-mm-yyyy'), '营销专员', to_date('07-08-2013 05:49:14', 'dd-mm-yyyy hh24:mi:ss'), 4161.31, 20, null, 2322.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1097, '柴帅友', '110101198510254038', '男', to_date('25-10-1985', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7805.94, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1098, '韩国强', '110101621016003 ', '男', to_date('16-10-1962', 'dd-mm-yyyy'), '研发', to_date('01-09-2007 12:30:52', 'dd-mm-yyyy hh24:mi:ss'), 13755.87, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1099, '王参妮', '11010119490831352X', '女', to_date('31-08-1949', 'dd-mm-yyyy'), '岗位分析师', to_date('11-10-2005 13:17:18', 'dd-mm-yyyy hh24:mi:ss'), 26627.94, 30, null, null); commit; 数据库脚本 rowid:一行记录的存储地址(有些类似于java的hashcode的那种感觉) --rowid:代表这一行数据的存储地址A-Za-z0-9+/ select rowid,tname from teacher select * from teacher where rowid='AAASPNAAGAAAACUAAA' rownum:查询结果集中的行的编号 --rownum 是查询结果集中,行的编号 select * from teacher select * from teacher where tno>1020 select rownum,tname from teacher select rownum,tname from teacher where tno>1020 --不同sql,可能查到的rownum都会变化 不同的sql查出来结果集不同的话,他的行的编号是不同的 rownum一般能进行<n或者=1的操作 --rownum只能对=1或者<n 进行操作 select * from teacher where rownum=1 --正确 select * from teacher where rownum=2 --错误 select * from teacher where rownum<6 --正确 select * from teacher where rownum>6 --错误 但是我们非得要做>n或者=n的操作时候,怎么办?类似与分页查询,在oracle中没有limit子句,所以只能从rownum来想想办法 --如果我们想对rownum 进行>n或者=n 进行操作,必须满足下面的条件 --01.需要建立临时表 --02.让rownum成为临时表中真正的列,并给别名 --03.使用rownum的别名进行操作即可 --需求:查询教师表中薪水最高的前5名的老师信息 select tname,rownum,sal from teacher --已经产生了一次rownum order by sal desc --将刚才产生的rownum进行了一次排序,还是第一次的rownum --上面的sql语句最终产生的rownum是乱序的 --来个第一步建立临时表 select tname,rownum,sal from (select tname,rownum,sal from teacher order by sal desc) where rownum<6 --新的思考(类似分页):查询薪水排名5-10的老师信息 --01.思考 select * from teacher order by sal desc --上面的例子已经说明是乱序的了 --02.做5-10的操作 select * from (select t.*,rownum rw from --一个是起别名把rownum固定成列,此时的新的rownum已经顺序正常了 (select * from teacher order by sal desc) t) where rw>5 and rw<10 --03.做个=2的操作 select * from (select t.*,rownum rw from --一个是起别名把rownum固定成列,此时的新的rownum已经顺序正常了 (select * from teacher order by sal desc) t) where rw=2
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 联合查询的实际上的意义就是从俩个结果集中拿有特定联系的结果封装为一个结果集 数据库脚本给放一份,供测试使用 create table DEPT ( deptno NUMBER(2) not null, dname VARCHAR2(20), loc VARCHAR2(13) ); alter table DEPT add constraint PK_DEPT primary key (DEPTNO); create table TEACHER ( tno NUMBER(4) not null, tname VARCHAR2(30) not null, tid CHAR(18), gendar CHAR(3), birthdate DATE, job VARCHAR2(20), hiredate DATE, sal NUMBER(7,2), deptno NUMBER(2), mgrno NUMBER(4), comm NUMBER(7,2) ); insert into DEPT (deptno, dname, loc) values (40, '人力部', '北京海淀'); insert into DEPT (deptno, dname, loc) values (30, '产品部', '北京海淀'); insert into DEPT (deptno, dname, loc) values (20, '招生部', '上海虹桥'); insert into DEPT (deptno, dname, loc) values (10, '研究院', '北京海淀'); insert into DEPT (deptno, dname, loc) values (50, '系统部', '北京昌平'); commit; insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1002, '赵辉', '110101760609001 ', '男', to_date('09-06-1976', 'dd-mm-yyyy'), '考试专员', to_date('23-05-2006 02:40:40', 'dd-mm-yyyy hh24:mi:ss'), 29370.95, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1003, '杨利乐', '110101198705256045', '女', to_date('25-05-1987', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7134.32, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1004, '王益辉', '110101199108154770', '男', to_date('15-08-1991', 'dd-mm-yyyy'), '营销专员', to_date('16-01-2012 03:12:43', 'dd-mm-yyyy hh24:mi:ss'), 30737.36, 20, null, 2300.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1006, '秦璐璐', '110101199004153068', '女', to_date('14-04-1990', 'dd-mm-yyyy'), '运维工程师', to_date('20-06-2012 00:47:09', 'dd-mm-yyyy hh24:mi:ss'), 9013.25, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1007, '梁改焕', '110101196911206548', '女', to_date('20-11-1969', 'dd-mm-yyyy'), '讲师', to_date('13-06-2006 23:07:02', 'dd-mm-yyyy hh24:mi:ss'), 8664.16, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1008, '冯爱仙', '110101196804021521', '女', to_date('02-04-1968', 'dd-mm-yyyy'), '讲师', to_date('06-06-2006 13:41:50', 'dd-mm-yyyy hh24:mi:ss'), 29936.29, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1009, '秦亚杰', '110101196312163531', '男', to_date('16-12-1963', 'dd-mm-yyyy'), '岗位分析师', to_date('13-07-2005 06:32:30', 'dd-mm-yyyy hh24:mi:ss'), 24991.44, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1010, '刘浩星', '110101198806283516', '男', to_date('28-06-1988', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 22645.92, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1011, '秦春叶', '110101197103033540', '女', to_date('03-03-1971', 'dd-mm-yyyy'), '网络营销师', to_date('07-07-2007 16:02:04', 'dd-mm-yyyy hh24:mi:ss'), 31653.23, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1012, '陈水花', '110101192811043026', '女', to_date('04-11-1928', 'dd-mm-yyyy'), '考试专员', to_date('29-01-2005 23:21:59', 'dd-mm-yyyy hh24:mi:ss'), 29773.37, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1013, '马付妮', '110101195806133522', '女', to_date('13-06-1958', 'dd-mm-yyyy'), '研发', to_date('17-11-2004 08:54:04', 'dd-mm-yyyy hh24:mi:ss'), 17041.60, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1015, '刘得安', '110101195210083518', '男', to_date('08-10-1952', 'dd-mm-yyyy'), '考试专员', to_date('13-03-2005 23:25:37', 'dd-mm-yyyy hh24:mi:ss'), 30356.99, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1016, '高利芹', '110101198307276020', '女', to_date('27-07-1983', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 25751.36, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1017, '刘志刚', '110101197806164493', '男', to_date('16-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('10-05-2008 13:46:33', 'dd-mm-yyyy hh24:mi:ss'), 22344.73, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1018, '高心立', '110101194102076011', '男', to_date('07-02-1941', 'dd-mm-yyyy'), '网络营销师', to_date('03-03-2005 15:17:07', 'dd-mm-yyyy hh24:mi:ss'), 19981.02, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1019, '徐丽', '11010119790809354X', '男', to_date('09-08-1979', 'dd-mm-yyyy'), '研发', to_date('09-12-2009 18:37:22', 'dd-mm-yyyy hh24:mi:ss'), 10950.33, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1021, '刘志红', '110101196504284452', '男', to_date('28-04-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('20-09-2011 10:51:33', 'dd-mm-yyyy hh24:mi:ss'), 7122.60, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1022, '孔鹏飞', '110101198603304014', '男', to_date('30-03-1986', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7045.28, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1023, '李建坡', '110101731107301 ', '男', to_date('07-11-1973', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2009 06:28:20', 'dd-mm-yyyy hh24:mi:ss'), 21133.91, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1024, '冯爱敏', '110101196907283840', '女', to_date('18-07-1969', 'dd-mm-yyyy'), '营销专员', to_date('12-09-2005 22:41:06', 'dd-mm-yyyy hh24:mi:ss'), 3360.91, 20, null, 50000.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1025, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '网络营销师', to_date('03-09-2007 14:55:06', 'dd-mm-yyyy hh24:mi:ss'), 12136.65, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1026, '牛伟伟', '11010119851120602X', '女', to_date('20-11-1985', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 6622.66, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1027, '郭香云', '110101196010154525', '女', to_date('15-10-1960', 'dd-mm-yyyy'), '网络营销师', to_date('03-05-2005 13:01:22', 'dd-mm-yyyy hh24:mi:ss'), 26436.18, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1028, '朱花枝', '110101195605154028', '女', to_date('15-05-1956', 'dd-mm-yyyy'), '研发', to_date('11-09-2007 07:41:01', 'dd-mm-yyyy hh24:mi:ss'), 10095.22, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1029, '李岗', '110101196505163095', '男', to_date('16-05-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('09-11-2007 17:26:38', 'dd-mm-yyyy hh24:mi:ss'), 23928.84, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1030, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '营销专员', to_date('12-05-2007 19:48:21', 'dd-mm-yyyy hh24:mi:ss'), 3492.19, 20, null, 25000.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1031, '孙龙举', '110101198908306037', '男', to_date('30-08-1989', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4323.84, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1032, '韩朝旭', '110101199003270513', '男', to_date('27-03-1900', 'dd-mm-yyyy'), '人力资源师', to_date('11-09-2010 17:54:30', 'dd-mm-yyyy hh24:mi:ss'), 13740.92, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1033, '孙少光', '110101198809274535', '男', to_date('27-09-1988', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 19778.62, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1035, '邓香敏', '110101196607163109', '女', to_date('16-07-1966', 'dd-mm-yyyy'), '人力资源师', to_date('12-04-2007 17:47:14', 'dd-mm-yyyy hh24:mi:ss'), 29463.38, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1037, '霍振方', '110101198411070014', '男', to_date('07-11-1984', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 23731.31, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1038, '许双鸽', '110101781217004 ', '女', to_date('17-12-1978', 'dd-mm-yyyy'), '网络营销师', to_date('05-09-2007 18:45:00', 'dd-mm-yyyy hh24:mi:ss'), 16512.52, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1040, '张春红', '110101197806176089', '女', to_date('17-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('21-11-2004 06:52:30', 'dd-mm-yyyy hh24:mi:ss'), 31728.83, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1041, '卢玉莲', '110101510606004 ', '女', to_date('06-06-1951', 'dd-mm-yyyy'), '人力资源师', to_date('30-03-2009 17:05:45', 'dd-mm-yyyy hh24:mi:ss'), 17596.43, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1042, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '讲师', to_date('13-06-2008 03:24:47', 'dd-mm-yyyy hh24:mi:ss'), 8443.59, 50, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1043, '朱水娃', '110101195210033512', '男', to_date('03-10-1952', 'dd-mm-yyyy'), '讲师', to_date('11-10-2009 03:40:53', 'dd-mm-yyyy hh24:mi:ss'), 9123.09, 30, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1045, '高大荣', '110101195504073528', '女', to_date('07-04-1955', 'dd-mm-yyyy'), '考试专员', to_date('07-12-2005 14:56:05', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1046, '秦付根', '110101195301034035', '男', to_date('03-01-1953', 'dd-mm-yyyy'), '讲师', to_date('10-12-2004 22:51:51', 'dd-mm-yyyy hh24:mi:ss'), 16420.33, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1047, '樊增妮', '110101410715352 ', '女', to_date('15-07-1941', 'dd-mm-yyyy'), '网络营销师', to_date('02-12-2005 14:41:54', 'dd-mm-yyyy hh24:mi:ss'), 13316.01, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1048, '宋素敏', '11010119720111458X', '女', to_date('11-02-1972', 'dd-mm-yyyy'), '岗位分析师', to_date('26-09-2004 12:15:57', 'dd-mm-yyyy hh24:mi:ss'), 2142.92, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1049, '李记', '110101194803256012', '男', to_date('25-03-1948', 'dd-mm-yyyy'), '网络营销师', to_date('23-03-2006 19:12:45', 'dd-mm-yyyy hh24:mi:ss'), 13866.09, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1050, '秦单风', '110101198911153625', '女', to_date('15-11-1989', 'dd-mm-yyyy'), '考试专员', to_date('21-10-2012 05:31:34', 'dd-mm-yyyy hh24:mi:ss'), 21419.38, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1051, '秦占豪', '110101198509034011', '男', to_date('03-09-1985', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 31564.79, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1054, '张利娟', '110101197901173062', '女', to_date('17-01-1979', 'dd-mm-yyyy'), '网络营销师', to_date('08-05-2011 22:37:13', 'dd-mm-yyyy hh24:mi:ss'), 7419.99, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1055, '陈向琼', '11010119871010354X', '男', to_date('10-10-1987', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1056, '杨晓磊', '110101199105106079', '男', to_date('10-05-1991', 'dd-mm-yyyy'), '研发', to_date('05-04-2012 22:16:05', 'dd-mm-yyyy hh24:mi:ss'), 20812.41, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1057, '黄芳菊', '110101196611133520', '女', to_date('13-11-1966', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2008 17:36:20', 'dd-mm-yyyy hh24:mi:ss'), 12711.46, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1058, '李红勤', '110101197209084047', '女', to_date('08-09-1972', 'dd-mm-yyyy'), '运维工程师', to_date('01-03-2007 05:57:34', 'dd-mm-yyyy hh24:mi:ss'), 21119.95, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1060, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '考试专员', to_date('22-08-2007 08:06:47', 'dd-mm-yyyy hh24:mi:ss'), 24544.66, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1061, '高发娃', '110101192905226032', '男', to_date('22-05-1929', 'dd-mm-yyyy'), '运维工程师', to_date('12-12-2004 22:49:04', 'dd-mm-yyyy hh24:mi:ss'), 23458.34, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1062, '李新昌', '110101196403106013', '男', to_date('10-03-1964', 'dd-mm-yyyy'), '研发', to_date('01-04-2011 18:00:33', 'dd-mm-yyyy hh24:mi:ss'), 18605.46, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1065, '赵永刚', '110101197507310014', '男', to_date('31-07-1975', 'dd-mm-yyyy'), '岗位分析师', to_date('05-12-2009 15:00:29', 'dd-mm-yyyy hh24:mi:ss'), 3155.96, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1067, '冯世伟', '110101198811154532', '男', to_date('15-11-1988', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 17854.88, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1068, '张延付', '110101197005233514', '男', to_date('23-05-1970', 'dd-mm-yyyy'), '岗位分析师', to_date('21-05-2009 10:16:16', 'dd-mm-yyyy hh24:mi:ss'), 24294.43, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1070, '陈粉', '110101195801206040', '女', to_date('20-01-1958', 'dd-mm-yyyy'), '营销专员', to_date('29-06-2011 21:27:04', 'dd-mm-yyyy hh24:mi:ss'), 17708.56, 20, null, 600.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1071, '张根祥', '110101194412126513', '男', to_date('12-12-1944', 'dd-mm-yyyy'), '岗位分析师', to_date('06-10-2006 12:14:34', 'dd-mm-yyyy hh24:mi:ss'), 8802.52, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1074, '李秋彩', '110101197411186020', '女', to_date('18-11-1974', 'dd-mm-yyyy'), '考试专员', to_date('09-04-2005 01:11:29', 'dd-mm-yyyy hh24:mi:ss'), 19315.97, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1075, '李建玲', '110101198110164423', '女', to_date('16-10-1981', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9023.25, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1076, '张仙', '110101530824316 ', '女', to_date('24-08-1953', 'dd-mm-yyyy'), '考试专员', to_date('09-05-2011 11:15:29', 'dd-mm-yyyy hh24:mi:ss'), 8654.83, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1077, '朱金典', '110101196810023531', '男', to_date('02-10-1968', 'dd-mm-yyyy'), '营销专员', to_date('11-01-2008 11:13:31', 'dd-mm-yyyy hh24:mi:ss'), 6687.97, 20, null, 2700.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1079, '孙玉环', '110101195006056047', '女', to_date('05-06-1950', 'dd-mm-yyyy'), '考试专员', to_date('17-11-2008 12:48:12', 'dd-mm-yyyy hh24:mi:ss'), 7490.24, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1080, '邢中景', '110101198208284519', '男', to_date('28-08-1982', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 24990.57, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1081, '韩巧真', '110101198404190026', '女', to_date('19-04-1984', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9880.26, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1084, '杜巧琴', '110101196201036089', '女', to_date('03-01-1962', 'dd-mm-yyyy'), '岗位分析师', to_date('13-01-2011 16:11:23', 'dd-mm-yyyy hh24:mi:ss'), 21655.36, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1085, '席妞娃', '110101194601154026', '女', to_date('15-01-1946', 'dd-mm-yyyy'), '运维工程师', to_date('15-08-2008 06:36:11', 'dd-mm-yyyy hh24:mi:ss'), 24615.12, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1087, '薛素粉', '110101196701044528', '女', to_date('04-01-1967', 'dd-mm-yyyy'), '讲师', to_date('10-09-2007 06:07:14', 'dd-mm-yyyy hh24:mi:ss'), 12357.56, null, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1088, '王雪英', '110101193311264521', '女', to_date('26-11-1933', 'dd-mm-yyyy'), '岗位分析师', to_date('18-02-2006 23:37:15', 'dd-mm-yyyy hh24:mi:ss'), 23670.53, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1089, '刘秀菊', '110101530414306 ', '女', to_date('14-04-1953', 'dd-mm-yyyy'), '研发', to_date('11-09-2004 18:17:49', 'dd-mm-yyyy hh24:mi:ss'), 22608.20, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1090, '刘芳芳', '110101198912216025', '女', to_date('21-12-1989', 'dd-mm-yyyy'), '网络营销师', to_date('10-10-2012 00:24:11', 'dd-mm-yyyy hh24:mi:ss'), 9749.45, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1091, '郝方方', '110101198605165580', '女', to_date('16-05-1986', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 5944.72, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1092, '赵利萍', '110101196712063564', '女', to_date('06-12-1967', 'dd-mm-yyyy'), '岗位分析师', to_date('01-08-2006 17:26:08', 'dd-mm-yyyy hh24:mi:ss'), 4575.09, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1093, '杨联星', '110101195312284013', '男', to_date('28-12-1953', 'dd-mm-yyyy'), '考试专员', to_date('27-10-2009 08:41:47', 'dd-mm-yyyy hh24:mi:ss'), 24545.93, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1094, '冯焕', '110101194205093524', '女', to_date('09-05-1942', 'dd-mm-yyyy'), '运维工程师', to_date('27-09-2010 18:25:55', 'dd-mm-yyyy hh24:mi:ss'), 21391.42, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1096, '杨晓雨', '110101198910070043', '女', to_date('07-10-1989', 'dd-mm-yyyy'), '营销专员', to_date('07-08-2013 05:49:14', 'dd-mm-yyyy hh24:mi:ss'), 4161.31, 20, null, 2322.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1097, '柴帅友', '110101198510254038', '男', to_date('25-10-1985', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7805.94, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1098, '韩国强', '110101621016003 ', '男', to_date('16-10-1962', 'dd-mm-yyyy'), '研发', to_date('01-09-2007 12:30:52', 'dd-mm-yyyy hh24:mi:ss'), 13755.87, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1099, '王参妮', '11010119490831352X', '女', to_date('31-08-1949', 'dd-mm-yyyy'), '岗位分析师', to_date('11-10-2005 13:17:18', 'dd-mm-yyyy hh24:mi:ss'), 26627.94, 30, null, null); commit; 数据库脚本 这个有需求一点数学基础,应该初中或者高中都有讲过 1.并集 union(重复数据只显示一次) --01.并集 union: 得到的结果集是多条slq执行的结果集的集合,重复数据只显示一次 select tno from teacher where tno<1020 union select tno from teacher where tno>1025 1.并集 union all(重复数据显示多次) --01.并集 union all: 重复的数据只显示多次 select tno from teacher where tno<1020 union all select tno from teacher where tno>1010 2.交集 insersect --02.交集intersect: 取俩个结果集中的公共部分 select tno from teacher where tno<1020 intersect select tno from teacher where tno>1010 3.补集 minus --03.补集minus:要求第一条sql语句的查询结果数>第二条sql语句的查询结果数,并且第二个结果集都在第一个结果集中存在 select tno from teacher where tno<1025 minus select tno from teacher where tno<1020
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 分析函数: 分析函数,可以修改排序的规则!!!!!!!!!!!!!!!!!!!!!!!! 首先把数据库脚本给放一下,供测试使用: create table DEPT ( deptno NUMBER(2) not null, dname VARCHAR2(20), loc VARCHAR2(13) ); alter table DEPT add constraint PK_DEPT primary key (DEPTNO); create table TEACHER ( tno NUMBER(4) not null, tname VARCHAR2(30) not null, tid CHAR(18), gendar CHAR(3), birthdate DATE, job VARCHAR2(20), hiredate DATE, sal NUMBER(7,2), deptno NUMBER(2), mgrno NUMBER(4), comm NUMBER(7,2) ); insert into DEPT (deptno, dname, loc) values (40, '人力部', '北京海淀'); insert into DEPT (deptno, dname, loc) values (30, '产品部', '北京海淀'); insert into DEPT (deptno, dname, loc) values (20, '招生部', '上海虹桥'); insert into DEPT (deptno, dname, loc) values (10, '研究院', '北京海淀'); insert into DEPT (deptno, dname, loc) values (50, '系统部', '北京昌平'); commit; insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1002, '赵辉', '110101760609001 ', '男', to_date('09-06-1976', 'dd-mm-yyyy'), '考试专员', to_date('23-05-2006 02:40:40', 'dd-mm-yyyy hh24:mi:ss'), 29370.95, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1003, '杨利乐', '110101198705256045', '女', to_date('25-05-1987', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7134.32, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1004, '王益辉', '110101199108154770', '男', to_date('15-08-1991', 'dd-mm-yyyy'), '营销专员', to_date('16-01-2012 03:12:43', 'dd-mm-yyyy hh24:mi:ss'), 30737.36, 20, null, 2300.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1006, '秦璐璐', '110101199004153068', '女', to_date('14-04-1990', 'dd-mm-yyyy'), '运维工程师', to_date('20-06-2012 00:47:09', 'dd-mm-yyyy hh24:mi:ss'), 9013.25, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1007, '梁改焕', '110101196911206548', '女', to_date('20-11-1969', 'dd-mm-yyyy'), '讲师', to_date('13-06-2006 23:07:02', 'dd-mm-yyyy hh24:mi:ss'), 8664.16, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1008, '冯爱仙', '110101196804021521', '女', to_date('02-04-1968', 'dd-mm-yyyy'), '讲师', to_date('06-06-2006 13:41:50', 'dd-mm-yyyy hh24:mi:ss'), 29936.29, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1009, '秦亚杰', '110101196312163531', '男', to_date('16-12-1963', 'dd-mm-yyyy'), '岗位分析师', to_date('13-07-2005 06:32:30', 'dd-mm-yyyy hh24:mi:ss'), 24991.44, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1010, '刘浩星', '110101198806283516', '男', to_date('28-06-1988', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 22645.92, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1011, '秦春叶', '110101197103033540', '女', to_date('03-03-1971', 'dd-mm-yyyy'), '网络营销师', to_date('07-07-2007 16:02:04', 'dd-mm-yyyy hh24:mi:ss'), 31653.23, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1012, '陈水花', '110101192811043026', '女', to_date('04-11-1928', 'dd-mm-yyyy'), '考试专员', to_date('29-01-2005 23:21:59', 'dd-mm-yyyy hh24:mi:ss'), 29773.37, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1013, '马付妮', '110101195806133522', '女', to_date('13-06-1958', 'dd-mm-yyyy'), '研发', to_date('17-11-2004 08:54:04', 'dd-mm-yyyy hh24:mi:ss'), 17041.60, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1015, '刘得安', '110101195210083518', '男', to_date('08-10-1952', 'dd-mm-yyyy'), '考试专员', to_date('13-03-2005 23:25:37', 'dd-mm-yyyy hh24:mi:ss'), 30356.99, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1016, '高利芹', '110101198307276020', '女', to_date('27-07-1983', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 25751.36, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1017, '刘志刚', '110101197806164493', '男', to_date('16-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('10-05-2008 13:46:33', 'dd-mm-yyyy hh24:mi:ss'), 22344.73, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1018, '高心立', '110101194102076011', '男', to_date('07-02-1941', 'dd-mm-yyyy'), '网络营销师', to_date('03-03-2005 15:17:07', 'dd-mm-yyyy hh24:mi:ss'), 19981.02, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1019, '徐丽', '11010119790809354X', '男', to_date('09-08-1979', 'dd-mm-yyyy'), '研发', to_date('09-12-2009 18:37:22', 'dd-mm-yyyy hh24:mi:ss'), 10950.33, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1021, '刘志红', '110101196504284452', '男', to_date('28-04-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('20-09-2011 10:51:33', 'dd-mm-yyyy hh24:mi:ss'), 7122.60, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1022, '孔鹏飞', '110101198603304014', '男', to_date('30-03-1986', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7045.28, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1023, '李建坡', '110101731107301 ', '男', to_date('07-11-1973', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2009 06:28:20', 'dd-mm-yyyy hh24:mi:ss'), 21133.91, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1024, '冯爱敏', '110101196907283840', '女', to_date('18-07-1969', 'dd-mm-yyyy'), '营销专员', to_date('12-09-2005 22:41:06', 'dd-mm-yyyy hh24:mi:ss'), 3360.91, 20, null, 50000.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1025, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '网络营销师', to_date('03-09-2007 14:55:06', 'dd-mm-yyyy hh24:mi:ss'), 12136.65, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1026, '牛伟伟', '11010119851120602X', '女', to_date('20-11-1985', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 6622.66, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1027, '郭香云', '110101196010154525', '女', to_date('15-10-1960', 'dd-mm-yyyy'), '网络营销师', to_date('03-05-2005 13:01:22', 'dd-mm-yyyy hh24:mi:ss'), 26436.18, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1028, '朱花枝', '110101195605154028', '女', to_date('15-05-1956', 'dd-mm-yyyy'), '研发', to_date('11-09-2007 07:41:01', 'dd-mm-yyyy hh24:mi:ss'), 10095.22, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1029, '李岗', '110101196505163095', '男', to_date('16-05-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('09-11-2007 17:26:38', 'dd-mm-yyyy hh24:mi:ss'), 23928.84, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1030, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '营销专员', to_date('12-05-2007 19:48:21', 'dd-mm-yyyy hh24:mi:ss'), 3492.19, 20, null, 25000.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1031, '孙龙举', '110101198908306037', '男', to_date('30-08-1989', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4323.84, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1032, '韩朝旭', '110101199003270513', '男', to_date('27-03-1900', 'dd-mm-yyyy'), '人力资源师', to_date('11-09-2010 17:54:30', 'dd-mm-yyyy hh24:mi:ss'), 13740.92, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1033, '孙少光', '110101198809274535', '男', to_date('27-09-1988', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 19778.62, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1035, '邓香敏', '110101196607163109', '女', to_date('16-07-1966', 'dd-mm-yyyy'), '人力资源师', to_date('12-04-2007 17:47:14', 'dd-mm-yyyy hh24:mi:ss'), 29463.38, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1037, '霍振方', '110101198411070014', '男', to_date('07-11-1984', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 23731.31, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1038, '许双鸽', '110101781217004 ', '女', to_date('17-12-1978', 'dd-mm-yyyy'), '网络营销师', to_date('05-09-2007 18:45:00', 'dd-mm-yyyy hh24:mi:ss'), 16512.52, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1040, '张春红', '110101197806176089', '女', to_date('17-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('21-11-2004 06:52:30', 'dd-mm-yyyy hh24:mi:ss'), 31728.83, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1041, '卢玉莲', '110101510606004 ', '女', to_date('06-06-1951', 'dd-mm-yyyy'), '人力资源师', to_date('30-03-2009 17:05:45', 'dd-mm-yyyy hh24:mi:ss'), 17596.43, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1042, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '讲师', to_date('13-06-2008 03:24:47', 'dd-mm-yyyy hh24:mi:ss'), 8443.59, 50, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1043, '朱水娃', '110101195210033512', '男', to_date('03-10-1952', 'dd-mm-yyyy'), '讲师', to_date('11-10-2009 03:40:53', 'dd-mm-yyyy hh24:mi:ss'), 9123.09, 30, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1045, '高大荣', '110101195504073528', '女', to_date('07-04-1955', 'dd-mm-yyyy'), '考试专员', to_date('07-12-2005 14:56:05', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1046, '秦付根', '110101195301034035', '男', to_date('03-01-1953', 'dd-mm-yyyy'), '讲师', to_date('10-12-2004 22:51:51', 'dd-mm-yyyy hh24:mi:ss'), 16420.33, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1047, '樊增妮', '110101410715352 ', '女', to_date('15-07-1941', 'dd-mm-yyyy'), '网络营销师', to_date('02-12-2005 14:41:54', 'dd-mm-yyyy hh24:mi:ss'), 13316.01, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1048, '宋素敏', '11010119720111458X', '女', to_date('11-02-1972', 'dd-mm-yyyy'), '岗位分析师', to_date('26-09-2004 12:15:57', 'dd-mm-yyyy hh24:mi:ss'), 2142.92, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1049, '李记', '110101194803256012', '男', to_date('25-03-1948', 'dd-mm-yyyy'), '网络营销师', to_date('23-03-2006 19:12:45', 'dd-mm-yyyy hh24:mi:ss'), 13866.09, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1050, '秦单风', '110101198911153625', '女', to_date('15-11-1989', 'dd-mm-yyyy'), '考试专员', to_date('21-10-2012 05:31:34', 'dd-mm-yyyy hh24:mi:ss'), 21419.38, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1051, '秦占豪', '110101198509034011', '男', to_date('03-09-1985', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 31564.79, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1054, '张利娟', '110101197901173062', '女', to_date('17-01-1979', 'dd-mm-yyyy'), '网络营销师', to_date('08-05-2011 22:37:13', 'dd-mm-yyyy hh24:mi:ss'), 7419.99, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1055, '陈向琼', '11010119871010354X', '男', to_date('10-10-1987', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1056, '杨晓磊', '110101199105106079', '男', to_date('10-05-1991', 'dd-mm-yyyy'), '研发', to_date('05-04-2012 22:16:05', 'dd-mm-yyyy hh24:mi:ss'), 20812.41, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1057, '黄芳菊', '110101196611133520', '女', to_date('13-11-1966', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2008 17:36:20', 'dd-mm-yyyy hh24:mi:ss'), 12711.46, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1058, '李红勤', '110101197209084047', '女', to_date('08-09-1972', 'dd-mm-yyyy'), '运维工程师', to_date('01-03-2007 05:57:34', 'dd-mm-yyyy hh24:mi:ss'), 21119.95, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1060, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '考试专员', to_date('22-08-2007 08:06:47', 'dd-mm-yyyy hh24:mi:ss'), 24544.66, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1061, '高发娃', '110101192905226032', '男', to_date('22-05-1929', 'dd-mm-yyyy'), '运维工程师', to_date('12-12-2004 22:49:04', 'dd-mm-yyyy hh24:mi:ss'), 23458.34, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1062, '李新昌', '110101196403106013', '男', to_date('10-03-1964', 'dd-mm-yyyy'), '研发', to_date('01-04-2011 18:00:33', 'dd-mm-yyyy hh24:mi:ss'), 18605.46, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1065, '赵永刚', '110101197507310014', '男', to_date('31-07-1975', 'dd-mm-yyyy'), '岗位分析师', to_date('05-12-2009 15:00:29', 'dd-mm-yyyy hh24:mi:ss'), 3155.96, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1067, '冯世伟', '110101198811154532', '男', to_date('15-11-1988', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 17854.88, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1068, '张延付', '110101197005233514', '男', to_date('23-05-1970', 'dd-mm-yyyy'), '岗位分析师', to_date('21-05-2009 10:16:16', 'dd-mm-yyyy hh24:mi:ss'), 24294.43, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1070, '陈粉', '110101195801206040', '女', to_date('20-01-1958', 'dd-mm-yyyy'), '营销专员', to_date('29-06-2011 21:27:04', 'dd-mm-yyyy hh24:mi:ss'), 17708.56, 20, null, 600.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1071, '张根祥', '110101194412126513', '男', to_date('12-12-1944', 'dd-mm-yyyy'), '岗位分析师', to_date('06-10-2006 12:14:34', 'dd-mm-yyyy hh24:mi:ss'), 8802.52, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1074, '李秋彩', '110101197411186020', '女', to_date('18-11-1974', 'dd-mm-yyyy'), '考试专员', to_date('09-04-2005 01:11:29', 'dd-mm-yyyy hh24:mi:ss'), 19315.97, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1075, '李建玲', '110101198110164423', '女', to_date('16-10-1981', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9023.25, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1076, '张仙', '110101530824316 ', '女', to_date('24-08-1953', 'dd-mm-yyyy'), '考试专员', to_date('09-05-2011 11:15:29', 'dd-mm-yyyy hh24:mi:ss'), 8654.83, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1077, '朱金典', '110101196810023531', '男', to_date('02-10-1968', 'dd-mm-yyyy'), '营销专员', to_date('11-01-2008 11:13:31', 'dd-mm-yyyy hh24:mi:ss'), 6687.97, 20, null, 2700.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1079, '孙玉环', '110101195006056047', '女', to_date('05-06-1950', 'dd-mm-yyyy'), '考试专员', to_date('17-11-2008 12:48:12', 'dd-mm-yyyy hh24:mi:ss'), 7490.24, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1080, '邢中景', '110101198208284519', '男', to_date('28-08-1982', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 24990.57, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1081, '韩巧真', '110101198404190026', '女', to_date('19-04-1984', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9880.26, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1084, '杜巧琴', '110101196201036089', '女', to_date('03-01-1962', 'dd-mm-yyyy'), '岗位分析师', to_date('13-01-2011 16:11:23', 'dd-mm-yyyy hh24:mi:ss'), 21655.36, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1085, '席妞娃', '110101194601154026', '女', to_date('15-01-1946', 'dd-mm-yyyy'), '运维工程师', to_date('15-08-2008 06:36:11', 'dd-mm-yyyy hh24:mi:ss'), 24615.12, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1087, '薛素粉', '110101196701044528', '女', to_date('04-01-1967', 'dd-mm-yyyy'), '讲师', to_date('10-09-2007 06:07:14', 'dd-mm-yyyy hh24:mi:ss'), 12357.56, null, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1088, '王雪英', '110101193311264521', '女', to_date('26-11-1933', 'dd-mm-yyyy'), '岗位分析师', to_date('18-02-2006 23:37:15', 'dd-mm-yyyy hh24:mi:ss'), 23670.53, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1089, '刘秀菊', '110101530414306 ', '女', to_date('14-04-1953', 'dd-mm-yyyy'), '研发', to_date('11-09-2004 18:17:49', 'dd-mm-yyyy hh24:mi:ss'), 22608.20, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1090, '刘芳芳', '110101198912216025', '女', to_date('21-12-1989', 'dd-mm-yyyy'), '网络营销师', to_date('10-10-2012 00:24:11', 'dd-mm-yyyy hh24:mi:ss'), 9749.45, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1091, '郝方方', '110101198605165580', '女', to_date('16-05-1986', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 5944.72, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1092, '赵利萍', '110101196712063564', '女', to_date('06-12-1967', 'dd-mm-yyyy'), '岗位分析师', to_date('01-08-2006 17:26:08', 'dd-mm-yyyy hh24:mi:ss'), 4575.09, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1093, '杨联星', '110101195312284013', '男', to_date('28-12-1953', 'dd-mm-yyyy'), '考试专员', to_date('27-10-2009 08:41:47', 'dd-mm-yyyy hh24:mi:ss'), 24545.93, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1094, '冯焕', '110101194205093524', '女', to_date('09-05-1942', 'dd-mm-yyyy'), '运维工程师', to_date('27-09-2010 18:25:55', 'dd-mm-yyyy hh24:mi:ss'), 21391.42, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1096, '杨晓雨', '110101198910070043', '女', to_date('07-10-1989', 'dd-mm-yyyy'), '营销专员', to_date('07-08-2013 05:49:14', 'dd-mm-yyyy hh24:mi:ss'), 4161.31, 20, null, 2322.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1097, '柴帅友', '110101198510254038', '男', to_date('25-10-1985', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7805.94, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1098, '韩国强', '110101621016003 ', '男', to_date('16-10-1962', 'dd-mm-yyyy'), '研发', to_date('01-09-2007 12:30:52', 'dd-mm-yyyy hh24:mi:ss'), 13755.87, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1099, '王参妮', '11010119490831352X', '女', to_date('31-08-1949', 'dd-mm-yyyy'), '岗位分析师', to_date('11-10-2005 13:17:18', 'dd-mm-yyyy hh24:mi:ss'), 26627.94, 30, null, null); commit; 数据库脚本 --自行修改一些薪水的值,例如改几个薪水为10000,供测试使用 最普通的排序: --普通的按薪水降序排 select tname,sal from teacher order by sal desc 分析函数: 1.rank():具有相等的值排位相同,但是之后的排位跳跃,假如有俩个满分100,他俩同为第一名,接下来的99分就是第三名 --01.rank(): 具有相等值的排位相同,但是之后的排名跳跃 select tname,sal, rank() over(order by sal desc) as "薪水排名" from teacher 2.dense_rank():具有相等的值排位相同,但是之后按顺序连续的排名,假如有俩个满分100,他俩同为第一名,接下来的99分就是第二名 --02.dense_rank(): 具有相等值的排位相同,但是之后的排名连续 select tname,sal, dense_rank() over(order by sal desc) as "薪水排名" from teacher 3.row_number():无论值是否相等,它的排名都是连续的,假如有两个满分100分,他们有一个是第一名,有一个是第二名 --03.row_number(): 无论值是否相等,排名都是连续的 select tname,sal, row_number() over(order by sal desc) as "薪水排名" from teacher 4.如果在分析函数中加分组怎么办?group by是坑定不行的,那么就又延伸了一种写法partition by,等价于group by --04.partition by: 根据部门分组 select deptno,tname,sal, rank() over(partition by deptno order by sal desc) as "薪水排名" from teacher
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 数据库脚本放一下,供测试使用 create table DEPT ( deptno NUMBER(2) not null, dname VARCHAR2(20), loc VARCHAR2(13) ); alter table DEPT add constraint PK_DEPT primary key (DEPTNO); create table TEACHER ( tno NUMBER(4) not null, tname VARCHAR2(30) not null, tid CHAR(18), gendar CHAR(3), birthdate DATE, job VARCHAR2(20), hiredate DATE, sal NUMBER(7,2), deptno NUMBER(2), mgrno NUMBER(4), comm NUMBER(7,2) ); insert into DEPT (deptno, dname, loc) values (40, '人力部', '北京海淀'); insert into DEPT (deptno, dname, loc) values (30, '产品部', '北京海淀'); insert into DEPT (deptno, dname, loc) values (20, '招生部', '上海虹桥'); insert into DEPT (deptno, dname, loc) values (10, '研究院', '北京海淀'); insert into DEPT (deptno, dname, loc) values (50, '系统部', '北京昌平'); commit; insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1002, '赵辉', '110101760609001 ', '男', to_date('09-06-1976', 'dd-mm-yyyy'), '考试专员', to_date('23-05-2006 02:40:40', 'dd-mm-yyyy hh24:mi:ss'), 29370.95, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1003, '杨利乐', '110101198705256045', '女', to_date('25-05-1987', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7134.32, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1004, '王益辉', '110101199108154770', '男', to_date('15-08-1991', 'dd-mm-yyyy'), '营销专员', to_date('16-01-2012 03:12:43', 'dd-mm-yyyy hh24:mi:ss'), 30737.36, 20, null, 2300.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1006, '秦璐璐', '110101199004153068', '女', to_date('14-04-1990', 'dd-mm-yyyy'), '运维工程师', to_date('20-06-2012 00:47:09', 'dd-mm-yyyy hh24:mi:ss'), 9013.25, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1007, '梁改焕', '110101196911206548', '女', to_date('20-11-1969', 'dd-mm-yyyy'), '讲师', to_date('13-06-2006 23:07:02', 'dd-mm-yyyy hh24:mi:ss'), 8664.16, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1008, '冯爱仙', '110101196804021521', '女', to_date('02-04-1968', 'dd-mm-yyyy'), '讲师', to_date('06-06-2006 13:41:50', 'dd-mm-yyyy hh24:mi:ss'), 29936.29, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1009, '秦亚杰', '110101196312163531', '男', to_date('16-12-1963', 'dd-mm-yyyy'), '岗位分析师', to_date('13-07-2005 06:32:30', 'dd-mm-yyyy hh24:mi:ss'), 24991.44, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1010, '刘浩星', '110101198806283516', '男', to_date('28-06-1988', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 22645.92, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1011, '秦春叶', '110101197103033540', '女', to_date('03-03-1971', 'dd-mm-yyyy'), '网络营销师', to_date('07-07-2007 16:02:04', 'dd-mm-yyyy hh24:mi:ss'), 31653.23, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1012, '陈水花', '110101192811043026', '女', to_date('04-11-1928', 'dd-mm-yyyy'), '考试专员', to_date('29-01-2005 23:21:59', 'dd-mm-yyyy hh24:mi:ss'), 29773.37, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1013, '马付妮', '110101195806133522', '女', to_date('13-06-1958', 'dd-mm-yyyy'), '研发', to_date('17-11-2004 08:54:04', 'dd-mm-yyyy hh24:mi:ss'), 17041.60, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1015, '刘得安', '110101195210083518', '男', to_date('08-10-1952', 'dd-mm-yyyy'), '考试专员', to_date('13-03-2005 23:25:37', 'dd-mm-yyyy hh24:mi:ss'), 30356.99, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1016, '高利芹', '110101198307276020', '女', to_date('27-07-1983', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 25751.36, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1017, '刘志刚', '110101197806164493', '男', to_date('16-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('10-05-2008 13:46:33', 'dd-mm-yyyy hh24:mi:ss'), 22344.73, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1018, '高心立', '110101194102076011', '男', to_date('07-02-1941', 'dd-mm-yyyy'), '网络营销师', to_date('03-03-2005 15:17:07', 'dd-mm-yyyy hh24:mi:ss'), 19981.02, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1019, '徐丽', '11010119790809354X', '男', to_date('09-08-1979', 'dd-mm-yyyy'), '研发', to_date('09-12-2009 18:37:22', 'dd-mm-yyyy hh24:mi:ss'), 10950.33, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1021, '刘志红', '110101196504284452', '男', to_date('28-04-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('20-09-2011 10:51:33', 'dd-mm-yyyy hh24:mi:ss'), 7122.60, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1022, '孔鹏飞', '110101198603304014', '男', to_date('30-03-1986', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7045.28, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1023, '李建坡', '110101731107301 ', '男', to_date('07-11-1973', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2009 06:28:20', 'dd-mm-yyyy hh24:mi:ss'), 21133.91, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1024, '冯爱敏', '110101196907283840', '女', to_date('18-07-1969', 'dd-mm-yyyy'), '营销专员', to_date('12-09-2005 22:41:06', 'dd-mm-yyyy hh24:mi:ss'), 3360.91, 20, null, 50000.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1025, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '网络营销师', to_date('03-09-2007 14:55:06', 'dd-mm-yyyy hh24:mi:ss'), 12136.65, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1026, '牛伟伟', '11010119851120602X', '女', to_date('20-11-1985', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 6622.66, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1027, '郭香云', '110101196010154525', '女', to_date('15-10-1960', 'dd-mm-yyyy'), '网络营销师', to_date('03-05-2005 13:01:22', 'dd-mm-yyyy hh24:mi:ss'), 26436.18, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1028, '朱花枝', '110101195605154028', '女', to_date('15-05-1956', 'dd-mm-yyyy'), '研发', to_date('11-09-2007 07:41:01', 'dd-mm-yyyy hh24:mi:ss'), 10095.22, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1029, '李岗', '110101196505163095', '男', to_date('16-05-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('09-11-2007 17:26:38', 'dd-mm-yyyy hh24:mi:ss'), 23928.84, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1030, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '营销专员', to_date('12-05-2007 19:48:21', 'dd-mm-yyyy hh24:mi:ss'), 3492.19, 20, null, 25000.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1031, '孙龙举', '110101198908306037', '男', to_date('30-08-1989', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4323.84, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1032, '韩朝旭', '110101199003270513', '男', to_date('27-03-1900', 'dd-mm-yyyy'), '人力资源师', to_date('11-09-2010 17:54:30', 'dd-mm-yyyy hh24:mi:ss'), 13740.92, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1033, '孙少光', '110101198809274535', '男', to_date('27-09-1988', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 19778.62, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1035, '邓香敏', '110101196607163109', '女', to_date('16-07-1966', 'dd-mm-yyyy'), '人力资源师', to_date('12-04-2007 17:47:14', 'dd-mm-yyyy hh24:mi:ss'), 29463.38, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1037, '霍振方', '110101198411070014', '男', to_date('07-11-1984', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 23731.31, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1038, '许双鸽', '110101781217004 ', '女', to_date('17-12-1978', 'dd-mm-yyyy'), '网络营销师', to_date('05-09-2007 18:45:00', 'dd-mm-yyyy hh24:mi:ss'), 16512.52, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1040, '张春红', '110101197806176089', '女', to_date('17-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('21-11-2004 06:52:30', 'dd-mm-yyyy hh24:mi:ss'), 31728.83, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1041, '卢玉莲', '110101510606004 ', '女', to_date('06-06-1951', 'dd-mm-yyyy'), '人力资源师', to_date('30-03-2009 17:05:45', 'dd-mm-yyyy hh24:mi:ss'), 17596.43, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1042, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '讲师', to_date('13-06-2008 03:24:47', 'dd-mm-yyyy hh24:mi:ss'), 8443.59, 50, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1043, '朱水娃', '110101195210033512', '男', to_date('03-10-1952', 'dd-mm-yyyy'), '讲师', to_date('11-10-2009 03:40:53', 'dd-mm-yyyy hh24:mi:ss'), 9123.09, 30, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1045, '高大荣', '110101195504073528', '女', to_date('07-04-1955', 'dd-mm-yyyy'), '考试专员', to_date('07-12-2005 14:56:05', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1046, '秦付根', '110101195301034035', '男', to_date('03-01-1953', 'dd-mm-yyyy'), '讲师', to_date('10-12-2004 22:51:51', 'dd-mm-yyyy hh24:mi:ss'), 16420.33, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1047, '樊增妮', '110101410715352 ', '女', to_date('15-07-1941', 'dd-mm-yyyy'), '网络营销师', to_date('02-12-2005 14:41:54', 'dd-mm-yyyy hh24:mi:ss'), 13316.01, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1048, '宋素敏', '11010119720111458X', '女', to_date('11-02-1972', 'dd-mm-yyyy'), '岗位分析师', to_date('26-09-2004 12:15:57', 'dd-mm-yyyy hh24:mi:ss'), 2142.92, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1049, '李记', '110101194803256012', '男', to_date('25-03-1948', 'dd-mm-yyyy'), '网络营销师', to_date('23-03-2006 19:12:45', 'dd-mm-yyyy hh24:mi:ss'), 13866.09, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1050, '秦单风', '110101198911153625', '女', to_date('15-11-1989', 'dd-mm-yyyy'), '考试专员', to_date('21-10-2012 05:31:34', 'dd-mm-yyyy hh24:mi:ss'), 21419.38, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1051, '秦占豪', '110101198509034011', '男', to_date('03-09-1985', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 31564.79, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1054, '张利娟', '110101197901173062', '女', to_date('17-01-1979', 'dd-mm-yyyy'), '网络营销师', to_date('08-05-2011 22:37:13', 'dd-mm-yyyy hh24:mi:ss'), 7419.99, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1055, '陈向琼', '11010119871010354X', '男', to_date('10-10-1987', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1056, '杨晓磊', '110101199105106079', '男', to_date('10-05-1991', 'dd-mm-yyyy'), '研发', to_date('05-04-2012 22:16:05', 'dd-mm-yyyy hh24:mi:ss'), 20812.41, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1057, '黄芳菊', '110101196611133520', '女', to_date('13-11-1966', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2008 17:36:20', 'dd-mm-yyyy hh24:mi:ss'), 12711.46, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1058, '李红勤', '110101197209084047', '女', to_date('08-09-1972', 'dd-mm-yyyy'), '运维工程师', to_date('01-03-2007 05:57:34', 'dd-mm-yyyy hh24:mi:ss'), 21119.95, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1060, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '考试专员', to_date('22-08-2007 08:06:47', 'dd-mm-yyyy hh24:mi:ss'), 24544.66, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1061, '高发娃', '110101192905226032', '男', to_date('22-05-1929', 'dd-mm-yyyy'), '运维工程师', to_date('12-12-2004 22:49:04', 'dd-mm-yyyy hh24:mi:ss'), 23458.34, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1062, '李新昌', '110101196403106013', '男', to_date('10-03-1964', 'dd-mm-yyyy'), '研发', to_date('01-04-2011 18:00:33', 'dd-mm-yyyy hh24:mi:ss'), 18605.46, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1065, '赵永刚', '110101197507310014', '男', to_date('31-07-1975', 'dd-mm-yyyy'), '岗位分析师', to_date('05-12-2009 15:00:29', 'dd-mm-yyyy hh24:mi:ss'), 3155.96, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1067, '冯世伟', '110101198811154532', '男', to_date('15-11-1988', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 17854.88, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1068, '张延付', '110101197005233514', '男', to_date('23-05-1970', 'dd-mm-yyyy'), '岗位分析师', to_date('21-05-2009 10:16:16', 'dd-mm-yyyy hh24:mi:ss'), 24294.43, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1070, '陈粉', '110101195801206040', '女', to_date('20-01-1958', 'dd-mm-yyyy'), '营销专员', to_date('29-06-2011 21:27:04', 'dd-mm-yyyy hh24:mi:ss'), 17708.56, 20, null, 600.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1071, '张根祥', '110101194412126513', '男', to_date('12-12-1944', 'dd-mm-yyyy'), '岗位分析师', to_date('06-10-2006 12:14:34', 'dd-mm-yyyy hh24:mi:ss'), 8802.52, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1074, '李秋彩', '110101197411186020', '女', to_date('18-11-1974', 'dd-mm-yyyy'), '考试专员', to_date('09-04-2005 01:11:29', 'dd-mm-yyyy hh24:mi:ss'), 19315.97, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1075, '李建玲', '110101198110164423', '女', to_date('16-10-1981', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9023.25, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1076, '张仙', '110101530824316 ', '女', to_date('24-08-1953', 'dd-mm-yyyy'), '考试专员', to_date('09-05-2011 11:15:29', 'dd-mm-yyyy hh24:mi:ss'), 8654.83, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1077, '朱金典', '110101196810023531', '男', to_date('02-10-1968', 'dd-mm-yyyy'), '营销专员', to_date('11-01-2008 11:13:31', 'dd-mm-yyyy hh24:mi:ss'), 6687.97, 20, null, 2700.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1079, '孙玉环', '110101195006056047', '女', to_date('05-06-1950', 'dd-mm-yyyy'), '考试专员', to_date('17-11-2008 12:48:12', 'dd-mm-yyyy hh24:mi:ss'), 7490.24, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1080, '邢中景', '110101198208284519', '男', to_date('28-08-1982', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 24990.57, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1081, '韩巧真', '110101198404190026', '女', to_date('19-04-1984', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9880.26, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1084, '杜巧琴', '110101196201036089', '女', to_date('03-01-1962', 'dd-mm-yyyy'), '岗位分析师', to_date('13-01-2011 16:11:23', 'dd-mm-yyyy hh24:mi:ss'), 21655.36, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1085, '席妞娃', '110101194601154026', '女', to_date('15-01-1946', 'dd-mm-yyyy'), '运维工程师', to_date('15-08-2008 06:36:11', 'dd-mm-yyyy hh24:mi:ss'), 24615.12, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1087, '薛素粉', '110101196701044528', '女', to_date('04-01-1967', 'dd-mm-yyyy'), '讲师', to_date('10-09-2007 06:07:14', 'dd-mm-yyyy hh24:mi:ss'), 12357.56, null, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1088, '王雪英', '110101193311264521', '女', to_date('26-11-1933', 'dd-mm-yyyy'), '岗位分析师', to_date('18-02-2006 23:37:15', 'dd-mm-yyyy hh24:mi:ss'), 23670.53, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1089, '刘秀菊', '110101530414306 ', '女', to_date('14-04-1953', 'dd-mm-yyyy'), '研发', to_date('11-09-2004 18:17:49', 'dd-mm-yyyy hh24:mi:ss'), 22608.20, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1090, '刘芳芳', '110101198912216025', '女', to_date('21-12-1989', 'dd-mm-yyyy'), '网络营销师', to_date('10-10-2012 00:24:11', 'dd-mm-yyyy hh24:mi:ss'), 9749.45, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1091, '郝方方', '110101198605165580', '女', to_date('16-05-1986', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 5944.72, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1092, '赵利萍', '110101196712063564', '女', to_date('06-12-1967', 'dd-mm-yyyy'), '岗位分析师', to_date('01-08-2006 17:26:08', 'dd-mm-yyyy hh24:mi:ss'), 4575.09, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1093, '杨联星', '110101195312284013', '男', to_date('28-12-1953', 'dd-mm-yyyy'), '考试专员', to_date('27-10-2009 08:41:47', 'dd-mm-yyyy hh24:mi:ss'), 24545.93, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1094, '冯焕', '110101194205093524', '女', to_date('09-05-1942', 'dd-mm-yyyy'), '运维工程师', to_date('27-09-2010 18:25:55', 'dd-mm-yyyy hh24:mi:ss'), 21391.42, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1096, '杨晓雨', '110101198910070043', '女', to_date('07-10-1989', 'dd-mm-yyyy'), '营销专员', to_date('07-08-2013 05:49:14', 'dd-mm-yyyy hh24:mi:ss'), 4161.31, 20, null, 2322.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1097, '柴帅友', '110101198510254038', '男', to_date('25-10-1985', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7805.94, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1098, '韩国强', '110101621016003 ', '男', to_date('16-10-1962', 'dd-mm-yyyy'), '研发', to_date('01-09-2007 12:30:52', 'dd-mm-yyyy hh24:mi:ss'), 13755.87, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1099, '王参妮', '11010119490831352X', '女', to_date('31-08-1949', 'dd-mm-yyyy'), '岗位分析师', to_date('11-10-2005 13:17:18', 'dd-mm-yyyy hh24:mi:ss'), 26627.94, 30, null, null); commit; 数据库脚本 聚合函数 count():计算记录数量 --count() 查询所有有薪水的老师人数,当字段为空值的时候,不加入计算 select count(sal) from teacher sum():计算数据总和 --sum() 查询所有老师的薪水总和 select sum(sal) from teacher max():最大值 --max() 查询所有老师中的最高薪水 select max(sal) from teacher min():最小值 --min() 查询所有老师中的最低薪水 select min(sal) from teacher avg():平均值 --avg() 查询所有老师的平均薪水 select avg(sal) from teacher 综合查询 --查询各个部门的编号,薪水(平均,最高,总和) --并且按照部门的总薪水进行降序排列 --只显示部门人数在10人以上的 select deptno,avg(sal),max(sal),sum(sal) from teacher group by deptno having count(1)>10 order by sum(sal) desc
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 首先提供数据库脚本,供测试使用 create table DEPT ( deptno NUMBER(2) not null, dname VARCHAR2(20), loc VARCHAR2(13) ); alter table DEPT add constraint PK_DEPT primary key (DEPTNO); create table TEACHER ( tno NUMBER(4) not null, tname VARCHAR2(30) not null, tid CHAR(18), gendar CHAR(3), birthdate DATE, job VARCHAR2(20), hiredate DATE, sal NUMBER(7,2), deptno NUMBER(2), mgrno NUMBER(4), comm NUMBER(7,2) ); insert into DEPT (deptno, dname, loc) values (40, '人力部', '北京海淀'); insert into DEPT (deptno, dname, loc) values (30, '产品部', '北京海淀'); insert into DEPT (deptno, dname, loc) values (20, '招生部', '上海虹桥'); insert into DEPT (deptno, dname, loc) values (10, '研究院', '北京海淀'); insert into DEPT (deptno, dname, loc) values (50, '系统部', '北京昌平'); commit; insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1002, '赵辉', '110101760609001 ', '男', to_date('09-06-1976', 'dd-mm-yyyy'), '考试专员', to_date('23-05-2006 02:40:40', 'dd-mm-yyyy hh24:mi:ss'), 29370.95, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1003, '杨利乐', '110101198705256045', '女', to_date('25-05-1987', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7134.32, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1004, '王益辉', '110101199108154770', '男', to_date('15-08-1991', 'dd-mm-yyyy'), '营销专员', to_date('16-01-2012 03:12:43', 'dd-mm-yyyy hh24:mi:ss'), 30737.36, 20, null, 2300.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1006, '秦璐璐', '110101199004153068', '女', to_date('14-04-1990', 'dd-mm-yyyy'), '运维工程师', to_date('20-06-2012 00:47:09', 'dd-mm-yyyy hh24:mi:ss'), 9013.25, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1007, '梁改焕', '110101196911206548', '女', to_date('20-11-1969', 'dd-mm-yyyy'), '讲师', to_date('13-06-2006 23:07:02', 'dd-mm-yyyy hh24:mi:ss'), 8664.16, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1008, '冯爱仙', '110101196804021521', '女', to_date('02-04-1968', 'dd-mm-yyyy'), '讲师', to_date('06-06-2006 13:41:50', 'dd-mm-yyyy hh24:mi:ss'), 29936.29, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1009, '秦亚杰', '110101196312163531', '男', to_date('16-12-1963', 'dd-mm-yyyy'), '岗位分析师', to_date('13-07-2005 06:32:30', 'dd-mm-yyyy hh24:mi:ss'), 24991.44, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1010, '刘浩星', '110101198806283516', '男', to_date('28-06-1988', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 22645.92, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1011, '秦春叶', '110101197103033540', '女', to_date('03-03-1971', 'dd-mm-yyyy'), '网络营销师', to_date('07-07-2007 16:02:04', 'dd-mm-yyyy hh24:mi:ss'), 31653.23, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1012, '陈水花', '110101192811043026', '女', to_date('04-11-1928', 'dd-mm-yyyy'), '考试专员', to_date('29-01-2005 23:21:59', 'dd-mm-yyyy hh24:mi:ss'), 29773.37, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1013, '马付妮', '110101195806133522', '女', to_date('13-06-1958', 'dd-mm-yyyy'), '研发', to_date('17-11-2004 08:54:04', 'dd-mm-yyyy hh24:mi:ss'), 17041.60, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1015, '刘得安', '110101195210083518', '男', to_date('08-10-1952', 'dd-mm-yyyy'), '考试专员', to_date('13-03-2005 23:25:37', 'dd-mm-yyyy hh24:mi:ss'), 30356.99, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1016, '高利芹', '110101198307276020', '女', to_date('27-07-1983', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 25751.36, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1017, '刘志刚', '110101197806164493', '男', to_date('16-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('10-05-2008 13:46:33', 'dd-mm-yyyy hh24:mi:ss'), 22344.73, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1018, '高心立', '110101194102076011', '男', to_date('07-02-1941', 'dd-mm-yyyy'), '网络营销师', to_date('03-03-2005 15:17:07', 'dd-mm-yyyy hh24:mi:ss'), 19981.02, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1019, '徐丽', '11010119790809354X', '男', to_date('09-08-1979', 'dd-mm-yyyy'), '研发', to_date('09-12-2009 18:37:22', 'dd-mm-yyyy hh24:mi:ss'), 10950.33, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1021, '刘志红', '110101196504284452', '男', to_date('28-04-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('20-09-2011 10:51:33', 'dd-mm-yyyy hh24:mi:ss'), 7122.60, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1022, '孔鹏飞', '110101198603304014', '男', to_date('30-03-1986', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7045.28, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1023, '李建坡', '110101731107301 ', '男', to_date('07-11-1973', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2009 06:28:20', 'dd-mm-yyyy hh24:mi:ss'), 21133.91, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1024, '冯爱敏', '110101196907283840', '女', to_date('18-07-1969', 'dd-mm-yyyy'), '营销专员', to_date('12-09-2005 22:41:06', 'dd-mm-yyyy hh24:mi:ss'), 3360.91, 20, null, 50000.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1025, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '网络营销师', to_date('03-09-2007 14:55:06', 'dd-mm-yyyy hh24:mi:ss'), 12136.65, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1026, '牛伟伟', '11010119851120602X', '女', to_date('20-11-1985', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 6622.66, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1027, '郭香云', '110101196010154525', '女', to_date('15-10-1960', 'dd-mm-yyyy'), '网络营销师', to_date('03-05-2005 13:01:22', 'dd-mm-yyyy hh24:mi:ss'), 26436.18, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1028, '朱花枝', '110101195605154028', '女', to_date('15-05-1956', 'dd-mm-yyyy'), '研发', to_date('11-09-2007 07:41:01', 'dd-mm-yyyy hh24:mi:ss'), 10095.22, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1029, '李岗', '110101196505163095', '男', to_date('16-05-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('09-11-2007 17:26:38', 'dd-mm-yyyy hh24:mi:ss'), 23928.84, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1030, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '营销专员', to_date('12-05-2007 19:48:21', 'dd-mm-yyyy hh24:mi:ss'), 3492.19, 20, null, 25000.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1031, '孙龙举', '110101198908306037', '男', to_date('30-08-1989', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4323.84, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1032, '韩朝旭', '110101199003270513', '男', to_date('27-03-1900', 'dd-mm-yyyy'), '人力资源师', to_date('11-09-2010 17:54:30', 'dd-mm-yyyy hh24:mi:ss'), 13740.92, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1033, '孙少光', '110101198809274535', '男', to_date('27-09-1988', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 19778.62, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1035, '邓香敏', '110101196607163109', '女', to_date('16-07-1966', 'dd-mm-yyyy'), '人力资源师', to_date('12-04-2007 17:47:14', 'dd-mm-yyyy hh24:mi:ss'), 29463.38, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1037, '霍振方', '110101198411070014', '男', to_date('07-11-1984', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 23731.31, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1038, '许双鸽', '110101781217004 ', '女', to_date('17-12-1978', 'dd-mm-yyyy'), '网络营销师', to_date('05-09-2007 18:45:00', 'dd-mm-yyyy hh24:mi:ss'), 16512.52, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1040, '张春红', '110101197806176089', '女', to_date('17-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('21-11-2004 06:52:30', 'dd-mm-yyyy hh24:mi:ss'), 31728.83, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1041, '卢玉莲', '110101510606004 ', '女', to_date('06-06-1951', 'dd-mm-yyyy'), '人力资源师', to_date('30-03-2009 17:05:45', 'dd-mm-yyyy hh24:mi:ss'), 17596.43, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1042, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '讲师', to_date('13-06-2008 03:24:47', 'dd-mm-yyyy hh24:mi:ss'), 8443.59, 50, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1043, '朱水娃', '110101195210033512', '男', to_date('03-10-1952', 'dd-mm-yyyy'), '讲师', to_date('11-10-2009 03:40:53', 'dd-mm-yyyy hh24:mi:ss'), 9123.09, 30, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1045, '高大荣', '110101195504073528', '女', to_date('07-04-1955', 'dd-mm-yyyy'), '考试专员', to_date('07-12-2005 14:56:05', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1046, '秦付根', '110101195301034035', '男', to_date('03-01-1953', 'dd-mm-yyyy'), '讲师', to_date('10-12-2004 22:51:51', 'dd-mm-yyyy hh24:mi:ss'), 16420.33, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1047, '樊增妮', '110101410715352 ', '女', to_date('15-07-1941', 'dd-mm-yyyy'), '网络营销师', to_date('02-12-2005 14:41:54', 'dd-mm-yyyy hh24:mi:ss'), 13316.01, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1048, '宋素敏', '11010119720111458X', '女', to_date('11-02-1972', 'dd-mm-yyyy'), '岗位分析师', to_date('26-09-2004 12:15:57', 'dd-mm-yyyy hh24:mi:ss'), 2142.92, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1049, '李记', '110101194803256012', '男', to_date('25-03-1948', 'dd-mm-yyyy'), '网络营销师', to_date('23-03-2006 19:12:45', 'dd-mm-yyyy hh24:mi:ss'), 13866.09, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1050, '秦单风', '110101198911153625', '女', to_date('15-11-1989', 'dd-mm-yyyy'), '考试专员', to_date('21-10-2012 05:31:34', 'dd-mm-yyyy hh24:mi:ss'), 21419.38, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1051, '秦占豪', '110101198509034011', '男', to_date('03-09-1985', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 31564.79, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1054, '张利娟', '110101197901173062', '女', to_date('17-01-1979', 'dd-mm-yyyy'), '网络营销师', to_date('08-05-2011 22:37:13', 'dd-mm-yyyy hh24:mi:ss'), 7419.99, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1055, '陈向琼', '11010119871010354X', '男', to_date('10-10-1987', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1056, '杨晓磊', '110101199105106079', '男', to_date('10-05-1991', 'dd-mm-yyyy'), '研发', to_date('05-04-2012 22:16:05', 'dd-mm-yyyy hh24:mi:ss'), 20812.41, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1057, '黄芳菊', '110101196611133520', '女', to_date('13-11-1966', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2008 17:36:20', 'dd-mm-yyyy hh24:mi:ss'), 12711.46, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1058, '李红勤', '110101197209084047', '女', to_date('08-09-1972', 'dd-mm-yyyy'), '运维工程师', to_date('01-03-2007 05:57:34', 'dd-mm-yyyy hh24:mi:ss'), 21119.95, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1060, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '考试专员', to_date('22-08-2007 08:06:47', 'dd-mm-yyyy hh24:mi:ss'), 24544.66, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1061, '高发娃', '110101192905226032', '男', to_date('22-05-1929', 'dd-mm-yyyy'), '运维工程师', to_date('12-12-2004 22:49:04', 'dd-mm-yyyy hh24:mi:ss'), 23458.34, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1062, '李新昌', '110101196403106013', '男', to_date('10-03-1964', 'dd-mm-yyyy'), '研发', to_date('01-04-2011 18:00:33', 'dd-mm-yyyy hh24:mi:ss'), 18605.46, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1065, '赵永刚', '110101197507310014', '男', to_date('31-07-1975', 'dd-mm-yyyy'), '岗位分析师', to_date('05-12-2009 15:00:29', 'dd-mm-yyyy hh24:mi:ss'), 3155.96, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1067, '冯世伟', '110101198811154532', '男', to_date('15-11-1988', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 17854.88, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1068, '张延付', '110101197005233514', '男', to_date('23-05-1970', 'dd-mm-yyyy'), '岗位分析师', to_date('21-05-2009 10:16:16', 'dd-mm-yyyy hh24:mi:ss'), 24294.43, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1070, '陈粉', '110101195801206040', '女', to_date('20-01-1958', 'dd-mm-yyyy'), '营销专员', to_date('29-06-2011 21:27:04', 'dd-mm-yyyy hh24:mi:ss'), 17708.56, 20, null, 600.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1071, '张根祥', '110101194412126513', '男', to_date('12-12-1944', 'dd-mm-yyyy'), '岗位分析师', to_date('06-10-2006 12:14:34', 'dd-mm-yyyy hh24:mi:ss'), 8802.52, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1074, '李秋彩', '110101197411186020', '女', to_date('18-11-1974', 'dd-mm-yyyy'), '考试专员', to_date('09-04-2005 01:11:29', 'dd-mm-yyyy hh24:mi:ss'), 19315.97, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1075, '李建玲', '110101198110164423', '女', to_date('16-10-1981', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9023.25, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1076, '张仙', '110101530824316 ', '女', to_date('24-08-1953', 'dd-mm-yyyy'), '考试专员', to_date('09-05-2011 11:15:29', 'dd-mm-yyyy hh24:mi:ss'), 8654.83, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1077, '朱金典', '110101196810023531', '男', to_date('02-10-1968', 'dd-mm-yyyy'), '营销专员', to_date('11-01-2008 11:13:31', 'dd-mm-yyyy hh24:mi:ss'), 6687.97, 20, null, 2700.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1079, '孙玉环', '110101195006056047', '女', to_date('05-06-1950', 'dd-mm-yyyy'), '考试专员', to_date('17-11-2008 12:48:12', 'dd-mm-yyyy hh24:mi:ss'), 7490.24, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1080, '邢中景', '110101198208284519', '男', to_date('28-08-1982', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 24990.57, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1081, '韩巧真', '110101198404190026', '女', to_date('19-04-1984', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9880.26, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1084, '杜巧琴', '110101196201036089', '女', to_date('03-01-1962', 'dd-mm-yyyy'), '岗位分析师', to_date('13-01-2011 16:11:23', 'dd-mm-yyyy hh24:mi:ss'), 21655.36, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1085, '席妞娃', '110101194601154026', '女', to_date('15-01-1946', 'dd-mm-yyyy'), '运维工程师', to_date('15-08-2008 06:36:11', 'dd-mm-yyyy hh24:mi:ss'), 24615.12, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1087, '薛素粉', '110101196701044528', '女', to_date('04-01-1967', 'dd-mm-yyyy'), '讲师', to_date('10-09-2007 06:07:14', 'dd-mm-yyyy hh24:mi:ss'), 12357.56, null, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1088, '王雪英', '110101193311264521', '女', to_date('26-11-1933', 'dd-mm-yyyy'), '岗位分析师', to_date('18-02-2006 23:37:15', 'dd-mm-yyyy hh24:mi:ss'), 23670.53, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1089, '刘秀菊', '110101530414306 ', '女', to_date('14-04-1953', 'dd-mm-yyyy'), '研发', to_date('11-09-2004 18:17:49', 'dd-mm-yyyy hh24:mi:ss'), 22608.20, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1090, '刘芳芳', '110101198912216025', '女', to_date('21-12-1989', 'dd-mm-yyyy'), '网络营销师', to_date('10-10-2012 00:24:11', 'dd-mm-yyyy hh24:mi:ss'), 9749.45, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1091, '郝方方', '110101198605165580', '女', to_date('16-05-1986', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 5944.72, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1092, '赵利萍', '110101196712063564', '女', to_date('06-12-1967', 'dd-mm-yyyy'), '岗位分析师', to_date('01-08-2006 17:26:08', 'dd-mm-yyyy hh24:mi:ss'), 4575.09, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1093, '杨联星', '110101195312284013', '男', to_date('28-12-1953', 'dd-mm-yyyy'), '考试专员', to_date('27-10-2009 08:41:47', 'dd-mm-yyyy hh24:mi:ss'), 24545.93, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1094, '冯焕', '110101194205093524', '女', to_date('09-05-1942', 'dd-mm-yyyy'), '运维工程师', to_date('27-09-2010 18:25:55', 'dd-mm-yyyy hh24:mi:ss'), 21391.42, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1096, '杨晓雨', '110101198910070043', '女', to_date('07-10-1989', 'dd-mm-yyyy'), '营销专员', to_date('07-08-2013 05:49:14', 'dd-mm-yyyy hh24:mi:ss'), 4161.31, 20, null, 2322.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1097, '柴帅友', '110101198510254038', '男', to_date('25-10-1985', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7805.94, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1098, '韩国强', '110101621016003 ', '男', to_date('16-10-1962', 'dd-mm-yyyy'), '研发', to_date('01-09-2007 12:30:52', 'dd-mm-yyyy hh24:mi:ss'), 13755.87, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1099, '王参妮', '11010119490831352X', '女', to_date('31-08-1949', 'dd-mm-yyyy'), '岗位分析师', to_date('11-10-2005 13:17:18', 'dd-mm-yyyy hh24:mi:ss'), 26627.94, 30, null, null); commit; 数据库脚本 本次要讲的连接查询有内连接,外连接,自连接 由于全连接性能太差,使用率太低,就略过它 内连接 隐式内连接 --隐式内连接 查询招生部门所有男老师信息 select tname,dname from teacher t,dept d where t.deptno=d.deptno and d.dname='招生部' and t.gendar='男' 显式内连接 --显式内连接 查询招生部门所有男老师信息 select tname,dname from teacher t inner join dept d on t.deptno=d.deptno and d.dname='招生部' and t.gendar='男' 外连接 左外连接,意思是已左面的表为准,他所有的记录都要查出右面那张表中所对应的记录 --左外连接 select * from teacher t left join dept d on t.deptno=d.deptno 右外连接,意思是已右面的表为准,他所有的记录都要查出左面那张表中所对应的记录 --右外连接 select * from teacher t right join dept d on t.deptno=d.deptno 自连接: --查询teacher表中老师的导师 select t1.tname as "姓名",t2.tname as "导师姓名" from teacher t1,teacher t2 where t1.mgrno=t2.tno
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 依旧提供数据库脚本供操作 create table DEPT ( deptno NUMBER(2) not null, dname VARCHAR2(20), loc VARCHAR2(13) ); alter table DEPT add constraint PK_DEPT primary key (DEPTNO); create table TEACHER ( tno NUMBER(4) not null, tname VARCHAR2(30) not null, tid CHAR(18), gendar CHAR(3), birthdate DATE, job VARCHAR2(20), hiredate DATE, sal NUMBER(7,2), deptno NUMBER(2), mgrno NUMBER(4), comm NUMBER(7,2) ); insert into DEPT (deptno, dname, loc) values (40, '人力部', '北京海淀'); insert into DEPT (deptno, dname, loc) values (30, '产品部', '北京海淀'); insert into DEPT (deptno, dname, loc) values (20, '招生部', '上海虹桥'); insert into DEPT (deptno, dname, loc) values (10, '研究院', '北京海淀'); insert into DEPT (deptno, dname, loc) values (50, '系统部', '北京昌平'); commit; insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1002, '赵辉', '110101760609001 ', '男', to_date('09-06-1976', 'dd-mm-yyyy'), '考试专员', to_date('23-05-2006 02:40:40', 'dd-mm-yyyy hh24:mi:ss'), 29370.95, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1003, '杨利乐', '110101198705256045', '女', to_date('25-05-1987', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7134.32, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1004, '王益辉', '110101199108154770', '男', to_date('15-08-1991', 'dd-mm-yyyy'), '营销专员', to_date('16-01-2012 03:12:43', 'dd-mm-yyyy hh24:mi:ss'), 30737.36, 20, null, 2300.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1006, '秦璐璐', '110101199004153068', '女', to_date('14-04-1990', 'dd-mm-yyyy'), '运维工程师', to_date('20-06-2012 00:47:09', 'dd-mm-yyyy hh24:mi:ss'), 9013.25, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1007, '梁改焕', '110101196911206548', '女', to_date('20-11-1969', 'dd-mm-yyyy'), '讲师', to_date('13-06-2006 23:07:02', 'dd-mm-yyyy hh24:mi:ss'), 8664.16, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1008, '冯爱仙', '110101196804021521', '女', to_date('02-04-1968', 'dd-mm-yyyy'), '讲师', to_date('06-06-2006 13:41:50', 'dd-mm-yyyy hh24:mi:ss'), 29936.29, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1009, '秦亚杰', '110101196312163531', '男', to_date('16-12-1963', 'dd-mm-yyyy'), '岗位分析师', to_date('13-07-2005 06:32:30', 'dd-mm-yyyy hh24:mi:ss'), 24991.44, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1010, '刘浩星', '110101198806283516', '男', to_date('28-06-1988', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 22645.92, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1011, '秦春叶', '110101197103033540', '女', to_date('03-03-1971', 'dd-mm-yyyy'), '网络营销师', to_date('07-07-2007 16:02:04', 'dd-mm-yyyy hh24:mi:ss'), 31653.23, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1012, '陈水花', '110101192811043026', '女', to_date('04-11-1928', 'dd-mm-yyyy'), '考试专员', to_date('29-01-2005 23:21:59', 'dd-mm-yyyy hh24:mi:ss'), 29773.37, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1013, '马付妮', '110101195806133522', '女', to_date('13-06-1958', 'dd-mm-yyyy'), '研发', to_date('17-11-2004 08:54:04', 'dd-mm-yyyy hh24:mi:ss'), 17041.60, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1015, '刘得安', '110101195210083518', '男', to_date('08-10-1952', 'dd-mm-yyyy'), '考试专员', to_date('13-03-2005 23:25:37', 'dd-mm-yyyy hh24:mi:ss'), 30356.99, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1016, '高利芹', '110101198307276020', '女', to_date('27-07-1983', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 25751.36, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1017, '刘志刚', '110101197806164493', '男', to_date('16-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('10-05-2008 13:46:33', 'dd-mm-yyyy hh24:mi:ss'), 22344.73, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1018, '高心立', '110101194102076011', '男', to_date('07-02-1941', 'dd-mm-yyyy'), '网络营销师', to_date('03-03-2005 15:17:07', 'dd-mm-yyyy hh24:mi:ss'), 19981.02, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1019, '徐丽', '11010119790809354X', '男', to_date('09-08-1979', 'dd-mm-yyyy'), '研发', to_date('09-12-2009 18:37:22', 'dd-mm-yyyy hh24:mi:ss'), 10950.33, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1021, '刘志红', '110101196504284452', '男', to_date('28-04-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('20-09-2011 10:51:33', 'dd-mm-yyyy hh24:mi:ss'), 7122.60, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1022, '孔鹏飞', '110101198603304014', '男', to_date('30-03-1986', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7045.28, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1023, '李建坡', '110101731107301 ', '男', to_date('07-11-1973', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2009 06:28:20', 'dd-mm-yyyy hh24:mi:ss'), 21133.91, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1024, '冯爱敏', '110101196907283840', '女', to_date('18-07-1969', 'dd-mm-yyyy'), '营销专员', to_date('12-09-2005 22:41:06', 'dd-mm-yyyy hh24:mi:ss'), 3360.91, 20, null, 50000.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1025, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '网络营销师', to_date('03-09-2007 14:55:06', 'dd-mm-yyyy hh24:mi:ss'), 12136.65, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1026, '牛伟伟', '11010119851120602X', '女', to_date('20-11-1985', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 6622.66, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1027, '郭香云', '110101196010154525', '女', to_date('15-10-1960', 'dd-mm-yyyy'), '网络营销师', to_date('03-05-2005 13:01:22', 'dd-mm-yyyy hh24:mi:ss'), 26436.18, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1028, '朱花枝', '110101195605154028', '女', to_date('15-05-1956', 'dd-mm-yyyy'), '研发', to_date('11-09-2007 07:41:01', 'dd-mm-yyyy hh24:mi:ss'), 10095.22, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1029, '李岗', '110101196505163095', '男', to_date('16-05-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('09-11-2007 17:26:38', 'dd-mm-yyyy hh24:mi:ss'), 23928.84, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1030, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '营销专员', to_date('12-05-2007 19:48:21', 'dd-mm-yyyy hh24:mi:ss'), 3492.19, 20, null, 25000.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1031, '孙龙举', '110101198908306037', '男', to_date('30-08-1989', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4323.84, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1032, '韩朝旭', '110101199003270513', '男', to_date('27-03-1900', 'dd-mm-yyyy'), '人力资源师', to_date('11-09-2010 17:54:30', 'dd-mm-yyyy hh24:mi:ss'), 13740.92, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1033, '孙少光', '110101198809274535', '男', to_date('27-09-1988', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 19778.62, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1035, '邓香敏', '110101196607163109', '女', to_date('16-07-1966', 'dd-mm-yyyy'), '人力资源师', to_date('12-04-2007 17:47:14', 'dd-mm-yyyy hh24:mi:ss'), 29463.38, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1037, '霍振方', '110101198411070014', '男', to_date('07-11-1984', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 23731.31, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1038, '许双鸽', '110101781217004 ', '女', to_date('17-12-1978', 'dd-mm-yyyy'), '网络营销师', to_date('05-09-2007 18:45:00', 'dd-mm-yyyy hh24:mi:ss'), 16512.52, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1040, '张春红', '110101197806176089', '女', to_date('17-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('21-11-2004 06:52:30', 'dd-mm-yyyy hh24:mi:ss'), 31728.83, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1041, '卢玉莲', '110101510606004 ', '女', to_date('06-06-1951', 'dd-mm-yyyy'), '人力资源师', to_date('30-03-2009 17:05:45', 'dd-mm-yyyy hh24:mi:ss'), 17596.43, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1042, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '讲师', to_date('13-06-2008 03:24:47', 'dd-mm-yyyy hh24:mi:ss'), 8443.59, 50, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1043, '朱水娃', '110101195210033512', '男', to_date('03-10-1952', 'dd-mm-yyyy'), '讲师', to_date('11-10-2009 03:40:53', 'dd-mm-yyyy hh24:mi:ss'), 9123.09, 30, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1045, '高大荣', '110101195504073528', '女', to_date('07-04-1955', 'dd-mm-yyyy'), '考试专员', to_date('07-12-2005 14:56:05', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1046, '秦付根', '110101195301034035', '男', to_date('03-01-1953', 'dd-mm-yyyy'), '讲师', to_date('10-12-2004 22:51:51', 'dd-mm-yyyy hh24:mi:ss'), 16420.33, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1047, '樊增妮', '110101410715352 ', '女', to_date('15-07-1941', 'dd-mm-yyyy'), '网络营销师', to_date('02-12-2005 14:41:54', 'dd-mm-yyyy hh24:mi:ss'), 13316.01, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1048, '宋素敏', '11010119720111458X', '女', to_date('11-02-1972', 'dd-mm-yyyy'), '岗位分析师', to_date('26-09-2004 12:15:57', 'dd-mm-yyyy hh24:mi:ss'), 2142.92, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1049, '李记', '110101194803256012', '男', to_date('25-03-1948', 'dd-mm-yyyy'), '网络营销师', to_date('23-03-2006 19:12:45', 'dd-mm-yyyy hh24:mi:ss'), 13866.09, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1050, '秦单风', '110101198911153625', '女', to_date('15-11-1989', 'dd-mm-yyyy'), '考试专员', to_date('21-10-2012 05:31:34', 'dd-mm-yyyy hh24:mi:ss'), 21419.38, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1051, '秦占豪', '110101198509034011', '男', to_date('03-09-1985', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 31564.79, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1054, '张利娟', '110101197901173062', '女', to_date('17-01-1979', 'dd-mm-yyyy'), '网络营销师', to_date('08-05-2011 22:37:13', 'dd-mm-yyyy hh24:mi:ss'), 7419.99, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1055, '陈向琼', '11010119871010354X', '男', to_date('10-10-1987', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1056, '杨晓磊', '110101199105106079', '男', to_date('10-05-1991', 'dd-mm-yyyy'), '研发', to_date('05-04-2012 22:16:05', 'dd-mm-yyyy hh24:mi:ss'), 20812.41, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1057, '黄芳菊', '110101196611133520', '女', to_date('13-11-1966', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2008 17:36:20', 'dd-mm-yyyy hh24:mi:ss'), 12711.46, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1058, '李红勤', '110101197209084047', '女', to_date('08-09-1972', 'dd-mm-yyyy'), '运维工程师', to_date('01-03-2007 05:57:34', 'dd-mm-yyyy hh24:mi:ss'), 21119.95, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1060, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '考试专员', to_date('22-08-2007 08:06:47', 'dd-mm-yyyy hh24:mi:ss'), 24544.66, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1061, '高发娃', '110101192905226032', '男', to_date('22-05-1929', 'dd-mm-yyyy'), '运维工程师', to_date('12-12-2004 22:49:04', 'dd-mm-yyyy hh24:mi:ss'), 23458.34, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1062, '李新昌', '110101196403106013', '男', to_date('10-03-1964', 'dd-mm-yyyy'), '研发', to_date('01-04-2011 18:00:33', 'dd-mm-yyyy hh24:mi:ss'), 18605.46, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1065, '赵永刚', '110101197507310014', '男', to_date('31-07-1975', 'dd-mm-yyyy'), '岗位分析师', to_date('05-12-2009 15:00:29', 'dd-mm-yyyy hh24:mi:ss'), 3155.96, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1067, '冯世伟', '110101198811154532', '男', to_date('15-11-1988', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 17854.88, 40, 1087, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1068, '张延付', '110101197005233514', '男', to_date('23-05-1970', 'dd-mm-yyyy'), '岗位分析师', to_date('21-05-2009 10:16:16', 'dd-mm-yyyy hh24:mi:ss'), 24294.43, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1070, '陈粉', '110101195801206040', '女', to_date('20-01-1958', 'dd-mm-yyyy'), '营销专员', to_date('29-06-2011 21:27:04', 'dd-mm-yyyy hh24:mi:ss'), 17708.56, 20, null, 600.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1071, '张根祥', '110101194412126513', '男', to_date('12-12-1944', 'dd-mm-yyyy'), '岗位分析师', to_date('06-10-2006 12:14:34', 'dd-mm-yyyy hh24:mi:ss'), 8802.52, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1074, '李秋彩', '110101197411186020', '女', to_date('18-11-1974', 'dd-mm-yyyy'), '考试专员', to_date('09-04-2005 01:11:29', 'dd-mm-yyyy hh24:mi:ss'), 19315.97, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1075, '李建玲', '110101198110164423', '女', to_date('16-10-1981', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9023.25, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1076, '张仙', '110101530824316 ', '女', to_date('24-08-1953', 'dd-mm-yyyy'), '考试专员', to_date('09-05-2011 11:15:29', 'dd-mm-yyyy hh24:mi:ss'), 8654.83, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1077, '朱金典', '110101196810023531', '男', to_date('02-10-1968', 'dd-mm-yyyy'), '营销专员', to_date('11-01-2008 11:13:31', 'dd-mm-yyyy hh24:mi:ss'), 6687.97, 20, null, 2700.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1079, '孙玉环', '110101195006056047', '女', to_date('05-06-1950', 'dd-mm-yyyy'), '考试专员', to_date('17-11-2008 12:48:12', 'dd-mm-yyyy hh24:mi:ss'), 7490.24, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1080, '邢中景', '110101198208284519', '男', to_date('28-08-1982', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 24990.57, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1081, '韩巧真', '110101198404190026', '女', to_date('19-04-1984', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9880.26, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1084, '杜巧琴', '110101196201036089', '女', to_date('03-01-1962', 'dd-mm-yyyy'), '岗位分析师', to_date('13-01-2011 16:11:23', 'dd-mm-yyyy hh24:mi:ss'), 21655.36, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1085, '席妞娃', '110101194601154026', '女', to_date('15-01-1946', 'dd-mm-yyyy'), '运维工程师', to_date('15-08-2008 06:36:11', 'dd-mm-yyyy hh24:mi:ss'), 24615.12, 20, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1087, '薛素粉', '110101196701044528', '女', to_date('04-01-1967', 'dd-mm-yyyy'), '讲师', to_date('10-09-2007 06:07:14', 'dd-mm-yyyy hh24:mi:ss'), 12357.56, null, 1008, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1088, '王雪英', '110101193311264521', '女', to_date('26-11-1933', 'dd-mm-yyyy'), '岗位分析师', to_date('18-02-2006 23:37:15', 'dd-mm-yyyy hh24:mi:ss'), 23670.53, 10, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1089, '刘秀菊', '110101530414306 ', '女', to_date('14-04-1953', 'dd-mm-yyyy'), '研发', to_date('11-09-2004 18:17:49', 'dd-mm-yyyy hh24:mi:ss'), 22608.20, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1090, '刘芳芳', '110101198912216025', '女', to_date('21-12-1989', 'dd-mm-yyyy'), '网络营销师', to_date('10-10-2012 00:24:11', 'dd-mm-yyyy hh24:mi:ss'), 9749.45, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1091, '郝方方', '110101198605165580', '女', to_date('16-05-1986', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 5944.72, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1092, '赵利萍', '110101196712063564', '女', to_date('06-12-1967', 'dd-mm-yyyy'), '岗位分析师', to_date('01-08-2006 17:26:08', 'dd-mm-yyyy hh24:mi:ss'), 4575.09, 30, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1093, '杨联星', '110101195312284013', '男', to_date('28-12-1953', 'dd-mm-yyyy'), '考试专员', to_date('27-10-2009 08:41:47', 'dd-mm-yyyy hh24:mi:ss'), 24545.93, 40, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1094, '冯焕', '110101194205093524', '女', to_date('09-05-1942', 'dd-mm-yyyy'), '运维工程师', to_date('27-09-2010 18:25:55', 'dd-mm-yyyy hh24:mi:ss'), 21391.42, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1096, '杨晓雨', '110101198910070043', '女', to_date('07-10-1989', 'dd-mm-yyyy'), '营销专员', to_date('07-08-2013 05:49:14', 'dd-mm-yyyy hh24:mi:ss'), 4161.31, 20, null, 2322.00); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1097, '柴帅友', '110101198510254038', '男', to_date('25-10-1985', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7805.94, 50, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1098, '韩国强', '110101621016003 ', '男', to_date('16-10-1962', 'dd-mm-yyyy'), '研发', to_date('01-09-2007 12:30:52', 'dd-mm-yyyy hh24:mi:ss'), 13755.87, null, null, null); insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) values (1099, '王参妮', '11010119490831352X', '女', to_date('31-08-1949', 'dd-mm-yyyy'), '岗位分析师', to_date('11-10-2005 13:17:18', 'dd-mm-yyyy hh24:mi:ss'), 26627.94, 30, null, null); commit; 数据库脚本 --使用别名 mysql中单引双引都可以,但是oracle中只能使用双引号来区别特殊字符 select tname as "姓 名" from teacher --去重 distinct 关键字必须位于查询字段中的第一个位置 select distinct deptno from teacher --子查询 查询的结果集作为另一个查询语句的条件,字段或者是表 --查询招生部所有男老师的姓名和薪水 --01.查询招生部对应的部门编号 select deptno from dept where dname='招生部' --02.查询招生部对应等的所有男老师的姓名和薪水 select tname "姓名",sal "薪水" from teacher where deptno=(select deptno from dept where dname='招生部') and gendar='男' --查询老师姓名和对应的部门名称 select tname "姓名",(select dname from dept where deptno=teacher.deptno) "部门名称" from teacher --查询招生部和人力部下,所有老师信息 select * from teacher where deptno in(select deptno from dept where dname in('招生部','人力部'))
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 开篇放上一个SQL脚本,供测试使用 1 create table DEPT 2 ( 3 deptno NUMBER(2) not null, 4 dname VARCHAR2(20), 5 loc VARCHAR2(13) 6 ); 7 8 9 alter table DEPT 10 add constraint PK_DEPT primary key (DEPTNO); 11 12 create table TEACHER 13 ( 14 tno NUMBER(4) not null, 15 tname VARCHAR2(30) not null, 16 tid CHAR(18), 17 gendar CHAR(3), 18 birthdate DATE, 19 job VARCHAR2(20), 20 hiredate DATE, 21 sal NUMBER(7,2), 22 deptno NUMBER(2), 23 mgrno NUMBER(4), 24 comm NUMBER(7,2) 25 ); 26 27 insert into DEPT (deptno, dname, loc) 28 values (40, '人力部', '北京海淀'); 29 insert into DEPT (deptno, dname, loc) 30 values (30, '产品部', '北京海淀'); 31 insert into DEPT (deptno, dname, loc) 32 values (20, '招生部', '上海虹桥'); 33 insert into DEPT (deptno, dname, loc) 34 values (10, '研究院', '北京海淀'); 35 insert into DEPT (deptno, dname, loc) 36 values (50, '系统部', '北京昌平'); 37 commit; 38 39 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 40 values (1002, '赵辉', '110101760609001 ', '男', to_date('09-06-1976', 'dd-mm-yyyy'), '考试专员', to_date('23-05-2006 02:40:40', 'dd-mm-yyyy hh24:mi:ss'), 29370.95, 40, null, null); 41 42 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 43 values (1003, '杨利乐', '110101198705256045', '女', to_date('25-05-1987', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7134.32, 40, null, null); 44 45 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 46 values (1004, '王益辉', '110101199108154770', '男', to_date('15-08-1991', 'dd-mm-yyyy'), '营销专员', to_date('16-01-2012 03:12:43', 'dd-mm-yyyy hh24:mi:ss'), 30737.36, 20, null, 2300.00); 47 48 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 49 values (1006, '秦璐璐', '110101199004153068', '女', to_date('14-04-1990', 'dd-mm-yyyy'), '运维工程师', to_date('20-06-2012 00:47:09', 'dd-mm-yyyy hh24:mi:ss'), 9013.25, 10, null, null); 50 51 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 52 values (1007, '梁改焕', '110101196911206548', '女', to_date('20-11-1969', 'dd-mm-yyyy'), '讲师', to_date('13-06-2006 23:07:02', 'dd-mm-yyyy hh24:mi:ss'), 8664.16, 50, null, null); 53 54 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 55 values (1008, '冯爱仙', '110101196804021521', '女', to_date('02-04-1968', 'dd-mm-yyyy'), '讲师', to_date('06-06-2006 13:41:50', 'dd-mm-yyyy hh24:mi:ss'), 29936.29, 30, null, null); 56 57 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 58 values (1009, '秦亚杰', '110101196312163531', '男', to_date('16-12-1963', 'dd-mm-yyyy'), '岗位分析师', to_date('13-07-2005 06:32:30', 'dd-mm-yyyy hh24:mi:ss'), 24991.44, 30, null, null); 59 60 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 61 values (1010, '刘浩星', '110101198806283516', '男', to_date('28-06-1988', 'dd-mm-yyyy'), '考试专员', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 22645.92, null, null, null); 62 63 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 64 values (1011, '秦春叶', '110101197103033540', '女', to_date('03-03-1971', 'dd-mm-yyyy'), '网络营销师', to_date('07-07-2007 16:02:04', 'dd-mm-yyyy hh24:mi:ss'), 31653.23, 50, null, null); 65 66 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 67 values (1012, '陈水花', '110101192811043026', '女', to_date('04-11-1928', 'dd-mm-yyyy'), '考试专员', to_date('29-01-2005 23:21:59', 'dd-mm-yyyy hh24:mi:ss'), 29773.37, 20, null, null); 68 69 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 70 values (1013, '马付妮', '110101195806133522', '女', to_date('13-06-1958', 'dd-mm-yyyy'), '研发', to_date('17-11-2004 08:54:04', 'dd-mm-yyyy hh24:mi:ss'), 17041.60, 40, null, null); 71 72 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 73 values (1015, '刘得安', '110101195210083518', '男', to_date('08-10-1952', 'dd-mm-yyyy'), '考试专员', to_date('13-03-2005 23:25:37', 'dd-mm-yyyy hh24:mi:ss'), 30356.99, 20, null, null); 74 75 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 76 values (1016, '高利芹', '110101198307276020', '女', to_date('27-07-1983', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 25751.36, null, null, null); 77 78 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 79 values (1017, '刘志刚', '110101197806164493', '男', to_date('16-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('10-05-2008 13:46:33', 'dd-mm-yyyy hh24:mi:ss'), 22344.73, 20, null, null); 80 81 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 82 values (1018, '高心立', '110101194102076011', '男', to_date('07-02-1941', 'dd-mm-yyyy'), '网络营销师', to_date('03-03-2005 15:17:07', 'dd-mm-yyyy hh24:mi:ss'), 19981.02, 40, null, null); 83 84 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 85 values (1019, '徐丽', '11010119790809354X', '男', to_date('09-08-1979', 'dd-mm-yyyy'), '研发', to_date('09-12-2009 18:37:22', 'dd-mm-yyyy hh24:mi:ss'), 10950.33, 30, null, null); 86 87 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 88 values (1021, '刘志红', '110101196504284452', '男', to_date('28-04-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('20-09-2011 10:51:33', 'dd-mm-yyyy hh24:mi:ss'), 7122.60, 20, null, null); 89 90 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 91 values (1022, '孔鹏飞', '110101198603304014', '男', to_date('30-03-1986', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7045.28, 40, null, null); 92 93 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 94 values (1023, '李建坡', '110101731107301 ', '男', to_date('07-11-1973', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2009 06:28:20', 'dd-mm-yyyy hh24:mi:ss'), 21133.91, 50, null, null); 95 96 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 97 values (1024, '冯爱敏', '110101196907283840', '女', to_date('18-07-1969', 'dd-mm-yyyy'), '营销专员', to_date('12-09-2005 22:41:06', 'dd-mm-yyyy hh24:mi:ss'), 3360.91, 20, null, 50000.00); 98 99 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 100 values (1025, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '网络营销师', to_date('03-09-2007 14:55:06', 'dd-mm-yyyy hh24:mi:ss'), 12136.65, 40, null, null); 101 102 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 103 values (1026, '牛伟伟', '11010119851120602X', '女', to_date('20-11-1985', 'dd-mm-yyyy'), '岗位分析师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 6622.66, 30, null, null); 104 105 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 106 values (1027, '郭香云', '110101196010154525', '女', to_date('15-10-1960', 'dd-mm-yyyy'), '网络营销师', to_date('03-05-2005 13:01:22', 'dd-mm-yyyy hh24:mi:ss'), 26436.18, 50, null, null); 107 108 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 109 values (1028, '朱花枝', '110101195605154028', '女', to_date('15-05-1956', 'dd-mm-yyyy'), '研发', to_date('11-09-2007 07:41:01', 'dd-mm-yyyy hh24:mi:ss'), 10095.22, 50, null, null); 110 111 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 112 values (1029, '李岗', '110101196505163095', '男', to_date('16-05-1965', 'dd-mm-yyyy'), '岗位分析师', to_date('09-11-2007 17:26:38', 'dd-mm-yyyy hh24:mi:ss'), 23928.84, 30, null, null); 113 114 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 115 values (1030, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '营销专员', to_date('12-05-2007 19:48:21', 'dd-mm-yyyy hh24:mi:ss'), 3492.19, 20, null, 25000.00); 116 117 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 118 values (1031, '孙龙举', '110101198908306037', '男', to_date('30-08-1989', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4323.84, 30, null, null); 119 120 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 121 values (1032, '韩朝旭', '110101199003270513', '男', to_date('27-03-1900', 'dd-mm-yyyy'), '人力资源师', to_date('11-09-2010 17:54:30', 'dd-mm-yyyy hh24:mi:ss'), 13740.92, 40, null, null); 122 123 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 124 values (1033, '孙少光', '110101198809274535', '男', to_date('27-09-1988', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 19778.62, 50, null, null); 125 126 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 127 values (1035, '邓香敏', '110101196607163109', '女', to_date('16-07-1966', 'dd-mm-yyyy'), '人力资源师', to_date('12-04-2007 17:47:14', 'dd-mm-yyyy hh24:mi:ss'), 29463.38, 40, null, null); 128 129 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 130 values (1037, '霍振方', '110101198411070014', '男', to_date('07-11-1984', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 23731.31, 40, 1087, null); 131 132 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 133 values (1038, '许双鸽', '110101781217004 ', '女', to_date('17-12-1978', 'dd-mm-yyyy'), '网络营销师', to_date('05-09-2007 18:45:00', 'dd-mm-yyyy hh24:mi:ss'), 16512.52, 30, null, null); 134 135 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 136 values (1040, '张春红', '110101197806176089', '女', to_date('17-06-1978', 'dd-mm-yyyy'), '运维工程师', to_date('21-11-2004 06:52:30', 'dd-mm-yyyy hh24:mi:ss'), 31728.83, 10, null, null); 137 138 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 139 values (1041, '卢玉莲', '110101510606004 ', '女', to_date('06-06-1951', 'dd-mm-yyyy'), '人力资源师', to_date('30-03-2009 17:05:45', 'dd-mm-yyyy hh24:mi:ss'), 17596.43, 40, null, null); 140 141 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 142 values (1042, '李军会', '110101197706152524', '男', to_date('15-06-1977', 'dd-mm-yyyy'), '讲师', to_date('13-06-2008 03:24:47', 'dd-mm-yyyy hh24:mi:ss'), 8443.59, 50, 1008, null); 143 144 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 145 values (1043, '朱水娃', '110101195210033512', '男', to_date('03-10-1952', 'dd-mm-yyyy'), '讲师', to_date('11-10-2009 03:40:53', 'dd-mm-yyyy hh24:mi:ss'), 9123.09, 30, 1008, null); 146 147 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 148 values (1045, '高大荣', '110101195504073528', '女', to_date('07-04-1955', 'dd-mm-yyyy'), '考试专员', to_date('07-12-2005 14:56:05', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, null, null); 149 150 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 151 values (1046, '秦付根', '110101195301034035', '男', to_date('03-01-1953', 'dd-mm-yyyy'), '讲师', to_date('10-12-2004 22:51:51', 'dd-mm-yyyy hh24:mi:ss'), 16420.33, 30, null, null); 152 153 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 154 values (1047, '樊增妮', '110101410715352 ', '女', to_date('15-07-1941', 'dd-mm-yyyy'), '网络营销师', to_date('02-12-2005 14:41:54', 'dd-mm-yyyy hh24:mi:ss'), 13316.01, 20, null, null); 155 156 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 157 values (1048, '宋素敏', '11010119720111458X', '女', to_date('11-02-1972', 'dd-mm-yyyy'), '岗位分析师', to_date('26-09-2004 12:15:57', 'dd-mm-yyyy hh24:mi:ss'), 2142.92, 40, null, null); 158 159 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 160 values (1049, '李记', '110101194803256012', '男', to_date('25-03-1948', 'dd-mm-yyyy'), '网络营销师', to_date('23-03-2006 19:12:45', 'dd-mm-yyyy hh24:mi:ss'), 13866.09, 50, null, null); 161 162 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 163 values (1050, '秦单风', '110101198911153625', '女', to_date('15-11-1989', 'dd-mm-yyyy'), '考试专员', to_date('21-10-2012 05:31:34', 'dd-mm-yyyy hh24:mi:ss'), 21419.38, 40, null, null); 164 165 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 166 values (1051, '秦占豪', '110101198509034011', '男', to_date('03-09-1985', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 31564.79, 40, 1087, null); 167 168 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 169 values (1054, '张利娟', '110101197901173062', '女', to_date('17-01-1979', 'dd-mm-yyyy'), '网络营销师', to_date('08-05-2011 22:37:13', 'dd-mm-yyyy hh24:mi:ss'), 7419.99, 50, null, null); 170 171 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 172 values (1055, '陈向琼', '11010119871010354X', '男', to_date('10-10-1987', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 4000.00, 10, 1087, null); 173 174 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 175 values (1056, '杨晓磊', '110101199105106079', '男', to_date('10-05-1991', 'dd-mm-yyyy'), '研发', to_date('05-04-2012 22:16:05', 'dd-mm-yyyy hh24:mi:ss'), 20812.41, 30, null, null); 176 177 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 178 values (1057, '黄芳菊', '110101196611133520', '女', to_date('13-11-1966', 'dd-mm-yyyy'), '网络营销师', to_date('04-07-2008 17:36:20', 'dd-mm-yyyy hh24:mi:ss'), 12711.46, 40, null, null); 179 180 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 181 values (1058, '李红勤', '110101197209084047', '女', to_date('08-09-1972', 'dd-mm-yyyy'), '运维工程师', to_date('01-03-2007 05:57:34', 'dd-mm-yyyy hh24:mi:ss'), 21119.95, 30, null, null); 182 183 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 184 values (1060, '薛栓成', '110101400710051 ', '男', to_date('10-07-1940', 'dd-mm-yyyy'), '考试专员', to_date('22-08-2007 08:06:47', 'dd-mm-yyyy hh24:mi:ss'), 24544.66, 40, null, null); 185 186 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 187 values (1061, '高发娃', '110101192905226032', '男', to_date('22-05-1929', 'dd-mm-yyyy'), '运维工程师', to_date('12-12-2004 22:49:04', 'dd-mm-yyyy hh24:mi:ss'), 23458.34, 10, null, null); 188 189 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 190 values (1062, '李新昌', '110101196403106013', '男', to_date('10-03-1964', 'dd-mm-yyyy'), '研发', to_date('01-04-2011 18:00:33', 'dd-mm-yyyy hh24:mi:ss'), 18605.46, 40, null, null); 191 192 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 193 values (1065, '赵永刚', '110101197507310014', '男', to_date('31-07-1975', 'dd-mm-yyyy'), '岗位分析师', to_date('05-12-2009 15:00:29', 'dd-mm-yyyy hh24:mi:ss'), 3155.96, 20, null, null); 194 195 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 196 values (1067, '冯世伟', '110101198811154532', '男', to_date('15-11-1988', 'dd-mm-yyyy'), '讲师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 17854.88, 40, 1087, null); 197 198 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 199 values (1068, '张延付', '110101197005233514', '男', to_date('23-05-1970', 'dd-mm-yyyy'), '岗位分析师', to_date('21-05-2009 10:16:16', 'dd-mm-yyyy hh24:mi:ss'), 24294.43, 30, null, null); 200 201 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 202 values (1070, '陈粉', '110101195801206040', '女', to_date('20-01-1958', 'dd-mm-yyyy'), '营销专员', to_date('29-06-2011 21:27:04', 'dd-mm-yyyy hh24:mi:ss'), 17708.56, 20, null, 600.00); 203 204 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 205 values (1071, '张根祥', '110101194412126513', '男', to_date('12-12-1944', 'dd-mm-yyyy'), '岗位分析师', to_date('06-10-2006 12:14:34', 'dd-mm-yyyy hh24:mi:ss'), 8802.52, null, null, null); 206 207 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 208 values (1074, '李秋彩', '110101197411186020', '女', to_date('18-11-1974', 'dd-mm-yyyy'), '考试专员', to_date('09-04-2005 01:11:29', 'dd-mm-yyyy hh24:mi:ss'), 19315.97, 40, null, null); 209 210 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 211 values (1075, '李建玲', '110101198110164423', '女', to_date('16-10-1981', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9023.25, 50, null, null); 212 213 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 214 values (1076, '张仙', '110101530824316 ', '女', to_date('24-08-1953', 'dd-mm-yyyy'), '考试专员', to_date('09-05-2011 11:15:29', 'dd-mm-yyyy hh24:mi:ss'), 8654.83, 40, null, null); 215 216 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 217 values (1077, '朱金典', '110101196810023531', '男', to_date('02-10-1968', 'dd-mm-yyyy'), '营销专员', to_date('11-01-2008 11:13:31', 'dd-mm-yyyy hh24:mi:ss'), 6687.97, 20, null, 2700.00); 218 219 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 220 values (1079, '孙玉环', '110101195006056047', '女', to_date('05-06-1950', 'dd-mm-yyyy'), '考试专员', to_date('17-11-2008 12:48:12', 'dd-mm-yyyy hh24:mi:ss'), 7490.24, 20, null, null); 221 222 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 223 values (1080, '邢中景', '110101198208284519', '男', to_date('28-08-1982', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 24990.57, 40, null, null); 224 225 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 226 values (1081, '韩巧真', '110101198404190026', '女', to_date('19-04-1984', 'dd-mm-yyyy'), '人力资源师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 9880.26, 40, null, null); 227 228 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 229 values (1084, '杜巧琴', '110101196201036089', '女', to_date('03-01-1962', 'dd-mm-yyyy'), '岗位分析师', to_date('13-01-2011 16:11:23', 'dd-mm-yyyy hh24:mi:ss'), 21655.36, 20, null, null); 230 231 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 232 values (1085, '席妞娃', '110101194601154026', '女', to_date('15-01-1946', 'dd-mm-yyyy'), '运维工程师', to_date('15-08-2008 06:36:11', 'dd-mm-yyyy hh24:mi:ss'), 24615.12, 20, null, null); 233 234 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 235 values (1087, '薛素粉', '110101196701044528', '女', to_date('04-01-1967', 'dd-mm-yyyy'), '讲师', to_date('10-09-2007 06:07:14', 'dd-mm-yyyy hh24:mi:ss'), 12357.56, null, 1008, null); 236 237 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 238 values (1088, '王雪英', '110101193311264521', '女', to_date('26-11-1933', 'dd-mm-yyyy'), '岗位分析师', to_date('18-02-2006 23:37:15', 'dd-mm-yyyy hh24:mi:ss'), 23670.53, 10, null, null); 239 240 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 241 values (1089, '刘秀菊', '110101530414306 ', '女', to_date('14-04-1953', 'dd-mm-yyyy'), '研发', to_date('11-09-2004 18:17:49', 'dd-mm-yyyy hh24:mi:ss'), 22608.20, null, null, null); 242 243 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 244 values (1090, '刘芳芳', '110101198912216025', '女', to_date('21-12-1989', 'dd-mm-yyyy'), '网络营销师', to_date('10-10-2012 00:24:11', 'dd-mm-yyyy hh24:mi:ss'), 9749.45, 30, null, null); 245 246 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 247 values (1091, '郝方方', '110101198605165580', '女', to_date('16-05-1986', 'dd-mm-yyyy'), '运维工程师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 5944.72, 40, null, null); 248 249 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 250 values (1092, '赵利萍', '110101196712063564', '女', to_date('06-12-1967', 'dd-mm-yyyy'), '岗位分析师', to_date('01-08-2006 17:26:08', 'dd-mm-yyyy hh24:mi:ss'), 4575.09, 30, null, null); 251 252 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 253 values (1093, '杨联星', '110101195312284013', '男', to_date('28-12-1953', 'dd-mm-yyyy'), '考试专员', to_date('27-10-2009 08:41:47', 'dd-mm-yyyy hh24:mi:ss'), 24545.93, 40, null, null); 254 255 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 256 values (1094, '冯焕', '110101194205093524', '女', to_date('09-05-1942', 'dd-mm-yyyy'), '运维工程师', to_date('27-09-2010 18:25:55', 'dd-mm-yyyy hh24:mi:ss'), 21391.42, 50, null, null); 257 258 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 259 values (1096, '杨晓雨', '110101198910070043', '女', to_date('07-10-1989', 'dd-mm-yyyy'), '营销专员', to_date('07-08-2013 05:49:14', 'dd-mm-yyyy hh24:mi:ss'), 4161.31, 20, null, 2322.00); 260 261 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 262 values (1097, '柴帅友', '110101198510254038', '男', to_date('25-10-1985', 'dd-mm-yyyy'), '网络营销师', to_date('24-11-2011 16:08:38', 'dd-mm-yyyy hh24:mi:ss'), 7805.94, 50, null, null); 263 264 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 265 values (1098, '韩国强', '110101621016003 ', '男', to_date('16-10-1962', 'dd-mm-yyyy'), '研发', to_date('01-09-2007 12:30:52', 'dd-mm-yyyy hh24:mi:ss'), 13755.87, null, null, null); 266 267 insert into TEACHER (TNO, TNAME, TID, GENDAR, BIRTHDATE, JOB, HIREDATE, SAL, DEPTNO, MGRNO, COMM) 268 values (1099, '王参妮', '11010119490831352X', '女', to_date('31-08-1949', 'dd-mm-yyyy'), '岗位分析师', to_date('11-10-2005 13:17:18', 'dd-mm-yyyy hh24:mi:ss'), 26627.94, 30, null, null); 269 270 commit; Sql脚本 导入方式有两种: 1.通过红桶或者其他工具里面执行一遍代码 2.通过cmd命令导入 方式如下: 打开cmd,登陆oracle sqlplus 用户名/密码 之后执行这一句 @ 你所放的sql脚本的全路径 DML语言,无非是增删改查 回顾一下sql语法,往下开始写: 一,内连接 -- 查询老师姓名,部门名称 隐式内连接 select tname,dname from teacher,dept where teacher.deptno=dept.deptno; 显式内连接 select tname,dname from teacher inner join dept on teacher.deptno=dept.deptno; 二,左连接 select tname,dname from teacher left join dept on teacher.deptno=dept.deptno; 三,右连接 select tname,dname from teacher right join dept on teacher.deptno=dept.deptno; 四,全连接 select tname,dname from teacher full join dept on teacher.deptno=dept.deptno; 五,模糊查询 -- 先修改表中的数据 查询姓刘的老师姓名 2个字 -- _代表一个字符 %代表0到N个字符 select tname from teacher where tname like '刘_' select tname from teacher where tname like '刘%' --查询老师姓刘或者姓赵的 老师姓名和薪水 select tname,sal from teacher where tname like '刘%' or tname like '赵%' -- 在上诉例子中 增加条件 薪水降序排列 select tname,sal from teacher where tname like '刘%' or tname like '赵%' order by sal desc 六,修改操作 -- 再增加条件 薪水低于5K的 薪资+1k update teacher set sal=sal+1000 where tname like '刘%' or tname like '赵%' and sal<=5000 七,between -- 查询老师薪水在10k-20k之间的老师姓名和薪水 select tname,sal from teacher where sal between 10000 and 20000 八,in -- 查询教师职位是讲师或者考试专员的老师姓名和职位 select tname,job from teacher where job in('讲师','考试专员')
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 此乃这张表里的全部字段信息,此表无法做修改操作 为什么有伪表这个概念?????????? 因为sql92的一个标准,select 后面要加上from 表名 像一个比较简单的语句,在Mysql和Oracle中有不一样的结果 select 9*9 在Mysql中可以正常计算,而Oracle则不行 具体的原因是Oracle是符合sql92的标准,而Mysql不是,所以,Oracle要想实现select 9*9的运算,拿出了伪表dual select 9*9 from dual dual表就是oracle与数据字典自动创建的一张表,这张表是一个单行单列的表,这个表只有1列:DUMMY,数据类型为VERCHAR2(1),dual表中只有一个数据'X', Oracle有内部逻辑保证dual表中永远只有一条数据。dual表主要是用来选择系统变量或是求一个表达式的值 用伪表的方式查询系统时间 select sysdate from dual; 用自定义的格式展示当前时间: select to_char(sysdate,'yyyy-MM-ss HH:mm:ss') from dual;
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- DDL操作: --创建学生表 create table student( sno number(4) not null, sname varchar2(10) not null, birthdday date ); --向student表中添加两个字段 alter table student add(sal number(7,2),wechat varchar2(20)); --修改sname字段的长度 alter table student modify(sname varchar2(20)); --新增性别字段 alter table student add(sax char(2)); --修改字段的名称 alter table student rename column sax to sex; --给表增加主键约束 alter table student add constraint pk_student_sno primary key(sno); --给表中的sname增加唯一约束 alter table student add constraint uk_student_sname unique(sname); --给表中的sex字段增加检查约束 alter table student add constraint ck_student_sex check(sex in('男','女')); --给表中新增一个年级编号字段 alter table student add(gid number(4)); --创建年级表 主表 create table grade( gradeId number(4) not null primary key, gradename varchar2(10) not null ); --创建外键约束 alter table student add constraint fk_student_grade_gid foreign key (gid) references grade(gradeId); ------------------------------------------------------ 序列有些像mysql的自增列,sqlserver的标识列 --创建序列 create sequence sq_studet_sno --序列的名称 start with 10 --序号的开始数值 increment by 10 --步长 每次序号增长的值 maxvalue 9999999999 --序号的最大值 cycle --nocycle 达到最大值时是否重新开始循环序列号 cache 20 --是否缓存序列号,默认是20个,假如步长是10,缓存20就是200个数,可以用nocache --修改序列名称 rename sq_student_no to sq_student_sno --查询创建的序列,系统默认视图 select * from user_sequences; --使用序列 nextval select sq_student_sno.nextval from dual; --查看当前序列的值 currval select sq_student_sno.currval from dual; --模拟向grade表中使用序列新增数据 insert into grade(gradeid,gradename) values(sq_student_sno.nextval,'三年级'); --查询年级 select * from grade;
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 小结一版: 01.DDL(Data Definition Language)数据定义语言。 用来创建数据库中的各种对象。如表,视图,索引,同义词等。 create drop truncate alter 02.DQL(Data Query Language)数据查询语言。 select where group by having order by 03.DML(Data Manipulation Language)数据操作语言。 Insert update delete 04.DCL(Data Control Language)数据控制语言。 grant revoke rollback commit
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 记录一下我的Oracle学习之路,详细的安装教程忙完这俩天会认真总结一版 本次记录这次学习cmd基础命令 一,记录sql到硬盘、 记录到E盘下的一个名为oracle.txt的文本文件中:spool E:/oracle.txt; 结束记录:spool off; 二,登陆oracle数据库 由于创建的时候设置的密码不同,会存在差异 登陆以管理员的身份:sqlplus / as sysdba; 以指定用户名密码登陆:sqlplus 用户名/密码; 切换账户连接数据库 conn / as sysdba; conn 用户名/密码; 退出:exit; 三,设置行宽 展示的时候因为默认的行宽不够,导致数据展示出来很别扭,所以,设置一些行宽也是很有必要的 set linesize 500; 四,查询所有表空间 Oracle与mysql不同的是,Oracle只有一个数据库,他根据创建表空间和用户方式给不同的人展示数据库里不同的表,而mysql一个用户可以创建好多数据库 select tablespace_name,autoextensible from dba_data_files; ---查询表空间和是否自动增长 五,清屏 clear screen; 六,创建表空间 create tablespace y2167 --创建表空间名为y2167 datafile 'd:/y2167.dbf' --数据库文件存放位置为D盘下的y2167.dbf size 200m --初始容量为200MB autoextend on next 20 maxsize unlimited; --每当到达最大容量的时候自动扩容20MB,无限制的扩容 七,开启关闭自动扩容 alter database datafile 'd:/y2167.dbf' autoextend off; --关闭D盘下y2167这个数据文件的自动扩容 alter database datafile 'd:/y2167.dbf' autoextend on; --开启 八,只删除表空间,不删除数据文件(不推荐) drop tablespace y2167; 九,删除表空间的同时删除他的数据文件 drop tablespace y2167 including contents and datafiles 十,创建用户 create user 用户名 identified by 密码 default tablespace 表空间名; create user dawn identified by dawn default tablespace y2167; 十一,给用户登陆的权限,授权与撤权 grant create session to dawn; --授权 revoke create session from dawn; --撤权 十二,给用户一个可以登陆,可以进行基本操作的权限 grant connect,resource to dawn; --授权 revoke connect,resource to dawn; --撤权 十三,给用户以组的方式授权 打个比方,不同的人关注数据库的点不同,有些人可以提升成为一类的角色,这个角色可以做的操作这些人都可以做 grant 角色名 to 用户名; 十四,修改一个角色的密码 alter user 用户名 identified by 新密码; 十五,删除一个角色 drop user 用户名 cascode; 注:如果上方语句单词有错误,请大侠指明,感激不尽!!!!!!!
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本次的MySQL开篇记录了一道面试题,我给其扩展一下 这面试题它难点在什么地方,不外乎是操作月份和将其展示的格式问题,他要查每个月份下的状态,并将其横向展示 给本次博客列一个篇章,我要讲什么: 1.根据一个属性分组查每个月下数据的记录的个数 2.查每个月数据的记录的个数,根据年份分组 3.根据一个属性分组,查询每个月下某一属性的值的总和 4.查询每个月下某个属性的值的总和,根据年份分组 我给一个测试表,合起来了,需要用来测试的自己拿,就是上面的面试题的 DROP TABLE IF EXISTS `demo003`; CREATE TABLE `demo003` ( `question_code` varchar(225) DEFAULT NULL, `flowcode` int(225) DEFAULT NULL, `flowtype` varchar(225) DEFAULT NULL, `duty_dept_name` varchar(225) DEFAULT NULL, `create_person_name` varchar(225) DEFAULT NULL, `create_time` datetime DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*Data for the table `demo003` */ insert into `demo003`(`question_code`,`flowcode`,`flowtype`,`duty_dept_name`,`create_person_name`,`create_time`) values ('171026131',1,'待整改','感染科','刘某某','2017-08-17 16:02:06'),('171026132',1,'待整改','感染科','刘某某','2017-08-17 16:02:06'),('171019119',3,'待认领','保卫处','测试','2018-05-04 16:03:18'),('1710191110',0,'待认领','保卫处','测试','2018-04-05 16:04:04'),('1710191111',0,'待认领','保卫处','测试','2018-02-22 16:04:31'),('1710191112',2,'待整改','保卫处','测试','2018-03-09 16:05:10'),('1710191113',1,'待整改','总务处','测试','2017-11-29 16:05:52'),('1710191114',4,'已关闭','总务处','测试','2017-10-18 16:06:18'),('1710191115',1,'待整改','总务处','测试','2017-10-11 16:07:05'),('1710191116',1,'待整改','总务处','测试','2018-02-28 16:07:39'),('1710191117',1,'待整改','保卫处','测试','2018-02-13 16:08:12'); 上面面试题的mysql表的sql脚本 1.首先我讲的是第一种,,根据某个属性分组,查每个月下数据的个数,就是我说的那道面试题的结果的写法 我把面试题答案合起来,把第一个种sql的写法格式展开,你们想看答案的,自己打开合起来的 SELECT flowcode, SUM(CASE WHEN MONTH(create_time) =1 THEN 1 ELSE 0 END) 一月, SUM(CASE WHEN MONTH(create_time) =2 THEN 1 ELSE 0 END) 二月, SUM(CASE WHEN MONTH(create_time) =3 THEN 1 ELSE 0 END) 三月, SUM(CASE WHEN MONTH(create_time) =4 THEN 1 ELSE 0 END) 四月, SUM(CASE WHEN MONTH(create_time) =5 THEN 1 ELSE 0 END) 五月, SUM(CASE WHEN MONTH(create_time) =6 THEN 1 ELSE 0 END) 六月, SUM(CASE WHEN MONTH(create_time) =7 THEN 1 ELSE 0 END) 七月, SUM(CASE WHEN MONTH(create_time) =8 THEN 1 ELSE 0 END) 八月, SUM(CASE WHEN MONTH(create_time) =9 THEN 1 ELSE 0 END) 九月, SUM(CASE WHEN MONTH(create_time) =10 THEN 1 ELSE 0 END) 十月, SUM(CASE WHEN MONTH(create_time) =11 THEN 1 ELSE 0 END) 十一月, SUM(CASE WHEN MONTH(create_time) =12 THEN 1 ELSE 0 END) 十二月, COUNT(flowcode) 合计 FROM demo003 GROUP BY flowcode 面试题答案 他的书写格式为 SELECT 根据分组的属性, SUM(CASE WHEN MONTH(表中记录的日期的属性) =1 THEN 1 ELSE 0 END) 一月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =2 THEN 1 ELSE 0 END) 二月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =3 THEN 1 ELSE 0 END) 三月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =4 THEN 1 ELSE 0 END) 四月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =5 THEN 1 ELSE 0 END) 五月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =6 THEN 1 ELSE 0 END) 六月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =7 THEN 1 ELSE 0 END) 七月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =8 THEN 1 ELSE 0 END) 八月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =9 THEN 1 ELSE 0 END) 九月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =10 THEN 1 ELSE 0 END) 十月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =11 THEN 1 ELSE 0 END) 十一月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =12 THEN 1 ELSE 0 END) 十二月, COUNT(*) 合计 FROM 表名 GROUP BY 根据分组的属性 ###############################################33 #Then后面的一定是1,因为是查询的是记录的个数,和不是查询 记录的值的总和 2.查每个月数据的记录的个数,根据年份分组 格式: SELECT YEAR(表中记录的日期的属性) 年度, SUM(CASE WHEN MONTH(表中记录的日期的属性) =1 THEN 1 ELSE 0 END) 一月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =2 THEN 1 ELSE 0 END) 二月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =3 THEN 1 ELSE 0 END) 三月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =4 THEN 1 ELSE 0 END) 四月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =5 THEN 1 ELSE 0 END) 五月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =6 THEN 1 ELSE 0 END) 六月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =7 THEN 1 ELSE 0 END) 七月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =8 THEN 1 ELSE 0 END) 八月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =9 THEN 1 ELSE 0 END) 九月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =10 THEN 1 ELSE 0 END) 十月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =11 THEN 1 ELSE 0 END) 十一月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =12 THEN 1 ELSE 0 END) 十二月, COUNT(*) 合计 FROM 表名 GROUP BY YEAR(表中记录的日期的属性) 3.根据一个属性分组,查询每个月下某一属性的值的总和,一般用于统计钱的数量 格式: SELECT 根据分组的属性, SUM(CASE WHEN MONTH(表中记录的日期的属性) =1 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 一月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =2 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 二月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =3 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 三月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =4 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 四月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =5 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 五月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =6 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 六月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =7 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 七月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =8 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 八月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =9 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 九月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =10 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 十月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =11 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 十一月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =12 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 十二月, SUM(要计算总和的列的属性,比如钱) 合计 FROM 表名 GROUP BY 根据分组的属性 4.查询每个月下某个属性的值的总和,根据年份分组 SELECT YEAR(表中记录的日期的属性) 年度, SUM(CASE WHEN MONTH(表中记录的日期的属性) =1 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 一月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =2 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 二月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =3 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 三月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =4 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 四月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =5 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 五月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =6 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 六月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =7 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 七月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =8 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 八月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =9 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 九月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =10 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 十月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =11 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 十一月, SUM(CASE WHEN MONTH(表中记录的日期的属性) =12 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 十二月, SUM(要计算总和的列的属性,比如钱) 合计 FROM 表名 GROUP BY YEAR(表中记录的日期的属性) 年度, 本章完,祝愿各位攻城狮都能更进百步 转载请注明出处:原作者:晨曦Dawn 原博客地址:http://www.cnblogs.com/DawnCHENXI/p/8781684.html
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 拦截器Interceptor: 对处理方法进行双向的拦截,可以对其做日志记录等 我选择的是实现HandlerInterceptor接口 我把执行流程放上来,单个拦截器的和多个拦截器的,然后写个Demo案例,就可以正式结束Springmvc,过几天写完SSM整合,SSM就结束了,将来有机会多放几个项目在博客园上 图1,单个拦截器执行流程 图2,多个拦截器的执行流程 我会给大家定义俩个拦截器,大家跑一下,看看执行顺序,另外大家可以举一反三的扩充,定义多个拦截器或者在拦截器的方法中填实际的处理代码 案例Demo开始 1.自定义第一个拦截器FirstInterceptor package cn.dawn.day25interceptor;/** * Created by dawn on 2018-04-02. */ import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FirstInterceptor implements HandlerInterceptor{ //在Handler执行前执行 public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { System.out.println("preHandle============="); return true; } public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { System.out.println("postHandle============="); } public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { System.out.println("afterCompletion============="); } } preHandle这个方法,它的返回值决定了下面俩个方法是否执行,如果false,则不会执行下面的那俩方法 2.自定义第二个拦截器SecondInterceptor package cn.dawn.day25interceptor;/** * Created by dawn on 2018-04-02. */ import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SecondInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { System.out.println("Second preHandle============="); return true; } public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { System.out.println("Second postHandle============="); } public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { System.out.println("Second afterCompletion============="); } } 3.自定义处理器和处理方法 package cn.dawn.day25interceptor;/** * Created by dawn on 2018-04-02. */ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class FirstController { @RequestMapping("/first") public String doFirst(){ System.out.println("Handler method"); return "success"; } } 4.自己的xml配置文件中配置一道,将拦截器配置上去 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--包扫描器--> <context:component-scan base-package="cn.dawn.day25interceptor"></context:component-scan> <!--视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/day25/"></property> <property name="suffix" value=".jsp"></property> </bean> <!--拦截器配置--> <mvc:interceptors> <!--配置多个拦截器,多个拦截器链--> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="cn.dawn.day25interceptor.FirstInterceptor"></bean> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="cn.dawn.day25interceptor.SecondInterceptor"></bean> </mvc:interceptor> </mvc:interceptors> <!--绑定注解驱动--> <mvc:annotation-driven></mvc:annotation-driven> </beans> 此处的拦截器位置的前后,决定了他们执行的先后 此处的/**表示任意多级目录的任意方法,全部的意思 5.修改web.xml的中央调度器的上下文配置位置为上面那个xml 6.jsp页面,我不是return了个success么,所以建一个success.jsp <%-- Created by IntelliJ IDEA. User: Dawn Date: 2018/4/2 Time: 14:19 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head> <title>成功</title> </head> <body> <h1>SUCCESS</h1> </body> </html> 7.启动tomcat,访问处理器的那个处理方法/first
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 我将用自认为最简单的语言,描述Springmvc的文件上传,来将老夫毕生功力灌顶传授给你 首先文件上传,又简至深 前提有吗?jar包,form表单里的属性(method="post" enctype="multipart/form-data") jar包的节点我给出来: <!--文件上传的jar包--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>1.4</version> </dependency> 下面我开始我第一个案例,最简单的文件上传: 1.jsp页面:fileupload.jsp <%-- Created by IntelliJ IDEA. User: Dawn Date: 2018/4/2 Time: 14:19 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head> <title>文件上传</title> </head> <body> <h1>文件上传</h1> <form action="${pageContext.request.contextPath}/fileuploadfirst" method="post" enctype="multipart/form-data"> 文件1 <input type="file" name="upload"/> <input type="submit"/> </form> </body> </html> success.jsp <%-- Created by IntelliJ IDEA. User: Dawn Date: 2018/4/2 Time: 14:19 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head> <title>成功</title> </head> <body> <h1>SUCCESS</h1> </body> </html> 2.在webapp下你jsp页面的那个包下创建一个文件夹,我的叫upload,里面随便扔个东西,编译后,如果即使这样target目录下还没有upload这个文件夹的话,就手动创建 3.创建处理器和处理方法 package cn.dawn.day24fileupload; import com.sun.org.glassfish.gmbal.ParameterNames; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpSession; import java.io.File; import java.io.IOException; /** * Created by Dawn on 2018/4/2. */ @Controller public class FileupLoad { /*最初始版本*/ @RequestMapping("/fileuploadfirst") public String fileuploadfirst(MultipartFile upload, HttpSession session){ /*获取上传文件的简单名称例如 1.txt*/ String childrlPath = upload.getOriginalFilename(); /*获得一个真实路径*/ String parentPath = session.getServletContext().getRealPath("/day24/upload"); /*获取一个完整的文件对象*/ File file=new File(parentPath,childrlPath); /*传输创建到本地*/ try { upload.transferTo(file); /*上传成功*/ return "success"; } catch (IOException e) { e.printStackTrace(); } /*上传失败*/ return "fileupload"; } } 4.自己的xml配置文件:这儿其实我想删减点的,文件名中文的处理和文件大小限制放在后面讲也行,不过放在这儿,你们应该也能理解 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--包扫描器--> <context:component-scan base-package="cn.dawn.day24fileupload"></context:component-scan> <!--视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/day24/"></property> <property name="suffix" value=".jsp"></property> </bean> <!--多部分文件解析器--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--文件名的编码--> <property name="defaultEncoding" value="UTF-8"></property> <!--限制文件大小--><!--这个单位是byte,我这儿限制的是20mb最大容量--> <property name="maxUploadSize" value="20971520"></property> </bean> <!--绑定注解驱动--> <mvc:annotation-driven></mvc:annotation-driven> </beans> 5.web.xml中修改中央处理器的上下文配置参数为上面那个xml 6.启动tomcat,访问fileupload.jsp页面 第二个案例:多文件上传 1.jsp页面fileuploadmore.jsp: <%-- Created by IntelliJ IDEA. User: Dawn Date: 2018/4/2 Time: 14:19 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head> <title>文件上传</title> </head> <body> <h1>文件上传</h1> <form action="${pageContext.request.contextPath}/fileuploadsecond" method="post" enctype="multipart/form-data"> 文件1 <input type="file" name="upload"/> 文件2 <input type="file" name="upload"/> 文件3 <input type="file" name="upload"/> <input type="submit"/> </form> </body> </html> success.jsp <%-- Created by IntelliJ IDEA. User: Dawn Date: 2018/4/2 Time: 14:19 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head> <title>成功</title> </head> <body> <h1>SUCCESS</h1> </body> </html> 2.处理器处理方法 package cn.dawn.day24fileupload; import com.sun.org.glassfish.gmbal.ParameterNames; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpSession; import java.io.File; import java.io.IOException; /** * Created by Dawn on 2018/4/2. */ @Controller public class FileupLoad { /*多文件版本*/ @RequestMapping("/fileuploadsecond") public String fileuploadsecond(@RequestParam MultipartFile[] upload, HttpSession session){ for (MultipartFile item :upload) { if(item.getSize()>0) { /*获取上传文件的简单名称例如 1.txt*/ String childrlPath = item.getOriginalFilename(); /*获得一个真实路径*/ String parentPath = session.getServletContext().getRealPath("/day24/upload"); /*获取一个完整的文件对象*/ File file = new File(parentPath, childrlPath); /*传输创建到本地*/ try { item.transferTo(file); /*上传成功*/ } catch (IOException e) { e.printStackTrace(); return "fileuploadmore"; } } } /*上传失败*/ return "success"; } /*最初始版本*/ @RequestMapping("/fileuploadfirst") public String fileuploadfirst(MultipartFile upload, HttpSession session){ /*获取上传文件的简单名称例如 1.txt*/ String childrlPath = upload.getOriginalFilename(); /*获得一个真实路径*/ String parentPath = session.getServletContext().getRealPath("/day24/upload"); /*获取一个完整的文件对象*/ File file=new File(parentPath,childrlPath); /*传输创建到本地*/ try { upload.transferTo(file); /*上传成功*/ return "success"; } catch (IOException e) { e.printStackTrace(); } /*上传失败*/ return "fileupload"; } } 3.自己的xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--包扫描器--> <context:component-scan base-package="cn.dawn.day24fileupload"></context:component-scan> <!--视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/day24/"></property> <property name="suffix" value=".jsp"></property> </bean> <!--多部分文件解析器--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--文件名的编码--> <property name="defaultEncoding" value="UTF-8"></property> <!--限制文件大小--><!--这个单位是byte,我这儿限制的是20mb最大容量--> <property name="maxUploadSize" value="20971520"></property> </bean> <!--绑定注解驱动--> <mvc:annotation-driven></mvc:annotation-driven> </beans> 4.修改web.xml的中央调度器的上下文配置位置为上面那个xml 5.在webapp下你jsp页面的那个包下创建一个文件夹,我的叫upload,里面随便扔个东西,编译后,如果即使这样target目录下还没有upload这个文件夹的话,就手动创建 6.启动tomcat,访问fileuploadmore.jsp页面