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 ...
随机推荐
- Oracle彻底卸载
Oracle彻底卸载 卸载:oracle卸载1.删除注册表:打开注册表:regedit 打开路径: <找注册表 :开始->运行->regedit> HKEY_LOCAL_MAC ...
- 算法 UVA 11292
***从今天开始自学算法. ***代码是用c++,所以顺便再自学一下c++ 例题1 勇者斗恶龙(The Dragon of Loowater, UVa 11292) 你的王国里有一条n个头的恶龙,你 ...
- DCL实现多线程安全的高性能懒汉模式
DCL实现多线程安全的高性能懒汉模式 1.单线程安全的懒汉模式实现 源码: private static LazyLoad instance = null; public static LazyLoa ...
- ArrayList中的一些小细节@JDK8
ArrayList中的一些小细节@JDK8 protected transient int modCount = 0; 该变量用于记录ArrayList的版本号,不可被序列化,每次对ArrayList ...
- kali linux之拒绝服务攻击工具
hping3 几乎可以定制发送任何TCP/IP数据包,用于测试FW,端口扫描,性能测试 -c - 计数包计数 -i - interval wait(uX表示X微秒,例如-i u1000) ...
- [ActionScript 3.0] SharedObject的用法简介
package com.models { import flash.net.SharedObject; /** * @author * @E-mail * @create 2015-6-12 下午2: ...
- jxl读取excel
String path=""; String path2=""; File file = new File(path); File file2 = new Fi ...
- python中package机制的两种实现方式
当执行import module时,解释器会根据下面的搜索路径,搜索module1.py文件. 1) 当前工作目录 2) PYTHONPATH中的目录 3) Python安装目录 (/usr/loca ...
- Win10通电自动开机的解决办法
前几天Win10强推系统升级,更新后无意中发现每次通电电脑就自动开机了. 解决办法: 打开控制面板>电源选项>选择电源按钮的功能,把关机设置里的“启用快速启动(推荐)”选项去掉就可以了. ...
- 检查java 中有多少个构造函数
检查函数中有多少个构造函数 程序设计思想: 用while来循环,并设置一个布尔类型变量c,当c是true是继续添加构造函数,当c是false是,跳出循环,程序结束.在循环体中,声明一个计数的int型变 ...