1.JDBC基础
JDBC:Java DataBase Connectivity即Java数据库连接,一种可以执行SQL语句的Java API
可以完成
1.建立与数据库连接
2.执行SQL语句
3.获得SQL语句的执行结果
2.MySQL
-
show databases;
查看包含的数据库 -
create database 数据库名;
创建 -
drop database 数据库名;
删除 -
use 数据库名;
进入数据库 -
show tables;
查看数据库下的表 -
desc 表名;
查看指定数据表结构
2.1存储机制
- MyISAM:早期默认的存储机制,对事物支持不够好
- InnoDB:提供事务安全的存储机制,建立行级锁来保证事务完整性
- 事务支持是Java EE最重要的特性,因此推荐使用InnoDB存储机制,MySQL默认使用
3.SQL语句
结构化查询语言,用于操作任何关系数据库,不区分大小写
标准SQL语句分为:
- 查询语句:主要由select关键字完成
- DML语句:主要由insert,update,delete三个关键字完成
- DDL语句:主要由create,alter,drop,truncate四个关键字完成
- DCL语句:主要由grant和revoke完成
- 事务控制语句:主要由commit,rollback,savepoint完成
3.1 DDL语句

- 最基本的数据库对象是数据表,数据表示存储数据的逻辑单元
3.1.1 创建表
create table [模式名.]表名(
#可以有多个列定义
test_id int,
test_price decimal,
#给默认值
test_name varchar(255) default 'xxx',
#大文本类型
test_desc text,
#图片
test_img blob,
test_date datetime
)

- 也可以使用子查询语句来建立数据表
create table hehe
as
select * user_inf;
#建立一个表hehe和user_inf表完全相同,数据也相同
3.1.2 修改表结构
#增加一个字段
alter table hehe
add hehe_id int;
#增加两个字段
alterr table hehe
add(
aaa varchar(255) default 'xxx',
bbb varchar(255)
);
#修改字段类型 每次只能修改一个列定义
alter table hehe
modify hehe_id varchar(255);
#删除字段
alter table hehe
drop aaa;
- 除此之外,MySQL还提供了两种特殊的语法,重命名数据表和完全改变列定义
#重命名数据表
alter table 表名
rename to 新表名;
#重命名字段名.bbb改为aaa,数据类型为int
alter table hehe
change bbb aaa int;
3.1.3 删除表
#删除
drop table hehe;
3.1.4 truncate表
- truncate被称为截断某个表,作用是删除表里的全部数据,但是保留表的结构
truncate 表名
3.2 数据库约束
- 约束是在表上强制执行的数据校验规则,约束主要用于保证数据库里数据的完整性,除此之外,当表中数据存在相互依赖性时,可以保护相关的数据不被删除
- 大部分数据库支持下面5种完整性约束
- NOT NULL:非空约束,指定下面某列不能为空
- UNIQUE:唯一约束,指定某列或者几列组合不能重复
- PRIMARY KEY:主键,指定该列的值可以唯一地表示该条记录
- FOREIGN KEY:外键,指定该行记录从属于主表中的一条记录,主要用于保证参照完整性
- CHECK:检查,指定一个布尔表达式,用于指定对应列的值必须满足该表达式
- MySQL不支持CHECK约束
3.2.1 NOT NULL约束
- 在定义列时后面加上not null
3.2.2 UNIQUE约束
- 用于保证指定列或者指定列组合不允许出现重复值,但是可以出现多个null(数据库中null != null)
- 列级唯一约束在定义列后面加上unique即可
- 表级唯一约束用法如下
create tabnle unique_test(
test_name varchar(255),
test_pass varchar(255),
#使用表级约束语法建立唯一约束,指定两列组合不允许重复
#test2_uk要求两个字段都不能出现重复值
unique (test_name),
constraint test2_uk unique(test_pass),
#test3_uk要求两列值得组合不能重复
constraint test3_uk unique(test_name,test_pass)
);
也可以在修改表结构时使用add关键字
alter table unique_test
add unique(test_name,test_pass);
3.2.3 PRIMARY KEY约束
- 主键约束相当于非空约束和唯一约束
- 在定义字段时后面加上primary key
3.2.4FOREIGN KEY约束
- 用于保证一个或两个数据表之间的参照完整性,例如每天的记录是一个主表,每一天下的各种记录是子表,子表对于主表就需要外键约束
create table teacher_table(
# auto_increment 代表数据库的自动编号策略,通常用作数据表的逻辑主键
teacher_id int auto_increment,
teacher_name varchar(255),
primary key(teacher_id)
);
create table student_table(
student_id int auto_increment primary key,
student_name varchar(255),
#指定java_teacher参照到teacher_table的teacher_id列
java_teacher int references teacher_table(teacher_id)
);
网友评论