java学习第三十三天内容

1.前一天重点内容复习

        反射获取类中构造方法对象并去创建该类实例

                获得构造方法对象:

                        public Constructors<?>[] getConstructors() throws SecurityException:获取类中所有的公共构造方法的类对象

                        public Constructors<?>[] getDeclaredConstructors() throws SecurityException:获取类中所有的构造方法的类对象

                        public Constructor<T> getConstructors(Class<?> parameterTypes) throws NoSuchMethodException,SecurityException:获取类中指定的公共构造方法的类对象,参数为字节码文件对象

                创建实例:

                        public T newInstance(Object... initargs):创建当前类的实例,参数为可变参数,作用为描述给构造方法的实际参数,这个方法可以由字节码文件对象调用,也可以先创建构造方法类对象,再用构造方法类对象来调用此方法

        反射获取类中成员方法对象并去调用该方法

                获得成员方法:

                        public Method[] getDeclaredMethods() throws SecurityException:获取当前类中所有成员方法,不包括继承方法

                        public Method[] getMethods() throws SecurityException:获取当前类中所有公共的成员方法,包括继承方法

                        public Method getMethod(String name,Class(?)...parameterTypes) throws NoSuchMethodException,SecurityException throws SecurityException:获取当前类中指定的的成员方法,参数1为方法名,参数2为可变参数,如果无参则不需要,如果带参则需要写上参数类型的class

                        public Method getDeclaredMethod(String name,Class(?)...parameterTypes) throws NoSuchMethodException,SecurityException throws SecurityException:获取当前类中指定的的成员方法类对象,包括私有的和保护的和默认修饰的

                访问:

                        public Object invoke(Object obj , Object... args):调用当前类的成员方法,参数1为当前类的对象,参数2为可变参数,作用为给形式参数赋值

反射获取类中成员变量并去给成员变量赋值

                获得成员变量:

                        public Field[] getFields() throws SecurityException:获取当前类的公共字段类对象 

                        public Field[] getDeclaredFields() throws SecurityException:获取当前类的所有字段类对象 

                        public Field getField(String name) throws NoSuchFieldException,SecurityException:获取当前类指定的公共字段类对象 

                赋值:

                        public void set(Object obj, Object value) throws IllegalArgumentException,IllegalAccessException:给指定的类对象实例赋值,第一个参数为该类的具体对象,第二个参数为赋值的值

        获取类字节码文件方式

                通过使用Object类中的getClass()方法

                        对象.getClass()

                任意java类型的class属性可以获取

                        类名.class

                反射的静态功能forName

                        public static Class forName(String pathname)

                                pathname为当前类的全限定名称(包名.类名)
2.数据库基础操作语句

        进入数据库:mysql -uroot -p

        创建库:create database 库名;        create database if not exists 库名;

        展示库:show databases;

        删除库:drop database 库名;        drop database if exists 库名;

        查询新建数据库的字符集:show create database 库名;

        查询mysql中所有的字符集:show variables like '%character%';

3.DDL语句

        使用库:use 库名;

        查询库中有哪些表:show tables;

        创建表语法:

                create table 表名(字段名称1 字段类型,字段名称2 字段类型,....,字段名称n 字段类型);

        查询表结构:desc 表名;

        修改表

                添加字段名及类型:alter table 表名 add 字段名称 字段类型;

                修改字段名及类型:alter table 表名 change 以前字段名称 新的字段名称 数据类型;

                修改字段名的类型:alter table 表名 modify 字段名称 新的字段类型;

                删除字段名及类型:alter table 表名 drop 字段名称;

                修改表名:alter table 表名 rename to 新表名;

                复制表:create table 复制的表名 like 被复制的表名;

                删除表:drop table 表名;/ drop table if exists 表名;

4.mysql注释格式

        单行:#或者--

        多行:/**/

5.mysql常见字段类型

        varchar:字符串类型

        char:字符类型

        int:整数类型

        date:日期

        datetime:日期和时间

        timestap:时间戳

6.DML语句

        插入数据:

                单排插入:insert into 表名 values(值1,值2,值3,、、、);

                多排插入:insert into 表名 values

                                (值1,值2,值3,、、、),

                                (值1,值2,值3,、、、),

                                、、、 (值1,值2,值3,、、、);

                注意事项:插入数据的时候,插入数据的值类型需要和当前字段类型一致

                单排插入部分字段:insert into 表名(字段名称1,字段名称2、、、) values(值1,值2,值3,、、、);

                多排插入部分字段:insert into 表名(字段名称1,字段名称2、、、) values

                                (值1,值2,值3,、、、),

                                (值1,值2,值3,、、、),

                                、、、 (值1,值2,值3,、、、);

        修改数据

                修改某一字段一条:update 表名 set 指定名称 = 值 where 条件;

                修改某一字段多条:update 表名 set 指定名称1 = 值1,指定名称2 = 值2、、、 where 条件;

                批量修改某一字段:update 表名 set 指定名称 = 值;

        删除数据:

                单个条件删除:delete from 表名 where 条件;

                多个条件删除:delete from 表名 where 条件1 and 条件2 ;

                删除全表数据:delete from 表名; /TRUNCATE table 表名;

                        两种删除方式的区别:

                                delete from 表名;:只是删除了表中数据,表对数据的约束仍然在

                                TRUNCATE table 表名;:将表数据和表对数据的约束一起删除

7. sql(结构化查询语句)

        查询格式:SELECT 需要查询的信息 FROM 表 WHERE 查询的条件;

                可以给表起一个别名,即在表后面加上“AS 表别名”即可

                可以给查询信息起个名字单引号''中间加上名字即可

                mysql自带判断是否为空的函数ifnull(字段名称,预期值);:如果字段为空则将预期值赋值过去

        where条件查询:后面可以跟

                基本比较运算符:<,<=,>,>=

                赋值运算符:=

                不等于:<>

                并列关系:and

                或关系:or

                判断某值为空:is null

                判断某值不为空:is not null

                在两值范围内(包含两端):between 值1 and 值2

                多个或者关系in集合语句:in(值1,值2,值3);

        模糊查询:关键字like

                SELECT 需要查询的字段 FROM 表名 WHERE 字段名称 LIKE '%xx%';

        集合函数查询:

                count(字段):通过指定字段查询总记录数

                avg(字段):对某个字段的值求平均值

                max(字段):求某个字段的最大值

                min(字段):求某个字段的最小值

                sum(字段):对某个字段的值进行求和

        排序查询:

                单条件排序:order by 字段名称 排序方式;

                多条件排序:order by 字段名称1 排序方式1,字段名称1 排序方式1,、、、;

                排序方式

                        asc:升序排序,字段名称后面如果没写排序规则,默认升序排序asc

                        desc:降序排序                         

        分组查询:GROUP BY

                格式:SELECT 分组字段,聚合函数 FROM 表名 GROUP BY 分组字段;

                注意事项:GROUP BY后面不能跟聚合函数,WHERE条件必须在GROUP BY之前因为先满足条件再分组

        筛选查询:having:having后面可以跟聚合函数,GROUP BY分组之后,后面就可以使用having

        分页查询:limit

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值