栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

学习基础4 数据库范式+正则+关于常用类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习基础4 数据库范式+正则+关于常用类

数据库范式

范式的概念:3范式:

范式的目的:解决重复的数据问题(冗余:多余重复)

第一范式:确保表中的字段不能拆分!(字段的原子性:一个表只描述一个事情)

第二范式:确保表中的各个字段都依赖于主键(将字段删除)

第三范式:消除传递依赖,确保各个字段都绝对依赖主键

外键的注意事项:

1:只有主键才可以作为另一个表的外键

2:外键的数据类型必须和主键的数据类型兼容

多个表的查询:

1:表连接查询

  交叉连接:返回笛卡尔集

   内连接:

   外连接:

 左外连接: 返回基于left关键字(左侧的表)做为基表所有的记录,没有则使用null填充

右外连接:返回基于right关键字(右侧的表)做为基表所有的记录,没有则使用null填充

表连接查询会返回多个表的字段信息,有些条件查询表连接不能查询(例如:查询没有参加过考试的学生信息)。

2:子查询: 查询中的查询(嵌套查询)

子查询:语法

 Select * from 表 where 字段名 in (=)(select  字段名 from 表名)

注意以上的红色的字段名(要求数据类型必须兼容)

例如:查询年龄最大的学生信息:

select * from stu where age =(select max(age) from stu);

区别

表连接

子查询

返回的结果集

多个表的字段

父查询表的字段

执行效率

低

高

# =any(=some) 等效于 in  <>all等效于 not in

select * from stu where sid in(select sid from score);

select * from stu where sid =any(select sid from score);

#查询没有参加过考试的学生

select * from stu where sid not in(select sid from score);

select * from stu where sid <>all(select sid from score);

子查询最大可以嵌套32个 . 子查询执行时会将各个子查询交给一个CPU去执行

正则表达式

为什么使用正则:

  问题:如何在一个文件中找到所需要的内容,过滤掉一些敏感的、不文明的字。Java 提供JDK不能实现以上功能,正则可以完成!

什么是正则(表达式):正则可以对指定的文本进行验证、查询和替换。

正则的语法:

 

 

 关于常用类

拆箱装箱

装箱和拆箱的目的: 简化代码,将数据类型转换的工作交给JVM

 Integer i1=100;
  Integer i2 = new Integer(100);
  Integer i3= new Integer(100);
System.out.println(i2);
System.out.println(i3);
System.out.println(i2 == i3);
System.out.println(i2.equals(i3));

int a = i1;//转换:拆箱(将引用类型赋值给基本类型)
int b =i2; //拆箱

Java常用类

API: Application       Program       Interface

        应用程序           编程              接口(类似于:新华字典)

API编程:框架(的核心)

Pattern p= Pattern.compile("\d");//预编译好,保存起来 PreparedStatement: Statement
Matcher matcher = p.matcher("23");
System.out.println(matcher.matches());
 //以下的代码等效于上面的3行代码, 不同的地方
 // 区别在:以上的三行代码采用的是预编译效果,执行的效率要高于下面的一行代码。
System.out.println(Pattern.compile("\d").matcher("11").matches());

时间的操作:

Java.util.Date

package com.song.example;

import java.text.*;
import java.util.Calendar;
import java.util.Date;

public class DateTemo {

    public static void main(String[] args) throws ParseException {
        //关于Date(时间) 的操作:
        Date date =new Date();//默认构造:系统时间作为参数
        System.out.println(date);
        Date date1 =new Date("1999/9/9");
        System.out.println(date1);
//        Date date2 = new Date(2001, 11, 23);
//        Date date3 = new Date(Calendar.YEAR, Calendar.MONTH, Calendar.DATE);
//        System.out.println(date2);
         //日期的格式化
        DateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        DateFormat dateFormat =new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
//        DateFormat dateFormat =new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
        System.out.println(dateFormat.format(date));
        //String的转换日期
        String str="1998-11-22";
        SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
        Date parse = sdf.parse(str);
        System.out.println(parse);
        //日期转换为String
        System.out.println(sdf.format(parse));
        System.out.println(sdf.format(new Date()));
    }
}

 日历操作类:java.util.Calendar

该类可以对日历进行操作:对指定的日期获取、年、月、日等,判断是否闰年、在日期上进行增加、减少等。

package com.song.example;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class CalendarDemo {

    private static  final SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    public static void main(String[] args) {
        //日历操作: 判断闰年
        //通过静态方法创建一个日历的实例(系统时间)
        Calendar calendar= Calendar.getInstance();
        System.out.println("得到long的毫秒值:1900:"+calendar.getTime());
        System.out.println("年:"+calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(Calendar.MONTH));//0-11
        System.out.println("日期:"+calendar.get(Calendar.DATE));
        System.out.println("小时:"+calendar.get(Calendar.HOUR));
        System.out.println("分钟:"+calendar.get(Calendar.MINUTE));
        System.out.println("秒:"+calendar.get(Calendar.SECOND));
        Date date=calendar.getTime();
        System.out.println("当前时间是:"+ sdf.format(date));
        //对日期指定部分进行添加: 30 天:   2022-7-13 +30 : java代码比较麻烦
//        calendar.add(Calendar.MONTH, 1);//月上加一个月
//        date = calendar.getTime();
//        System.out.println("加一个月后:"+ sdf.format(date));
        System.out.println("添加30天");
        calendar.add(Calendar.DATE,30);
        date =calendar.getTime();
        System.out.println("新的日期是:"+sdf.format(date));
         calendar.add(Calendar.DATE, -10);
        date =calendar.getTime();
        System.out.println("新的日期是:"+sdf.format(date));
        //判断闰年
        GregorianCalendar gregorianCalendar=new GregorianCalendar();
        System.out.println(gregorianCalendar.isLeapYear(2000));

    }
}

关于格式化的操作:

 System.out.println(2.0-1.1);
        //以上代码输出不是0.9而是0.89999999999 ,默认是double
        //如何输出0.9 ?
        //1
        System.out.println(2.0f-1.1f);
        //2
        System.out.println(BigDecimal.valueOf(2.00).subtract(BigDecimal.valueOf(1.10)));
        //3
        System.out.printf("%5.2f",2.0-1.1);
//        User user=new User("tom", 22);
//        System.out.println(user);
        for(int i=1;i<=10;i++) {
            System.out.println(UUID.randomUUID().toString());
        }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021474.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号