Java基础之MySQL数据库与JDBC
一、数据库
DBMS 数据库管理系统
是由多个程序构成的专门用来管理大量数据的计算机系统
Server 提供数据存储、检索、计算等服务的网络程序+系统服务
Notifier 通知应用
管理端C
Workbench 英文、图形化的数据库管理客户端
Navicat 中文、图形化
Shell 英文、命令行字符界面
phpAdmin 具备管理MySQL数据库的功能 BS架构
开发工具包
Connector JAVA使用数据驱动(连接工具)
文档
示例代码
二、数据分类
关系型数据库
MySQL
Oracle
SQLServer
用来存放规则的数据,通常要支持事务(在商业交易环境中通过事物可保证数据的正确性)
能够支持的数据量,事务数据百万级,非事务型数据千万
性能和速度、并发能力:一般
NoSQL数据库
Redis key-value 内存 速度非常快
Hbase key-value 大数据存储
MonggoDB 文档型(json对象) 千万级 速度非常快
存储一个通讯录需要考虑的内容
姓名:长度?
性别:类型?
年龄:类型?如果用整数,随着时间推移怎么增加
出生年月日
出生年份
联系方式:
手机号:一般用字符串,国家号+号码
邮箱:长度?
QQ:一般用字符串
微信:
固话:区号+
号码
地址:
很多时候需要多个(户籍、现居)
省、市、区县、乡镇、村街道、门牌号
专业:
学校、院系、专业、班级
婚姻状况:
未婚(单身)
三、设计数据表
数据分析
识别数据对象(刚开始比较粗略):如学生信息
分解数据属性
1.最好的方法是讨论
(1)和项目组内部的人讨论
(2)和客户讨论(需求调研时详细询问)
2.分解结果详细下来,准备进一步识别数据对象和第二级分解
3.分解时注意细节
(1) 类型是什么
(2)用简单类型能否表示
(3) 如果是复杂类型的话,初步分解
(4)关于长度
I.随时间或环境变化是否会改变
II.值得取值范围
III.会不会有无值情况
IV.默认值是什么
4.分解属性和识别数据对象需要反复多次
创建表
命名规范:表名及字段名全部小写,使用单数,单词之间用下划线分隔
根据需求合理设计字段属性
填充数据进行功能验证
能够方便地查询出所需要数据结果(连接多个表才能得到的最复杂的数据)
填充更多数据进行性能验证
填充指定量的数据,并且注意数据的质量,验证CRUD的性能
四、数据的基本字段
字段名 |
类型 |
长度 |
备注 |
说明 |
id |
int |
自增、主键 |
自动生成的数据唯一标识 |
|
description/desc |
varchar |
50-200 |
可以是null |
用来描述数据,由用户填写 |
remark |
varchar |
50 |
可以是null |
让管理员或数据操作员使用的,隐秘描述信息,用户看不到。备注 |
ip |
varchar |
50 |
可以是null |
记录操作人的ip地址 |
creater |
int |
记录创建人的id |
||
creater_time |
timestamp |
记录数据创建时间 |
||
updater |
int |
记录数据最后修改人。如果需要记录每一次的修改和修改时间,则需要另建立表 |
||
update_time |
timestamp |
记录数据最后修改时间 |
||
status |
tinyint/int |
-2:删除 0:待审 1:通过审核未激活 2:正常 |
用来表示数据的状态变化或者逻辑删除 |
|
is_system |
bit |
默认值0 |
is_system=1的数据时系统内置的数据,是系统自带的数据。比如系统中的第一个用户admin/root,通常会设置is_system=1.这种数据不能删除 |
自增:向表中插入新数据时,不需插入,而是会自动生成。规则是本列最大值+1(通常)
主关键字(主键,primary
key)
一、是被挑选出来,作表的行的唯一标识的候选关键字。一
二、个表只有一个主关键字。主关键字又可以称为主键。
三、主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。
四、如果数据字段有一个字段可确保唯一性并且是整数或比较短的字符串也可以充当主键
个列甚至多个列组合作为主键,只要保证组合的唯一性即可
六、主键一定有索引功能的。通过主键查找数据速度很快
五、基本的SQL语句
逻辑删除
业务已经不需要该数据,系统中也看不到,但数据库中并没有删除它
系统在筛选数据时故意把它们排除掉了(status!=-2)
查询所有数据(返回所有列)
SELECT*FROM表名
返回指定列
SELECT 列名,列名,`列名` FROM
表名
-- 空格:注释SQL语句
插入数据
INSERT INTO 表名(列名,列名,列名)VALUES(值,值,值)
查询数据
SELECT * FROM 表名 WHERE逻辑表达式
STATUS <> 2 STATUS不等于2
STATUS!=2 STATUS不等于2
STATUS>2 STATUS大于2
逻辑运算符
AND
OR
需要时加()
更新数据
UPDATE 表名 SET列名=值,列名=值,列名=值WHERE逻辑表达式
根据WHERE后面的逻辑表达式在表内进行检索,然后替换成SET后面的内容
删除数据(删除后无法恢复)
DELETE FROM 表名
WHERE 逻辑表达式 OR 逻辑表达式
删除id=6与id=7两个信息
IN列表
SELECT * FROM 表名 WHERE ID IN (6,7)
括号里面的代表着删除第六条和第七条信息
查询数据条数
-- SELECT student_id,`name`,is_male,mobile,`status` FROM student
--
-- INSERT INTO student(`name`,is_male,mobile,`status`)
-- VALUES ('赵丽颖',1,'234hjhh35',0)
--
-- SELECT * FROM student WHERE `status` !=2
--
-- SELECT * FROM student WHERE `status` <>2
-- --
-- SELECT * FROM student WHERE `status` > 0
--
-- UPDATE student SET is_male = 0 WHERE student_id = 3;
-- UPDATE student SET is_male = 0 WHERE `name` = '李易峰';
-- DELETE FROM student
-- WHERE student_id = 6 OR student_id = 7
--
--
-- DELETE FROM student
-- WHERE student_id IN (6,7)
--
-- SELECT count(1) FROM student;
-- SELECT count(*) FROM student;
-- SELECT count(student_id) FROM student;
-- SELECT * FROM student WHERE `name` = '李易峰'
-- INSERT INTO student(`name`,is_male,mobile ,`status`)
-- VALUES ('李浩',1,'34325435',2)
--
-- DELETE FROM student
-- WHERE student_id = 10
--
-- DELETE FROM student
-- WHERE student_id IN(5,9)
-- --
-- DELETE FROM student
-- WHERE student_id = 8 OR student_id = 11
六、JDBC
1. JDBC是JDK中连接和操作数据的类的统称
2. 是一种用于执行SQL语句的Java
API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
3. JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。
4. 它包含java.sql包下的多个类和接口
5. 定义了Connection:数据库连接、DriverManager:数据库驱动管理、Statement:
定义了SQL语句及执行SQL语句的方法、ResultSet :数据查询结果
上面的JDBC类或接口并没有提供完整数据库连接和操作能力。
JDBC的具体实现是由各个数据库厂商提供的,通常在安装数据库时可以获取到这个数据库的JDBC实现(驱动包)
这样设计的原因:
1.当时SUN没有数据库产品,主流的数据库都是其他厂商的产品
2.JDK为了统一数据库访问的代码,定义了JDBC的基本类和接口,由数据库厂商实现(如果不提供提议的数据库访问类,则就会导致数据访问的类变得混乱,没有标准)
3.写代码时不会在代码中直接使用厂商提供的类,而是使用JDK使用的类,这就导致厂商提供的类不会被加载
4.所有要使用Class.forName(“驱动类的名字”),加载驱动类。驱动类加载时,静态初始化代码就会执行,驱动相关的信息就可以注册到DriverMannger等类中
Java基础之MySQL数据库与JDBC的更多相关文章
- Java基础86 MySQL数据库基础知识
本文知识点(目录): 1.MySQL数据库的概述 2.MySQL数据库的管理[对数据库的操作](查询.删除.创建数据库,以及查询和修改数据库的编码模式) 3.表的管理[对数据库 表的操作] ...
- JDBC Java 程序从 MySQL 数据库中读取数据,并备份到 xml 文档中
MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 程序从 MySQL 数据库中读取数据,并 ...
- Java中连接MySql数据库的例子
Java中连接MySql数据库的例子: package com.joinmysql.demo; import java.sql.DriverManager; import java.sql.Resul ...
- JSP 实现 之 调用java方法实现MySQL数据库备份和恢复
package cn.qm.db; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOEx ...
- 点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)
下载原版阿里JAVA开发手册 [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...
- JAVA程序对MYSQL数据库加锁实验
什么是脏读,不可重复读,幻读 1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据. 2. 不可重 ...
- Java程序向MySql数据库中插入的中文数据变成了问号
找到mysql的安装目录,修改my.ini文件 (1)如何找到my.ini文件 如果my.ini文件不在MySQL的安装目录下,可能放在隐藏目录,要先去找到ProgramData,(这里要先打开显示隐 ...
- JDBC Java 程序从 MySQL 数据库中读取数据,并封装到 Javabean 对象中
MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 连接 MySQL 数据库 用于测试的 M ...
- android连接Mysql数据库之JDBC方式
一.创建一个数据库和若干表,并导入相关信息.这里以我之前使用的一个图书系统的数据库为例子. 首先假设已经安装并配置好Mysql.(建议大家安装WAMP,也就是安装完这个,就相当于安装了Mysql,PH ...
随机推荐
- MySql(三):MyISAM和InnoDB区别详解
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...
- CCCallFunc CCCallFuncN CCCallFuncND的区别和使用
CCCallFunc CCCallFuncN CCCallFuncND都用来创建带有回调函数的动作,区别主要在于回调函数是否带有参数 CCCallFunc是执行对应的回调函数,其中回调函数不可带参数. ...
- ubuntu设置自定义程序开机启动(本文以tomcat为例)
准备工作: 由于tomcat要用到Java,所以需要安装jdk,并配置好java的环境变量.这部分不再赘述,而且不是本文的重点. 方法一.加入/etc/rc.loalroot@ubuntu:~# vi ...
- 《LAMP系统工程师实用教程》读书笔记(一)- linux常用命令
图书馆看到就借回来啦,这本书虽然其貌不扬,对新手还是挺棒的.来学下shell脚本和php. 把书上不熟悉的命令和选项记录下. mkdir -v创建文件夹并返回信息 mkdir -m创建文件夹并设定权限 ...
- Xml解析之PULL解析 例2
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="100 ...
- 搭建自己的GitHub Pages
本文记录博主使用Win 10操作系统和Jekyll 3.1.2搭建GitHub Pages的过程.希望能帮助到相同有需要的朋友. 基本需求 GitHub账号及一个命名为{GitHub昵称}.githu ...
- Java中的阻塞队列(BlockingQueue)
1. 什么是阻塞队列 阻塞队列(BlockingQueue)是 Java 5 并发新特性中的内容,阻塞队列的接口是 java.util.concurrent.BlockingQueue,它提供了两个附 ...
- RabbitMQ之路由(Routing)【译】
在上一节中,我们创建了一个简单的日志系统,可以广播消息到很多接收者. 这一节,我们将在上一节的基础上加一个功能--订阅部分消息.例如,我们只将严重错误信息写入到日志文件保存在磁盘上,同时我们能将所有的 ...
- springboot集成模板引擎freemarker和thymeleaf
freemarkder和thymeleaf都是java的模板引擎,这里只介绍这两种模板引擎如何在sprongboot中配置: 1. freemarkder 1.1 在pom.xml中添加依赖包 < ...
- VIM打开shell脚本中文乱码解决
1. 查找 .vimrc文件 通常有2个地方保存这个文件的: (1) 在/etc/文件夹下面,是所有用户的vim配置 (2)每个用户的开始登录的文件夹下面,有些不一定有,比如hadoop用户,则在/h ...