登录:
mysql -uroot -p
root
查看数据库
show databases
切换数据库
use test
显示所有表
show tables
查看指定表的表结构
desc table_name
1,创建表stu
create table stu
(
id int,
name varchar(16)最长多少,
gender char(6)abcdef虽然是char但在数据库中但也是字符串.,
birthdaydate
);
2,在 stu表插入数据
insert into stu
values(95277,'joe','M','1991-06028');
3.查询stu
select * from stu;
4.修改stu表的数据
update stu set name='胡桥' ,birthday='1999-03-2';
5执行脚本文件
mysql>source d:\yourScript.sql
6,删除表数据 delete from tablename
where 字句
---------------------------------------------
=
<>
>
>=
<
<=
%表示0~多个任意字符
between 小and 大
in(值1,值2,值3....)
is null不能用=
like 模糊查询
_统配单个字符'_ab%' 匹配第2,3个是ab的
order by a,b 当a相同时再按b排.
*1.where 后面不能用字段别名,因为先过滤在显示别名,
2.order by 可以用别名,因为order by时已经过滤好了结果.
select ifnull(1,2) 1
select ifnull(null,2) 2
=====多行函数========
max
min
avg
count
*不能直接与其他字段一起查询 多行不能对一个
*所有多行函数会忽略null值
group by 后面对分完组的结果进行过滤要用having 并且可以用别名,分组过程已经完成.
DML
============================================
**insert into users(username)values('i''m joe'); //单引号转译用 ' .
**set autocommit =0设置自动提交关闭.
rollback
回到以前的状态.(内存中的抛弃.)
数据类型
-----------------------------------------------
int 默认11位
int(3) 3位
numeric(6)6位整数
numeric(8,2)6位整数,2位小数
decimal(6)
varchar(32)变长
char(6)定长
text 最长65535个字符
date 年月日//oracle 包含时分秒
datetime 年月日时分秒
alter table stu add(
height numeric(4,1),
weight numeric(4,1))
====================jdbc=================
class.forName(driver),
mysql最大连接数100
数据库的异常要想界面抛出,让用户来选择操作.(jdbc的代码一般都是底层代码)
Statement:
===========================
sql注入:
select 1 from users where username='joe' and password='
1' or '1'='1 ';
把带问号的sql发送大服务器.执行execute时把自己设置的值传到服务器.
//不用每次都创建新的prest对象. (prest.close)rs.close释放的是服务器端的资源.
*可以对站位符的sql语句进行预处理 ?
==========================
引用类型可以直接赋值null,基本类型赋值null如下:
prestmt.setNull(1, Types.INTEGER);
rs.wasNull判断结果集是否为空.
==================================
addBatch()//减少通信次数
clearBatch();//把已经缓存的一批清除掉
*数据库字符集
deault character encoding utf8
*数据库字符集
deault character encoding utf8
*java 发送或接受的字符编码
jdbc:mysql://localhost:3306/hr?useUnicode=true&characterSet=utf8
执行脚本文件
---------------------------------------
mysql> source d:\mydb.sql
mysqldump-uroot -p 库名>文件路径
反射
=============================
*类对象
java.lang.Class
内存中每种类型,都纯在唯一的一个表示图纸的对象
*获取类型信息:
*)包名
getPackage()
*)类名
getName()
getSimpleName()
*)构造方法
getDeclaredConstructors()//获得所有的构造方法包括私有
getConstructor()//获得所有可见的构造方法
*)成员变量
getDeclaredField()
获得所有的成员变量包括私有不包含从父类继承的成员变量
getField()
获得所有可见的成员变量含从父类继承的成员变量
*)方法
getDeclaredMethods()
获得所有的成员方法,包含私有
不包含继承
getMethods()
获得可见的成员方法包含继承的成员方法
*)创建实例
1)通过无参构造方法创建实例
Object obj=c.newInstance();//c类对象
2)通过有参构造方法
Constructor c= c.getConstructor(int.class,String.class);//通过传入的参数类型获得相应的构造方法
Object obj=c.newInstance(234,"sdfs");//传入构造方法所需要的参数值
Class A
{
public A(){}
public A(int i){}
public A(int i,String s){ }
}
*)访问成员变量
Field f =c.get DeclaredField("gender");//可获取私有
让私有变量可以访问:
f.setAccessible(true)//可以访问私有变量
赋值:
f.set(obj,"男")
取值:
String s=(String)f.get(obj)
*)调用方法
Method m=c.getMethod("方法名" ,int.class,String.class);//指定方法名和参数列表
m.invoke(obj,232,"sdf") //obj执行方法的实例 参数....方法无返回值返回void 有返回值要接收.
以 java.util.Date为列:
1. Class <Date>c=Date.class;
2.Class.forName("java.util.Date");//其实是在获得类对象//可以传入不同字符串
3.实例.getClass();//object 继承而来.