使用mySql的时候 javabean使用String类型 不能使用char类型
javabean使用Date类型
如果是在mySql中的int double等为null 我们可以在java中使用Integer 或是 Double等 引用数据类型
使用PreparedStatement的优点 不使用Statement
①避免拼接
②避免sql注入
③处理blob类型的数据
查询结果元数据 java.sql.ResultSetMetaData
① 获取
ResultSet resultSet = prepareStatement.executeQuery();
ResultSetMetaData rsmd = resultSet.getMetaData();
②获取结果的列数 getColumnCount
ResultSetMetaData rsmd = resultSet.getMetaData();
HashMap<String, Object> map = new HashMap();
while (resultSet.next()) {
// 把列名的别名和列值分别取出来放到map中作为键值出现(resultSet和rsmd结合得到的就是一个表,和数据库表一样),
// 由ResultSetMetaData得到每一列的别名,
for (int i = 0; i < rsmd.getColumnCount(); i++) {
String columnLabel = rsmd.getColumnLabel(i + 1);
Object columnValue = resultSet.getObject(columnLabel);
System.out.println("columnLabel---" + columnLabel + " columnValue---" + columnValue);
map.put(columnLabel, columnValue);
}
//或者直接使用
System.out.println(resultSet.getObject(1));
System.out.println(resultSet.getObject(2));
}
③ 获取列的名称 getColumnLabel
删除表的某个字段
alter table table1 drop test
直接修改某个字段为外键
首先保证这个字段存在 然后再增加外键约束
ALTER TABLE orderDetailTable ADD oid integer //保证这个字段存在
ALTER TABLE orderDetailTable ADD FOREIGN KEY (oid) REFERENCES orderTable(oid)//增加外键约束
进行外键的约束 主要是为了保证数据的完整性
修改多张表
update 表名称1,表名称2 set 表名1.字段1=新值, 表名称1.字段2 = 新值,表名称2.字段3=新值 【where 条件】;
进行增加约束 和取消约束
增加 not null 约束:
ALTER TABLE emp MODIFY sex VARCHAR(30) NOT NULL;
取消 not null 约束:
ALTER TABLE emp MODIFY sex VARCHAR(30) NULL;
添加唯一约束 不允许相同 但是允许为null
ALTER TABLE USER ADD UNIQUE(NAME,PASSWORD);
或者
ALTER TABLE USER ADD CONSTRAINT uk_name_pwd UNIQUE(NAME,PASSWORD);
删除约束
ALTER TABLE USER DROP INDEX uk_name_pwd;
主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值
添加主键约束
ALTER TABLE emp5 ADD PRIMARY KEY(NAME,pwd);
删除主键约束
ALTER TABLE emp5 DROP PRIMARY KEY;
修改主键约束
ALTER TABLE emp5 MODIFY id INT PRIMARY KEY;
FOREIGN KEY 约束
从表的外键值必须在主表中能找到或者为空。当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据,然后才可以删除主表的数据。还有一种就是级联删除子表数据。同一个表可以有多个外键约束
从表
CREATE TABLE emp(emp_id INT AUTO_INCREMENT PRIMARY KEY, last_name VARCHAR(15), dept_id INT, CONSTRAINT emp_dept_id_fk FOREIGN KEY(dept_id) REFERENCES dept(dept_id) );
或者多列外键组合
CREATE TABLE student(id INT AUTO_INCREMENT PRIMARY KEY, classes_name VARCHAR(20), classes_number INT, FOREIGN KEY(classes_name,classes_number) REFERENCES classes(NAME,number) );
删除外键约束
ALTER TABLE emp DROP FOREIGN KEY emp_dept_id_fk;
增加外键约束:
ALTER TABLE emp ADD [CONSTRAINT emp_dept_id_fk] FOREIGN KEY(dept_id) REFERENCES dept(dept_id);
ON DELETE CASCADE(级联删除): 当父表中的列被删除时,子表中相对应的列也被删除
ON DELETE SET NULL(级联置空): 子表中相应的列置空
CREATE TABLE student(
id INT AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(20),
classes_name VARCHAR(20),
classes_number INT,
/*表级别联合外键*/
FOREIGN KEY(classes_name, classes_number) REFERENCES classes(NAME, number) ON DELETE CASCADE);
CHECK 约束 貌似没有什么作用