/*
2017-02-21
Java Database Connectivity
java数据库连接
是一种可以执行sql语句的java api
建立与数据库连接、执行sql语句、获得sql执行结果
java应用程序 《-》jdbc api -》 jdbc驱动api -》 java驱动程序 《-》 dbms
Open Database Connectivity
开放数据库连接
JDBC 模仿了ODBC 的设计
ODBC 也允许应用程序通过一组通用的API 访问不同的数据库管理系统
使得基于ODBC的应用程序可以在不通的数据库之间切换,
ODBC也需要个数据库厂商提供相应的驱动程序
ODBC负责管理这些驱动程序
JDBC驱动通常有4中类型
----纯java,直接与数据库实例交互,这中驱动是只能的,知道数据库使用的底层协议,目前流行的就是这种
----直接将JDBC API映射成数据库特定的客户端API。这种驱动包含特定数据库的本地代码,用于访问特定数据库的客户端
----支持三层结构的JDBC访问方式,用于Applet阶段,通过Applet访问数据库
----JDBC-ODBC桥 java8中已经被删除了
*/
/*
2017-02-21
常用的sql命令
mysql -u root - p
root
show databases;
show tables;
use 数据库名;
desc tablename ; 查看表结构
MyISAM 早期的默认机制,对事务支持不够好
InnoDB InnoDB 提供事务安全的存储机制,通过建立行级锁来保证事务完整性,并以Oracle风格共享锁来处理select语句
DML Data Manipulation Language 数据操作语句 insert update delete
DDL Data Definition Language 数据定义语言 create alter drop truncate
DCL Data Control Language 数据控制语句 grant revoke
事务控制语句 commit rollback savepoint
sql 关键字不区分大小写
标识符 命名规则
标识符通常必须以字母开头
标识符包括字母、数字 # _ $
不要使用当前数据库系统的关键字、保留字、
通常建议使用多个单词连缀而成,单词之间以_分隔
同一个外模式下的对象名不应该同名
*/
/*
2017-02-21
DDL
create drop alter
table 表
constraint 约束
view 视图
index 索引
function 函数
procedure 存储过程
trigger 触发器
caeate table test (
id int;
);
default 默认值
数据类型
tinyint smallint mediumint int integer bigint
1字节 2 3 4 8
float double
decimal dec 精确小数
date 日期类型 不能保存 util.Date 对象 时间部分会丢失
time 时间类型 不能保存 util.Date对象 日期部分会丢失
datetime 日期时间类型
timestamp 时间戳类型
year 年类型
char 定长字符串类型
varchar 可变长度字符串类型
binary 定长二进制字符串类型
varbinary 可变程度的二进制字符串类型
tinyblob blol mediumblob longblob 图片音乐等
1字节 2 3 4
255B 64KB 16MB 4GB
tinytext text mediumtext longtext 文本
enum 枚举
set 集合
alter table name add(
列名 类型,
);
alter table name modify 列名 类型
add的列名为表中没有的,modify 的列名为表中有的
alter table name drop 列名 ;
alter table name rename to 新表名;
alter table name change 列名 新列名 类型
drop table 表名
删除数据表
表结构被删除,表对象不再存在
表里的所有数据也被删除
表相关的索引、约束也被删除
truncate 表
截断表
删除表中的全部数据,保留表结构
一次性删除整个表的全部记录
truncate 表名
*/
/*
2017-02-21
数据库约束
NOT NULL 非空
UNIQUE 唯一
PRIMARY KEY 主键
FOREIGN KEY 外键
CHECK 检查 可以使用,但是没有任何作用
单列约束
多列约束
建表时为相应的数据列指定约束
建表后alter 增加约束
约束通常无法修改
not null
create table name (id int not null);
alter table name modify id int null;
alter table name modify id int default 'asd' null;
unique
唯一约束,指定的列不能出现重复的值
但可以出现多个null 在数据库中 null不等于null
同一个表中可以出现多个null值
唯一约束也可以由多列组合而成
如果没有给约束起名,该唯一约束默认与列名相同
create table name (
id int ,
constraint name primary key (id)
);
alter table name drop primary key;
alter table name add primary key (id);
alter table name modify id type primary key ;
create table name (
id int auto_increment primary key
);
*/
/*
2017-02-21
foreign key
外键约束主要保证一个或两个数据包之间的参照完整性
外键是构建于一个表的两个字段或者两个表的两个字段之间的参照关系
外键确保了相关的两个字段的参照关系:子表外键列的值必须在主表被参照列的值范围之内,或者为空
主表的记录被从表记录参照时,主表记录不允许被删除,必须先把子表参照该记录全部删除后,才可以删除主表的该记录
删除主表时级联删除表中说有参照该记录的子表记录
子表外键参照的只能是主表主键列或者唯一键列
这样才可以保证从表记录可以准确定位到被参照的主表记录
同一个表内可以拥有多个外键
references
指定该列参照哪个主表,以及参照主表的哪一列
create table name
(
id int auto_increment,
primary key (id)
)
create table name
(
id int auto_increment primary key,
列 int references 表(列)
)
如果定义当删除主表记录时,子表也会随之删除,
则需要在建立外键约束后添加on delete cascade
删除主表记录时,把参照该主表记录的子表记录全部级联删除
或添加on delete set null
指定当删除主表记录时,把参照该主表记录的从表记录的外键设为null
*/
/*
2017-02-21
CHECK
当前版本check 没有任何作用
*/
/*
2017-02-21
索引
加速对表的查询
索引作为数据库对象,在数据字典中独立存放,但不能独立存在,比属于某个表
创建索引的两种方式
自动 当在表上定义主键约束,唯一约束、外键约束 ,系统会为该数据列自动创建对应的索引
手动 create index 创建索引
删除的两种方式
自动 数据表删除时,表上的索引自动被删除
手动 drop index
create index name on tablename (colum)
drop index 索引名 on 表名
*/
/*
2017-02-21
视图
限制对数据的访问
使复杂的查询变得简单
提供数据的独立性
提供对相同数据的不同现实
视图只是数据表中数据的逻辑显示
就是一个查询结果
create or replace view 视图名
as
subquery
如果该视图不存在,则创建视图
指定视图名的视图已经存在,使用心得视图替换原有的视图,
subquery 是一个查询语句
一旦建立视图,使用该视图与数据表就没有什么区别了
通常只是查询视图数据,不会修改视图里的数据,视图本身就没有存储数据
with check option 不允许修改视图的数据
drop view name
*/
/*
2017-02-21
DML语句语法
插入新数据
修改已有数据
删除不需要的数据
insert into
insert int name (col)
values (value);
外键约束保证被参照的记录必须存在,但并不保证必须有被参照记录
外键列可以为null
如果保证每条子表记录必须存在对应的主表记录,则应使用非空、外键两个约束
update
update用于修改数据表的记录,每次可以修改多条记录,通过使用where 字句限定修改那些记录
where子句是一个条件表达式
没有where 子句意味where 表达式的值总是true ,则表中所有记录都会被修改
update name
set col = value , col2 =vlaue2
where
delete from
删除指定数据表的记录 不需要指定列名
没有where 会把表中所有的数据全部删除
delete from name
where
*/
/*
2017-02-21
单表查询
select col from 表 where 条件
条件可以使用算术运算符 + - * /
运算符不仅可以在列和常量、变量之间进行运算,也可以在两列之间进行运算
select 后不仅可以是数据列,也可以是表达式,还可以是变量、常量等
select distinct 除去重复行
a bettween b and c a>= b <= c
int
like
is null
_可以代表一个任意字符
%任意多个字符
escape 显示进行转移
not and or
order by
默认升序 asc
desc 降序
*/
/*
2017-02-21
数据库函数
function name(arg1,arg2)
多行函数,也称为聚合函数、分组函数,主要用于完成统计功能
单行函数对每行单独器作用,每行可能包含多个参数 返回一个结果
使用单行函数可以改变参数的数据类型
单行函数支持嵌套使用
内层函数的返回值是外层函数的参数
数据类型
数值型、字符型、日期时间型
位函数
流程控制函数
加密解密函数
信息函数
*/
/*
2017-02-21
分组和组函数
组函数就是前面提到的多行函数
组函数将一组记录作为整体计算
每组记录返回一个结果,而不是没条件记录返回一个结果
avg count max min sum
*/
/*
2017-02-21
多表连接查询
等值连接
非等值连接
外连接
广义笛卡尔积
多表连接
交叉连接
表 cross join 表2
自然连接
表 natural join 表2
使用using子句连接
表1 join 表2 using 列
使用on子句的连接
表1 join 表2 on 表1.列 = 表2.列
全外连接或者 左、右外连接
left join right join full join on 条件
*/
/*
2017-02-21
子查询
子查询 就是指在查询语句中嵌套另一个查询,子查询支持多层嵌套
出现的两个位置
出现在from语句后当成数据表,也被称为行内视图
出现在where 条件后作为过滤条件
子查询要用括号括起来
把子查询当成数据表出现在from 之后,可以为该子查询起别名,作为前缀限定数据列时,必须给子查询 起别名
把子查询当成过滤条件 ,将子查询放在比较运算符的右边,这样可以增强查询的可读性
把组查询当成过滤条件时,单行子查询使用单行运算符,多行子查询使用多行运算符
*/
/*
2017-02-21
集合运算
intersect 交
select 语句 intersect select 语句
union 并
select 语句 union select 语句
minus 差
select 语句 minus select 语句 mysql 不支持
两个结果集所包含的数据列的数量必须相等
两个结果集所包含的数据列的数据类型也必须一一对应
*/
public class Jdbcj {
}
07-18
07-18
07-18
07-18
07-18
07-18
07-18
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交