一、数据库

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的更多相关文章

  1. Java基础86 MySQL数据库基础知识

    本文知识点(目录): 1.MySQL数据库的概述    2.MySQL数据库的管理[对数据库的操作](查询.删除.创建数据库,以及查询和修改数据库的编码模式)    3.表的管理[对数据库 表的操作] ...

  2. JDBC Java 程序从 MySQL 数据库中读取数据,并备份到 xml 文档中

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 程序从 MySQL 数据库中读取数据,并 ...

  3. Java中连接MySql数据库的例子

    Java中连接MySql数据库的例子: package com.joinmysql.demo; import java.sql.DriverManager; import java.sql.Resul ...

  4. JSP 实现 之 调用java方法实现MySQL数据库备份和恢复

    package cn.qm.db; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOEx ...

  5. 点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...

  6. JAVA程序对MYSQL数据库加锁实验

    什么是脏读,不可重复读,幻读 1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据. 2. 不可重 ...

  7. Java程序向MySql数据库中插入的中文数据变成了问号

    找到mysql的安装目录,修改my.ini文件 (1)如何找到my.ini文件 如果my.ini文件不在MySQL的安装目录下,可能放在隐藏目录,要先去找到ProgramData,(这里要先打开显示隐 ...

  8. JDBC Java 程序从 MySQL 数据库中读取数据,并封装到 Javabean 对象中

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 连接 MySQL 数据库 用于测试的 M ...

  9. android连接Mysql数据库之JDBC方式

    一.创建一个数据库和若干表,并导入相关信息.这里以我之前使用的一个图书系统的数据库为例子. 首先假设已经安装并配置好Mysql.(建议大家安装WAMP,也就是安装完这个,就相当于安装了Mysql,PH ...

随机推荐

  1. JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof

    JVM性能调优监控工具jps.jstack.jmap.jhat.jstat.hprof

  2. C编程测试存储格式为大段还是小段

    目前,计算机存储系统有2种存储格式,大端和小端.数据在内存中存储时以字节为单位,一个int类型有4个字节,这就导致是高字节对应低地址(大端模式),高字节对应高地址(小端模式).大端和小端模式本身没有对 ...

  3. UIImageView的一些用法

    转自:http://blog.sina.com.cn/s/blog_60e2dbcf01014bfm.html //初始化 UIImageView  *imageView=[[UIImageView ...

  4. C/C++:C++伪函数

    C++伪函数: 所谓的伪函数.就是说它不是一个真正的函数,而是一个类或者说是一个结构体. <span style="font-size:18px;"> #include ...

  5. 什么是:before和:after?

    前几天的晚上较全面的去看了下css的一些文档和资料,大部分的样式运用都没什么大问题了,只是有些许较陌生,但是也知道他们的存在和实现的是什么样式.今天主要想在这篇学习笔记中写的也不多,主要是针对:bef ...

  6. django model 多对多保存

  7. 跟着百度学习php之ThinkPHP的运行流程-2

    Thinkphp为了提高编译的效率,第一次运行的时候thinkphp会把文件全部编译到temp目录下的~runtime.php文件,在第二次运行的时候会直接读取这个文件.所以我们在线下自己写代码测试的 ...

  8. char函数绕过魔术引号注入

    我目前学习到的绕过魔术引号的几种方法(如果知道还有别的请万望告之): 1.倘若服务端是GBK可以尝试宽字节注入 2.使用char函数绕过魔术引号进行注入 3.同char函数类似的函数,例如bin(转换 ...

  9. 在MySQL应用上的挑战

    本期采访的讲师是来自腾讯高级软件工程师 雷海林,他有着10年以上的Linux后台Server开发经验,目前主要从事分布式Cache.实时大数据处理引擎,分布式MySQL(TDSQL)设计和开发工作. ...

  10. 缓存技术PK:选择Memcached还是Redis(转)

    [IT168 技术]要Memcached还是要Redis?在构建一款现代且由数据库驱动的Web应用程序并希望使其拥有更为出色的性能表现时,这个问题总会时不时出现.并给每一位开发人员带来困扰.在考虑对应 ...