java中database相关指令_数据库SQL的基础知识及java连接数据库的基本操作过程

本文介绍了数据库SQL的基础知识,包括数据库完整性约束、SQL语句的使用,如创建数据库、操作表以及数据的增删改查。此外,还详细阐述了Java通过JDBC连接数据库的基本操作流程,包括加载驱动、建立连接、执行SQL语句和处理结果。通过示例代码展示了如何连接MySQL数据库并执行查询操作。
摘要由CSDN通过智能技术生成

数据库SQL的基础知识

【补充数据库基本知识点】

数据库是按照一定的数据结构来组织、存储和管理数据的仓库

数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库

1、数据库表的完整性约束:域约束(表中字段取值范围)、主码约束(主键,唯一确定一条记录)、外码约束(表中一个字段,确实另外一张表的主码)

用SQL语句生成外键:

//为foods表的CategoryId字段生成外键fk_Foods_Category

alter table foods add constraint fk_Foods_Category  foreign key(CategoryId)  references Category(id);

####-----增加外键的方法------#####

#######alter table 需加外键的表 add constraint 外键名 foreign key(需加外键表的字段名) referencnes 关联表名(关联字段名);#####

2、SQL语句补充

在描述SQL有关语句格式时,常常用到一些符号

[ ]:表示可选项,即方括号中内容可以根据需要进行选择

{ } :表示必选项

<> :表示尖括号中的内容是用户必须要提供的参数

| :表示有多个选项时只能选择一项,多个选项之间用 ‘ | ’隔开

[ , …n] :表示前面的项可重复n次,相互之间用‘ ,’隔开

A、创建数据库的SQL命令

CREATE DATABASE

Eg: CREATE DATABASE Student;//创建Student数据库

B、表的操作

(1)sql语句创建表

CREATE TABLE([],[]…,[]);

Eg:CREATE TABLE Students(sno CHAR(9) NOT NULL PRIMARY KEY,

sName CHAR(12) NOT NULL , sex CHAR(2) , age INT);

(2)删除表

DROP TABLE

(3)修改表结构

ALTER TABLE[ALTER COLUMN ] |

ADD COLUMN 子句—增加新字段及相应的完整性约束条件

DROP COLUMN 子句 –删除表中字段

DROP CONSTRAINT 子句—删除完整性约束

Eg:

ALTER TABLE Student ADD COLUMN phone CHAR(11);

C、表数据操作

(1)插入数据:

INSERT INTO[([,]…)] VALUES([,]…)

Eg:

Insert into Student(sNO,sName,sex,age) values(‘201201009’,’隔壁老王’,‘男’,18);

(2)修改数据

UPDATE SET =[,==[WHERE ];

Eg:update Student set age=20 where sNO=‘201201009’;

(3)删除数据

DELETE FROM [WHERE ]

Eg:delete from Student where sNo=’201201009’;

(4)   查询数据

SELECT [ALL | DISTICT][TOP n [PERCENT]]{ * | {||}

[[AS ]|[[AS] ]][ , …n]}

FROM [WHERE ]

[GROUP BY [HAVING]]

[ORDER BY [ASC | DESC]];

参数说明:

ALL—显示结果集中的所有数据,包括重复行,ALL是默认设置

DISTINCT—显示结果集中不重复的所有行

GROUP BY 子句—按照进行分组,该字段值相同的分为一个组,分组后每组只显示一个结果;如果GROUP BY子句带HAVING 子句,则只有满足HAVING指定条件的组才会输出,有过GROUP BY 有多个字段名,则按照第一个字段分组,再按照第二个字段分组,以此类推

HAVING 子句---分组条件与WHERE 子句中的条件格式类似

ORDER By 子句---只有两个结果一个是ASC升序(系统默认),一个DESC降序;ORDER BY子句需要放到查询语句的最后

A、简单查询

Eg:Select sNO as 学号,sName as 姓名 from Student where age betwwen 18 and 20 ;

将年龄在18到20及之间满足条件的结果返回

【注】v1 betwwen v2 and V3 相当于v1>=v2 and v1<=v3

v1 not betwwen v2 and V3 相当于v1v3

Where 常用的运算符及功能

运  算  符

功  能

=、>、=、<=、!=、<>

比较范围

betwwen and、not betwwen and

在某个范围之间(包含两端)

In 、not in

数据在某一个集合

Like 、not like

字符模糊匹配

Is null、is not null

判断空值

and、or、not

逻辑运算(与或非)

B、多重条件查询

Eg:select * from Student where dep=’计算机’ and sex=‘男’;

C、模糊查询

[not] like

模糊查询时中可以含有的通配符

通配符

功能

实例

%

代表0个或多个字符

‘ab%‘ 表示’ab’后可接任意字符串

_(下划线)

代表一个字符

‘a_b’表示‘a’与‘b‘之间可为任意单个字符

[ ]

代表在某一范围的字符

[0-9]表示0~9之间的字符

[^ ]

表示不在某一范围的字符

[^0-9]表示不在0~9之间的字符

Eg:select * from student where sName Like ’李%’;

D、常用的统计函数汇总查询

常用的统计函数及功能

函  数  名

功  能

AVG()

求字段名所在列的平均值(必须是数值型)

SUM()

求字段名所在列的总和(必须是数值型)

MAX()

求字段名所在列的最大值

MIN()

求字段名所在列的最小值

COUNT(*)

统计个数

COUNT([DISTINCT])

统计不重复列的个数

Eg:select AVG(grade) as 平均成绩 from score;

E、OEDER BY 子句

Eg:select sNo,grade from Score where cNo=‘c001‘ ORDER BY grade DESC;

F、分组数据

GROUP BY子句可以按照关键字段的值来组织数据,关键字段相同的为一组,一般情况之下可以根据表中的某一个字段进行分组,并且要求使用统计函数,这样每一个分组就只有一个记录

Eg:

Select cNO,COUNT(*) as 人数 from Score GROUP BY cNO;

java连接数据库的基本操作过程

1、 JDBC是java程序中访问数据库的标准API,jdbc给java程序员提供访问和操纵众多关系数据库的一个统一的接口。

2、 JDBC的分类:

SQL Server JDBC、MySQL JDBC、Oracle JDBC、JDBC-ODBC(连接ACCESS)

3、 JDBC中主要的类与接口(有颜色的代表接口)

JDBC中主要的类与接口

类与接口

功    能    说   明

DriverManager

负责加载各种不同的驱动程序,根据不同的请求返回相应的

SQLException

代表数据库连接的建立、关闭或SQL语句的执行过程中发生的异常

Connection

数据库连接,负责与数据库间通讯

Statement

用以执行不含参数的静态SQL查询和更新,并返回执行结果

PreparedStatement

用以执行包含参数的动态SQL查询和更新

CallableStatement

用以获得数据库的存储过程

ResultSet

获得SQL查询结果

【注】使用JDBC访问数据库的基本步骤为:加载驱动程序、建立与数据库的连接、创建执行方式语句、执行SQL语句、处理返回结果和关闭创建的各种对象。

4、 建立与数据库的连接

(1)     加载JDBC驱动程序:利用Class.forName(JDBCDriverClass);

forName()是Class的静态方法,参数JDBCDriverClass是要加载的JDBC驱动程序类的名称,它是以字符串形式表达的类长名。

数据库的常用驱动程序类

数据库

驱动程序类

Access

sun.jdbc.odbc.JdbcOdbcDriver

SQL Server

com.microsoft.sqlserver.jdbc.SQLServerDriver

MySQL

com.mysql.jdbc.Driver

Oracle

oracle.jdbc.driver.OracleDriver

Eg:

Class.froName(“com.mysql.jsbd.Driver”);//加载MySQL数据库驱动

【注】创建数据库连接时Driver Manager类的常用方法

Public static Connection getConnection(String url,String user,String password);

url为链接数据库的url连接,用户名和密码为登录数据库的用户名和密码

DriverManager类的getConnection()是实现建立JDBC驱动程序到数据库连接的方法一般格式如下:

Connection conn=DriverManager.getConnection(url,user,password);

JDBC的URL

数据库

URL模式

Access

jdbc:odbc:dataSource

SQL Server

jdbc:sqlserver://hostname:port#;DatabaseName=dbname

MySQL

jdbc:mysql://hostname:3306/dbname

Oracle

jdbc:oracle:thin:@hostname:port#:oracleDBSID

例如连接MySQL数据库的操作:

Connection conn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/Student”,”root”,”123456”);

简单操作数据库的实例代码

package com.database;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class dataBaseConnection {

//要加载的驱动类型

private static String driver="com.mysql.jdbc.Driver";

//连接数据库的URl

private static String url="jdbc:mysql://localhost:3306/foods";

//登录数据库的用户名

private static String user="root";

//登录数据库的密码

private static String password="root";

public static void main(String[] args) {

Connection conn=null;

Statement stm=null;

ResultSet  rs=null;

String selectsql ="select * from foods where CategoryId=1";

try {

//加载驱动,同时需要在项目中add libraries连接驱动程序mysql-connector-java-5.1.26-bin.jar

Class.forName(driver);

//创建数据库连接

//conn=DriverManager.getConnection(url);这是错误方式,数据库登录用户名和密码没有添加

conn=DriverManager.getConnection(url,user,password);

//利用连接对象conn创建Statement接口对象,类似于游标的作用

stm=conn.createStatement();

//将sql语句作为参数传递给Statement的查询方法

rs=stm.executeQuery(selectsql);

//遍历查询结果集中的元素

while(rs.next()){

//利用集合中的getXXX(Colum)方法获得数据库表中Colum的内容

int foodsId=rs.getInt("FoodsId");

int CategoryId=rs.getInt("CategoryId");

String ChineseName=rs.getString("ChineseName");

String English=rs.getString("English");

String Description=rs.getString("Discription");

System.out.println(foodsId+" "+CategoryId+" "+ChineseName+" "+English+" "+Description);

}

} catch (Exception e) {

e.printStackTrace();

}finally{

try {

//关闭结果集对象

if(rs!=null) rs.close();

//关闭Statement对象

if(stm!=null) stm.close();

//关闭JDBC与数据库的连接对象

if(conn!=null) conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值