sql

来源:互联网 发布:iphone手机编程软件 编辑:程序博客网 时间:2024/06/05 14:52
/*2017-02-21Java Database Connectivityjava数据库连接是一种可以执行sql语句的java api建立与数据库连接、执行sql语句、获得sql执行结果java应用程序   《-》jdbc api -》 jdbc驱动api -》 java驱动程序  《-》 dbmsOpen 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 - prootshow 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-21DDL  create drop alter  table  表constraint 约束view 视图index 索引function 函数procedure 存储过程trigger 触发器caeate table  test (id int;);default   默认值数据类型tinyintsmallintmediumintintintegerbigint1字节2348floatdouble decimaldec精确小数date日期类型    不能保存  util.Date 对象   时间部分会丢失time时间类型不能保存 util.Date对象日期部分会丢失datetime 日期时间类型timestamp时间戳类型year年类型char定长字符串类型varchar可变长度字符串类型binary定长二进制字符串类型varbinary可变程度的二进制字符串类型tinyblobblolmediumbloblongblob图片音乐等1字节234255B64KB16MB4GBtinytexttextmediumtextlongtext文本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-21foreign 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-21CHECK 当前版本check 没有任何作用*//*2017-02-21索引 加速对表的查询索引作为数据库对象,在数据字典中独立存放,但不能独立存在,比属于某个表创建索引的两种方式自动当在表上定义主键约束,唯一约束、外键约束 ,系统会为该数据列自动创建对应的索引手动create index 创建索引删除的两种方式自动数据表删除时,表上的索引自动被删除手动drop index create index name on tablename (colum)drop index 索引名 on 表名*//*2017-02-21视图限制对数据的访问使复杂的查询变得简单提供数据的独立性提供对相同数据的不同现实视图只是数据表中数据的逻辑显示 就是一个查询结果create or replace view 视图名assubquery如果该视图不存在,则创建视图指定视图名的视图已经存在,使用心得视图替换原有的视图,subquery 是一个查询语句一旦建立视图,使用该视图与数据表就没有什么区别了通常只是查询视图数据,不会修改视图里的数据,视图本身就没有存储数据with check option    不允许修改视图的数据drop view  name*//*2017-02-21DML语句语法插入新数据修改已有数据删除不需要的数据insert into insert int name (col)values (value);外键约束保证被参照的记录必须存在,但并不保证必须有被参照记录外键列可以为null如果保证每条子表记录必须存在对应的主表记录,则应使用非空、外键两个约束update update用于修改数据表的记录,每次可以修改多条记录,通过使用where 字句限定修改那些记录where子句是一个条件表达式没有where 子句意味where 表达式的值总是true ,则表中所有记录都会被修改update nameset col = value , col2 =vlaue2where 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  ororder 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 0
原创粉丝点击