MySql数据库与JDBC编程
JDBC -- Java Database Connectivity,即Java数据库连接,通过使用JDBC就可以使用同一种API访问不同的数据库
SQL语句基础(SQL结构化查询语言)
能完成的任务:
在数据库中检索信息
对数据库信息进行更新
改变数据库的结构
更改系统的安全设置
增加或收回用户对数据库和表的许可权限
SQL语句类型:
查询语句:由select关键字完成
DML:数据操作语言语句:由insert update delete三个语句
DDL:数据定义语言:create alter drop truncate
DCL:数据控制语言:grant revoke
事物控制语言:commit rollback savepoint
基本命令:
create database [if not exists] 数据库名
drop database 数据库名
use 数据库名----进入指定数据库
show tables ---进入数据库后查询数据库包含的表
desc 表名 --- 查看指定数据表的表结构
create table [模式名] 表名(列定义,列定义);
使用子查询建表:
create table [模式名]表名(列定义)as subquery
eg. create table hehe
as
select * from user_info ; ( 执行这条语句后,hehe表和user_info表完全一样)
修改表结构的语法:
alter table 表名
add
{
列定义
};
add增加列定义,modify 修改列定义, drop 删除列定义, rename 重命名表名, change 修改列名
删除表
drop table 表名;
rruncate 表名;一次性删除全部记录
数据库约束
NOT NULL:非空约束,确保指定列不能为空,只能作为列级约束
建表时为指定列指定非空约束
使用alter table 修改表时增加,删除非空约束
null 删除非空约束,not null 指定非空约束
UNIQUE:唯一约束,保证指定列或指定列组合不允许出现重复值,数据库中null != null (表级约束和列级约束)
建表时加入 unique 列级约束
unique(列名)表级约束
constraint 约束名 unique(列名,列名,,,)
修改表结构时:通过add关键字增加唯一约束,add unique(列名, 列名,,,)
modify修改表时增加唯一约束
修改表结构时:drop index 约束名,删除约束
PRIMARY KEY:主键约束,相当于非空约束+唯一约束(可以使用列级语法和表级语法)
建表时创建主键约束,使用列级约束语法 加上primary key
建表时创建主键约束,使用表级约束语法 constraint 主键约束名 primary key (列名) ---主键约束名对mysql无效
建表时创建主键约束,多列作为主键只能使用表级语法 primary key(多个列名)
删除主键约束,在alter table 表名 后 drop primary key;
可以通过 add primary key(表名,表名,。,)和modify 实现
指定某列具有自增;auto_increament
FOREIGN KEY:外键约束主要用于保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段,或者两个表的两个字段之间的参照关系
当主表记录被从表参照时,主表记录不允许被删除,必须先把从表里参照该记录的所有记录删除完后才能删除主表的记录,或者级联删除从表中的所有参照该记录的从表记录
从表外键参照只能是从表主键列或者唯一键列(从表外键列的值必须在主表被参照列的值的范围内
外键通常用于定义两个实体间一对多,或一对一的关联关系:例子--一个老师对应多个学生,但每个学生只有一个老师,学生添加外键
外键的建立一样可以使用列级约束语法和表级语法(对单独的数据列建立外键,列级语法就可以,如果要对多列组合创建外键或指定外键名,必须要使用表级约束语法)
建表时 references 主表名(列名);(mysql中无效)(列级约束语法)
建表时 foreign key (列名从表的) references 主表名(列名);
constraint 外间名 foreign key (列名从表) references 主表名(列名);
建立多列组合的外键约束
foreigne key (从表列名 , 列名)references 主表名(列名,列名)
删除外键约束:在修改表,drop foreign key 外键名;
增加外键约束:在修改表,add foreign key(列名,列名,,) references 主表名(列名,列名,,,);
自关联外键约束的添加:参照自身 建表时 foreigne key (列名) references 本表名(列名);
当要删除主表记录时,从表记录也会删除,在建立外键约束时添加 on delete cascade \ on delete set null 第一种级联删除从表,第二种是删除主表时从表参照主表的记录设为null
CHECK:建表时指定check约束 check(逻辑表达式)
索引
好处加速查询速度--类似书籍目录
坏处数据库变化时需要数据库系统维护索引有一定的系统开销,索引信息占据一定的磁盘空间
创建索引:create index index_name
on table_name(column,,);
删除索引:drop index 索引名 on 表名
视图:一个或多个数据表中的逻辑显示
好处:限制对数据的访问,查询变简单,提供对相同数据的不同显示
实质是一条被命名的SQL语句
语法:create or replace view 视图名
as
subquery
[with check option]指定不允许修改该视图的数据
删除:drop view 视图名
MySql数据库与JDBC编程的更多相关文章
- 第十三章.MySQL数据库与JDBC编程(下)
JDBC的典型用法: JDBC4.2常用接口和类简介: DriverManager:用于管理JDBC驱动的服务类,程序中使用该类的主要功能是获取Connection对象,该类包含如下方法: publi ...
- MySql数据库与JDBC编程二
DML语法语句:主要操作数据表中的数据,完成插入新数据,修改已有数据,删除不要的数据的任务 1,insert into 语句 用于向指定表插入数据,一次只能插入一条记录:insert into tab ...
- MySql数据库与JDBC编程三
多表连接查询(两种规范 SQL92和SQL99) SQL92规范: 等值连接,非等值连接,外连接,广义笛卡儿积连接 多个表都放在from后,,连接条件放在where后,条件要求两列值相等,则为等值连接 ...
- mysql数据库和JDBC学习
数据库概念: 数据库(Database)是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. ---------数据库服务器,mysql(管理) 数据库服务器---->N多库-- ...
- MySQL 数据库应用程序编程
普通用户使用客户端应用程序(Client Application)和服务器程序(Server Application)通信以取得服务, 而服务器程序通常要和数据库服务器通信以取得数据存取服务, 这时就 ...
- jmeter测试mysql数据库之JDBC请求
所有jmeter基本组件功能本文不做介绍.jmeter要链接mysql数据库,首先得下载mysql jdbc驱动包(注:驱动包的版本一定要与你数据库的版本匹配,驱动版本低于mysql版本有可能会导致连 ...
- Java基础之MySQL数据库与JDBC
一.数据库 DBMS 数据库管理系统 是由多个程序构成的专门用来管理大量数据的计算机系统 Server 提供数据存储.检索.计算等服务的网络程序+系统服务 Notifier ...
- 数据库:JDBC编程
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于运行SQL语句的Java API.能够为多种关系数据库提供统一訪问.它由一组用Java语言编写的类和接口 ...
- android连接Mysql数据库之JDBC方式
一.创建一个数据库和若干表,并导入相关信息.这里以我之前使用的一个图书系统的数据库为例子. 首先假设已经安装并配置好Mysql.(建议大家安装WAMP,也就是安装完这个,就相当于安装了Mysql,PH ...
随机推荐
- [BJ2006] 狼抓兔子
题目链接:戳我 按理说以dinic\(O(M*N^2)\)的时间复杂度应该是过不去的(呃我也知道这个上界很松).但是最小割确实可以水过去?? 但是本着写正解的精神,我还是学了学平面图和对偶图,跑最短路 ...
- bzoj1800飞行棋
题目链接 简单模拟 真的不敢相信ahoi09年的题竟然是这个难度 首先,一个必须要知道的定理是:圆上只有直径所对的圆周角是直角. 然后就很显然了, 只有两条不重合的直径上的四个点才能组成一个矩形, 所 ...
- 【bzoj5084】 hashit(广义SAM+set)
题面 传送门 题解 后缀平衡树是个啥啊我不会啊-- 那么我们来考虑一下\(SAM\)的做法好了 不难发现它的本义是要我们维护一棵\(trie\)树,并求出\(trie\)树上每一个节点到根的这段串的不 ...
- [BZOJ5212][ZJOI2018]历史
传送门(洛谷) 人生第一道九条可怜……神仙操作…… 看着题解理解了一个早上才勉强看懂怎么回事…… 简化一下题目就是:已知每一个点access的总次数,求一个顺序使虚实边转化的次数最多 考虑一下,对于x ...
- [转载]Flip an image in UIImageView using UIView transitionWithView
View animations on the iPhone are wonderful. Used properly they will delight your users and help you ...
- NameError: name 'unicode' is not defined
更改Unicode为str 然后重新setup install
- 时间超限问题处理(c++)
c++中 如果时间超上限 做题上: 考虑关于二进制的方法 比如说 find your present (2) 这道题 可以用异或运算 来发现不重复数 对于动态规划 状态压缩发面 方面应用更多 比如说p ...
- TD-LTE技术原理与系统设计
王映民 等.人邮2010 E-UTRAN E-NodeB 无线资源管理承载 路由到SGW IP头压缩加密 UE附着MME选择 寻呼 广播 测量 EPC SGW 移动性管理 路由转发 终止寻呼 监听 ...
- archlinux安装tftp
1. 安装 [guo@archlinux ~]$ sudo pacman -S tftp-hpa 2. 启用 [guo@archlinux ~]$ systemctl start tftpd.se ...
- awk练习
首先,了解awk的运行格式 awk '条件类型1{动作1} 条件类型2{动作2} ...' filename 1. [root@server3 mnt]# cat passwd root x 0 0 ...