web学习小结之sql语句与JDBC
一、mysql基本语句
这里主要是对sql基本语句的一个复习总结,不过还是首先比较一下几种常见的数据库:
SQL Server、DB2、Oracle主要应用于大型应用系统,也就是企业级的应用开发,他们对于大数据量的存取、安全性等各方面有着独到的优势,但相对来说,这些数据库都属于中大型软件,对系统的要求比较高,费用方面也比较昂贵;Access、MySql这类数据库则属于轻量级,他们不需要很高的系统硬件配置,而且部署比较方便,但是他们的缺点是只能进行一些小数据量的存取,而且安全性不高。所以对于初学者的我们,目前多数选择方便快速的mysql数据库来学习, Sql语句主要可以分为以下三类,每一大类下列出了其中主要的sql语句。
1、 DML(Data Manipulation Language,数据操作语言)——用于检索或者修改数据;
SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据
2、DDL(Data Definition Language,数据定义语言)——用于定义数据的结构,如创建、修改或者删除数据库对象;
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
3、 DCL(Data Control Language,数据控制语言)——用于定义数据库用户的权限。
了解了sql语句的基本分类后就是掌握其基本的语法结构,以下是学习过程中应用到的一些增删查改以及查询数据的操作语句:
创建数据库
Create database lesson1;
创建表
create table userinfo(
id int not null auto_increment,
name varchar(20) not null,
pwd varchar(20),
age int ,
primary key(id));
create table bloginfo(
id int not null auto_increment primary key,
id_user int not null,
title varchar(20));
指定数据库/表的编码
Create database mysql defaule character set utf8;
增加表字段
alter table userinfo add city varchar(20);
删除表字段
alter table userinfo drop column city;
创建主键(主键的作用及意义,将字段设为主键会出现的问题)
alter table userinfo add primary key(id);
创建外键(外键的作用->业务实体中的一对多,一对一,多对多)
Alter table bloginfo add constraint fk_bloginfo_uid foreign key fk_bloginfo_uid(id_user)
References userinfo(id);
唯一性约束
Alter table userinfo add unique index index_unique using hash(name);
插入一行完整的数据
Insert into userinfo(name,pwd,age)values(‘a’,’123’,20);
插入一行中的部分数据
Insert into userinfo(name,pwd)values(‘b’,’123’);
插入一个查询结果
Insert into userinfo(name,pwd,age)select name,pwd,age from test;
按条件更新记录
Update userinfo set name=’abc’ where id=1;
删除记录
Delete from userinfo where id=1;
清空表(truncate table user)
Truncate table userinfo;
开启事务
start transaction;
提交事务
commit;
回滚事务
rollback;
简单查询
Select * from userinfo;
查询排序
Select * from userinfo order by id desc;
按条件查询
Select * from userinfo where age=20;
非空查询
Select * from userinfo where age is not null;
In查询
Select * from userinfo where age in(21,23);
模糊查询
Select * from userinfo where name like’%et_’;
and/or 查询
select * from userinfo where age>10 and age<21 or name = ‘a’;
别名
Select u.id,u.name as ‘别名’ from userinfo u;
聚集查询(count,sum,avg,max,min,distinct)
Select avg(age) from userinfo;
Select count(*) from userinfo;
Select sum(age) as num from userinfo;
Select max(age) from userinfo;
Select min(age) from userinfo;
Select count(distinct(age)) from userinfo;
分组查询
Select count(*) as ct,id_user from bloginfo group by ct desc;
子查询
Select * from bloginfo where id_user in (
Select id from userinfo where age=32);
外连结查询
Select u.id,u.name,b.title from bloginfo b rifht join userinfo u on u.id = b.id_user;
数据库的导入与导出
mysqldump -u root -p student_manager>c:\lesson1.sql
source c:lesson1.sql;
二、JDBC简介:
在数据库的学习之后,需要考虑的问题就出现了,如何在java程序中操作数据库,多种不同的数据库是否操作方式也不同呢,那又有没有简单的方式来帮我们解决这些问题呢?JDBC就帮我们解决这些问题,JDBC(Java Database Connectivity,Java数据库连接),提供了一种与平台无关的,用于执行SQL语句的标准Java API,可以方便的实现多种数据库的统一操作,它由一组用Java语言编写的类和接口组成。
在实际开发中可以直接使用JDBC进行各个数据库的连接与操作,而且可以方便的向数据库中发送各种SQL命令。在JDBC中提供的是一套标准的接口,这样,各个支持JAVA的数据库生产商只要按照此接口提供相应的实现,则就都可以使用JDBC进行操作。极大的体现了JAVA的可移植性的设计思想。
JDBC操作的基本步骤如下:
1、加载数据库驱动程序:各个数据库都会提供JDBC的驱动程序开发包,直接把JDBC操作所需要的开发包,直接配置到classpath路径即可。在程序中的加载语句以mysql为例:
// 装载对应数据库的驱动类
Class.forName("com.mysql.jdbc.Driver ");
2、连接数据库:根据各个数据库的不同,连接的地址也不同,这里使用的是mysql数据库,连结是先制定数据库的URL:
//数据库连结串 String dbURL=" jdbc:mysql://localhost:3306/lesson1";
其中lesson1是所要操作的库名,用户在取得连接之后才可以对数据库进行查询或更新的操作。
取得连结对象:
// 创建连结,传入连结串,帐号,密码 Connection conn =DriverManager.getConnection(dbURL, "root","netjava");
3、使用语句进行数据库操作:数据库操作分为更新和查询两种操作,除了可以使用标准的SQL语句之外,对于各个数据库也可以使用其自己提供的各种命令。
4、关闭数据库连接:数据库操作完毕之后需要关闭连接以释放资源。
连接好后对数据库的操作中就可以用到很多Connection 接口的方法如预编译PreparedStatement ,事务管理,批处理等等,也是之后有待熟悉的地方。