一.什么是数据库
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行增删改查等操作。 之前我们在操作数据是存放在内存里的,但是在内存中无法永久保存,于是我们将数据存放入磁盘当中以文件的形式管理,但是数据的形式多种多样,在存储和处理数据方面比较繁琐,于是数据库的优点就体现出来了。
二.什么是mysql
数据库分为分为关系型数据库(SQL)和非关系型数据库(NOSQL),而mysql属于关系型数据库。 在mysql中,要通过SQL语句去操作数据库,SQL语言也是单独的一门语言,只不过其是用来操作数据库的。
1.SQL语句分类
SQL语句分为:
- DQL:数据查询语言
- DML: 数据定义语言(对表中的数据进行操作)
- DDL:数据定义语言(对表结构进行操作)
- TCL:事务控制语言
- DCL:数据控制语言
后面主要简单说一说DQL和DML。
和java一样,在SQL语句中也是有着数据类型的,现在我们讲一讲一些常用的数据类型:
2.常用基本数据类型
- int (整型数据类型)
- double(浮点型数据类型)
- char(字符串固定大小)
- varchar(可变字符串,类似java中的String)
- blob(存储二进制(字节)的大对象数据,可以存储tup,视频等)
- text(clob:用来存储大型文本数据)
- -data (YYYY-MM-DD 日期格式)
- datatime (YYYY-MM-DD HH:mm:ss 最常用的时间格式)
三.SQL语句
注:在SQL语句中不区分大小写,每一句以分号结尾,所有符号使用英文格式
1.DQL语句(查询语句)
DQL是数据查询语句,关键词为select 简单查询
select version();
select databases();
select age from student;
select * from student;
select `name` as studentName from student;
条件查询
select `字段名1`,`字段名2,···`from `表名` where 判断条件;
2.DML语句
插入数据
insert into `表名`(`字段1`,`字段2`,`字段3`,···) values ('值1','值2','值3');
删除数据
delete from `表名` where 判断条件;
修改数据·
update `表名` set `字段名1`= 值1 , `字段名2`= 值2 ,··· where 判断条件;
where字句:
可以简单的理解为 : 有条件地从表中筛选数据,然后在进行前面的增删查改操作。
3.一些简单的DDL语句
SHOW DATABASES
DROP DATABASE `数据库名`
USE `数据库名`
SHOW TABLES
四.我的第一个JDBC程序
JDBC代表Java数据库连接(Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API,换句话说:JDBC是用于在Java语言编程中与数据库连接的API,其内部封装好了如何操作数据库的方法,开发者只需要将SQL语句用字符串的形式作为参数传入即可。 (这里我使用的是驱动jar包是8.0以上的) 首先我们创一个数据库,并且在这个数据库下创建一个数据表,填入一些数据信息: 例: 代码示例:(数据库名为studmessage)
import java.sql.*;
public class Main {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/studmessage?useUnicode=true&characterEncoding=utf8&useSSL=true";
String name = "root";
String password = "123456";
connection = DriverManager.getConnection(url, name, password);
statement = connection.createStatement();
String sql = "select * from student";
resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
System.out.println("id = " + resultSet.getObject("id"));
System.out.println("name = " + resultSet.getObject("name"));
System.out.println("sex = " + resultSet.getObject("sex"));
System.out.println("dateOfBirth = " + resultSet.getObject("dateOfBirth"));
System.out.println("dateOfAdmission = " + resultSet.getObject("dateOfAdmission"));
System.out.println("college = " + resultSet.getObject("college"));
System.out.println("major = " + resultSet.getObject("major"));
System.out.println("nativePlace = " + resultSet.getObject("nativePlace"));
System.out.println("nation = " + resultSet.getObject("nation"));
System.out.println("***********************************************");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
示例输出:
id = 1 name = 张三 sex = 男 dateOfBirth = 2002-09-20 dateOfAdmission = 2021-11-09 college = 电气与信息工程学院 major = 软件工程 nativePlace = 云南昆明 nation = 汉族
代码中的一些方法介绍: executeQuery(string sql) :
将sql语句以参数的形式传入,得到一个查询出来的结果集(ResultSet的对象)。
executeQuery(string sql):
将sql语句以参数的形式传入,返回一个int值,该值表示数据库中收影响的数据条数
next()
ResultSet(结果集) 指针的初始位置位于第一条数据之前,每使用一次next()指针就会移动到下一行数据,有数据则返回true,否则返回false。
getObject(String columnLabel)
columnLabel : 数据库里面的字段名 返回此时指针所在那一行数据对应字段名的数据。
注意:在资源关闭时应该按照需关闭资源的产生的先后顺序反过来关闭。
|