sql

/*
	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 {

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值