Java面向对象系列[v1.0.0][JDBC及MySQL基础]

通过使用JDBC,Java程序可以非常方便的操作各种主流数据库,由于Java语言的跨平台特性,所以使用JDBC编写的程序不仅可以实现跨数据库还可以跨平台,具备非常优秀的可移植性;程序使用JDBC API以统一的方式来连接不同的数据库,然后通过Statement对象来执行标准的SQL语句,并可以获得SQL语句访问数据库的结果,因此标准的SQL语句是JDBC编程的基础

JDBC基础

JDBC即Java Database Connectivity,它是一种可以执行SQL语句的Java API,它为数据库开发提供了标准的API,使用JDBC开发的数据库应用可以跨平台执行,而且可以跨数据库(全部使用标准的SQL),为了实现Java的这种特性,Java为不同的操作系统提供了不同的虚拟机,个数据库厂商也提供了相应的数据库驱动,通过驱动转换,使得使用相同的JDBC API编写的程序,在不同的数据库系统上运行
在这里插入图片描述

JDBC驱动程序

数据库驱动程序是JDBC程序和数据库之间的转换层,数据库驱动程序负责将JDBC调用映射成特定的数据库调用
在这里插入图片描述
JDBC驱动有4种类型:

  • 第一种:JDBC-ODBC桥,这是最早实现的JDBC驱动程序,它将JDBC API映射到ODBC API,Java8已经摒弃了
  • 第二种:直接将JDBC API映射成数据库特定的客户端API,这种驱动包含特定数据库的本地代码,用于访问特定数据库的客户端
  • 第三种:支持三层结构的JDBC访问方式,主要用于Applet阶段,通过Applet访问数据库
  • 第四种:纯Java的,直接与数据库实例交互,它知道数据库使用的底层协议,也是目前最流行的

JDBC与ODBC

  • 相对于ODBC而言,JDBC更加简单,ODBC中有几个命令需要配置很多复杂选项,JDBC则采用简单、直观的方式来管理数据库连接
  • JDBC比ODBC安全性更高,更容易部署

SQL语句是对所有关系型数据库都通用的命令语句,而JDBC API只是执行SQL语句的工具,JDBC允许对不同的平台、不同的数据库采用相同的编程接口来执行SQL语句
除了标准的SQL语句之外,所有的数据库都会在标准的SQL语句基础上进行扩展,增加额外的功能,而如果想让数据库应用程序可以跨数据库运行,则应该尽量减少这些属于特定数据库的扩展

关系型数据库基本概念和MySQL基本命令

在数据库的发展史上,按时间顺序曾经出现过:

  • 网状型数据库
  • 层次型数据库
  • 关系型数据库
  • 面向对象数据库

严格来说,数据库知识存放数据的地方,对数据库的操作需要数据库管理系统的帮助,它就是Database Management System,简称DBMS,通常情况下说的数据库包含这两部分
DBMS是所有数据的知识库,它负责管理数据的存储、安全、一致性、并发、恢复和访问操作,DBMS有一个数据字典(系统表),用于存储它拥有的每个事物的相关信息,这种关于数据的数据也被称为元数据(metadata)
对于关系型数据库而言,最基本的数据存储单元是数据表,数据表是由行和列组成的表格,创建表时,通常需要指定该表包含多少列,此外还应该为每个数据表指定一个特殊列用于唯一标识,称之为主键列

命令行操作数据库

启动命令行,CD到命令行工具所在路径C:\Program Files\MySQL\MySQL Server 5.7\bin,然后执行命令mysql -uroot -p -h 主机名 --default-character-set=utf8回车输入密码,即可进入MySQL命令行模式,也可以直接开始菜单中的MySQL x.x Command Line然后输入root密码进入

Microsoft Windows [版本 10.0.10240]
(c) 2015 Microsoft Corporation. All rights reserved.

C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql -uroot -p
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.7.31-log MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
show databases;

查看当前所有数据库实例

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
6 rows in set (0.00 sec)
create database IF NOT EXISTS 数据库名;

创建数据库

mysql> create database IF NOT EXISTS davieyang;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| davieyang          |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
7 rows in set (0.00 sec)
drop database 数据库名;

删除数据库

mysql> drop database davieyang;
Query OK, 0 rows affected (0.06 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
6 rows in set (0.00 sec)
use 数据库名;

要具体在某个数据库实例中进行更细节的操作,则需要首先进入该数据库,然后查看当前进入的实例中有哪些数据表

mysql> create database IF NOT EXISTS davieyang;
Query OK, 1 row affected (0.00 sec)

mysql> use davieyang;
Database changed
mysql> show tables;
Empty set (0.00 sec)
desc 数据表名;

查看数据表结构

mysql> use mysql;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
31 rows in set (0.00 sec)

mysql> desc user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(32)                          | NO   | PRI |                       |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Update_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Delete_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Create_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Drop_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N                     |       |
| Process_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| File_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Grant_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| References_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Index_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Alter_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Show_db_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Super_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tmp_table_priv  | enum('N','Y')                     | NO   |     | N                     |       |
| Lock_tables_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Execute_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_slave_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_client_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Create_view_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Show_view_priv         | enum('N','Y')                     | NO   |     | N                     |       |
| Create_routine_priv    | enum('N','Y')                     | NO   |     | N                     |       |
| Alter_routine_priv     | enum('N','Y')                     | NO   |     | N                     |       |
| Create_user_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Event_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Trigger_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tablespace_priv | enum('N','Y')                     | NO   |     | N                     |       |
| ssl_type               | enum('','ANY','X509','SPECIFIED') | NO   |     |                       |       |
| ssl_cipher             | blob                              | NO   |     | NULL                  |       |
| x509_issuer            | blob                              | NO   |     | NULL                  |       |
| x509_subject           | blob                              | NO   |     | NULL                  |       |
| max_questions          | int(11) unsigned                  | NO   |     | 0                     |       |
| max_updates            | int(11) unsigned                  | NO   |     | 0                     |       |
| max_connections        | int(11) unsigned                  | NO   |     | 0                     |       |
| max_user_connections   | int(11) unsigned                  | NO   |     | 0                     |       |
| plugin                 | char(64)                          | NO   |     | mysql_native_password |       |
| authentication_string  | text                              | YES  |     | NULL                  |       |
| password_expired       | enum('N','Y')                     | NO   |     | N                     |       |
| password_last_changed  | timestamp                         | YES  |     | NULL                  |       |
| password_lifetime      | smallint(5) unsigned              | YES  |     | NULL                  |       |
| account_locked         | enum('N','Y')                     | NO   |     | N                     |       |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
45 rows in set (0.02 sec)

MySQL存储机制

  • MyISAM:这是MySQL早期默认的存储机制,对事物支持不是很好
  • InnoDB:提供事务安全的存储机制,它通过建立行级锁来保证事务完整性,并以Oracle风格的共享锁来处理Select语句,系统默认启动InnoDB存储机制,如果不想用这个机制则启动时使用skip-innodb选项

如果使用5.0以上版本的MySQL数据库,通常无需指定数据库表的存储机制,默认是InnoDB,如果需要在建表时显示指定存储机制,则可在标准建表语句后添加

  • ENGINE=MyISAM
  • ENGINE=InnoDB
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Davieyang.D.Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值