jdbc mysql 别名_MySQL&JDBC回顾

1.创建一个库

create database 库名;

create database 库名 character set 编码;

8fbcd50227001f2a02cc225827cbc993.png

创建带有编码的:

1f8a31246f543bf67826e0ec6ca5d4bd.png

查看编码:

fdf59102e1a2149cf94c2720e91073a1.png

2、删除一个库

Drop database 库名;

de27413979c69c5d437044cbce5c428e.png

3、使用数据库

use 库名;

4、查看当前正在操作的库

select database();

3106c5d25c5c4dddaccd50e63d4c419e.png

1、创建一张表

create table 表名(

字段名 类型(长度)[约束],

字段名 类型(长度)[约束],

字段名 类型(长度)[约束]

);

50a7197c086cf48f5bbf26f29bd00e61.png

2、查看数据库表

创建完成后,我们可以查看数据库表

show tables;

27da43e5227db86839e189907a596968.png

查看表的结构

desc 表名;

2d432921a5b3c7446f0ceacd0fc99724.png

3.删除一张表

drop table 表名;

30f596d989921bb2de5676555586f05f.png

4、修改表

4.1 添加一列

alter table 表名 add 字段名 类型(长度) [约束];

fa7442883f896618a4ac52aecaa145f6.png

4.2 修改列的类型(长度 约束)

alter table 表名modify要修改的字段名 类型(长度) [约束];

69275c9549c1e7d5b430c06711c0a569.png

4.3修改列的列名

alter table 表名change旧列名 新列名 类型(长度) [约束];

40da644c0efac50a464d79004102ed04.png

4.4删除表的列

alter table 表名drop列名;

c6f657ba510965dce8eb2bdb01e95c2e.png

4.5修改表名

rename table 表名to新表名;

c2841d999698e69fb452d2d2879b32d9.png

4.6修改表的字符集

alter table 表名character set编码;

f08e957a0c57cd2054935095fd22360c.png

查看当前表的编码

a943ff53f93b2be9cfd868b7a69e9f3d.png

三、对数据库表记录进行操作(修改)

1.插入记录

Insert into 表名(列名1,列名2,列名3....) value(值1,值2,值3.....);

45c6cf25c9bb4eb98324869032b33e47.png

insert into 表名 values(值1,值2,值3.....)

00094df37f16ac1fb855b77a6bbbeac1.png

插入数据中文乱码问题解决办法

直接修改数据库安装目录里面的my.ini文件的第57行

方式一:【不建议!】

直接修改数据库安装目录里面的my.ini文件的第57行

052ade9cd839e7655c674b165fa07600.png

方式二:

set names gbk;

2.修改表记录

2.1 不带条件的

update 表名set字段名=值,字段名=值,字段名=值……

e5def9c53d06d7cbe6c79403edd5d440.png

2.2带条件的

update 表名set字段名=值,字段名=值,字段名=值…… where条件

73770cf70cf2621158fe89d2308a0c9d.png

3.删除表记录

3.1带条件的

delete from 表名where条件

0bf5ba76b697280103a5936299ccc750.png

注意,删除后,uid不会重置!

3.2.不带条件的

先准备数据

insert into tbl_user values(null,’老王’,’666’);

删除操作

delete from 表名;

e6e6d406b6ee92c04ad696733397c509.png

3.3面试题

说说delete与truncate的区别?

delete删除的时候是一条一条的删除记录,它配合事务,可以将删除的数据找回。

truncate删除,它是将整个表摧毁,然后再创建一张一模一样的表。它删除的数据无法找回。

Delete操作演示:

3c1099d5ab7d914e49ddbb04d4477b44.png

Truncate操作演示:

5571eb5618b907dd3737c264173af86f.png

cba5bb3b2d61ce2ec96b5131750d9432.png

注意:delete删除,uid不会重置!而使用truncate操作,uid会重置

4.查询操作

语法:

select [distinct] *| 列名,列名from表名[where条件]

4.1简单查询

1.查询所有商品

select * from product;

12d97107a38647ac1c2630dc8f98dc15.png

2. 查询商品名和商品价格

select pname,price from product;

9359c6057ecb73425512804268164cf9.png

3.查询所有商品信息使用表别名

select * from product as p;

bf78e9c8feb123f2d1350dd0ef88774d.png

4.查询商品名,使用列别名

select pname as p from product;(as可省略)

db1fe0f593b1ba5398ad30b102ac48f5.png

5.去掉重复值(按照价格)

select distinct(price) from product;

先准备数据:

insert into product values (null,'李士雪',38,null);

eeaa9e569d161c889bf4c8502a243da0.png

6.将所有的商品的价格+10进行显示

select pname,price+10 from product;

8b3e2e9e93d9ac13adfe58fd02a7f901.png

4.2条件查询

1.查询商品名称为"左慈"的商品信息

8e1c68631b5e101bc846d476500236bd.png

2.查询价格>60元的所有商品信息

e446bbdfed987d0f3389b174a08a8dd5.png

3.查询商品名称含有"士"字的商品信息

6e97eb00a35dc6d379efec6ee4aa56fc.png

4.查询商品id在(3,6,9)范围内的所有商品信息

c96cae19ee643147819a69a21ef9266c.png

5.查询商品名称含有"士"字并且id为6的商品信息

f1aa8a8741241cbe04905c1bcb5d7099.png

6.查询id为2或者6的商品信息

5d0f3fd720f62a8728fdc6be1fdcca6c.png

4.3排序

1.查询所有的商品,按价格进行排序(升序、降序)

8f41d83a524cd605b2845387997a0c88.png

471f18c47bcca83a7ab8a00c16b752c1.png

2.查询名称有"士"的商品信息并且按照价格降序排序

67656b31ad48a43e0ff89cf7284fde80.png

4.4聚合函数

1.获得所有商品的价格的总和。

f30c91e82e4ef71f9b09b15aa3811790.png

2.获得所有商品的平均价格

f60bd75ea3a6e37da216fafafa8e8d29.png

3.获得所有商品的个数

64255d3854cad9bd235e1b4f689cf6be.png

4.5分组操作

1.添加分类id (alter table product add cid varchar(32);)

2.初始化数据

update product set cid='1';

update product set cid='2' where  pid in (5,6,7);

1.根据cid字段分组,分组后统计商品的个数。

43810fac3553cd8e82dbeae59407550b.png

2.根据cid分组,分组统计每组商品的平均价格,并且平均价格大于20000元。

45faab7f60a29f2ece359e2553529d47.png

4.6查询总结

select  一般在的后面的内容都是要查询的字段

from  要查询到表

where

group by

having  分组后带有条件只能使用having

order by 它必须放到最后面

5、JDBC开发步骤

1.注册驱动

2.获得连接

3.获得语句执行者

4.执行sql语句

5.处理结果

6.释放资源

5.1 注册驱动

看清楚了,注册驱动就只有一句话:Class.forName(“com.mysql.jdbc.Driver”),下面的内容都是对这句代码的解释。今后我们的代码中,与注册驱动相关的代码只有这一句。

DriverManager类的registerDriver()方法的参数是java.sql.Driver,但java.sql.Driver是一个接口,实现类由mysql驱动来提供,mysql驱动中的java.sql.Driver接口的实现类为com.mysql.jdbc.Driver!那么注册驱动的代码如下:

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

上面代码虽然可以注册驱动,但是出现硬编码(代码依赖mysql驱动jar包),如果将来想连接Oracle数据库,那么必须要修改代码的。并且其实这种注册驱动的方式是注册了两次驱动!

JDBC中规定,驱动类在被加载时,需要自己“主动”把自己注册到DriverManger中,下面我们来看看com.mysql.jdbc.Driver类的源代码:

com.mysql.jdbc.Driver.java

public class Driver extends NonRegisteringDriver implements java.sql.Driver {

static {

try {

java.sql.DriverManager.registerDriver(new Driver());

} catch (SQLException E) {

throw new RuntimeException("Can't register driver!");

}

}

……

}

com.mysql.jdbc.Driver类中的static块会创建本类对象,并注册到DriverManager中。这说明只要去加载com.mysql.jdbc.Driver类,那么就会执行这个static块,从而也就会把com.mysql.jdbc.Driver注册到DriverManager中,所以可以把注册驱动类的代码修改为加载驱动类。

Class.forName(“com.mysql.jdbc.Driver”);

5.2获取连接

获取连接需要两步,一是使用DriverManager来注册驱动,二是使用DriverManager来获取Connection对象。

获取连接的也只有一句代码:

DriverManager.getConnection(url,username,password),

其中username和password是登录数据库的用户名和密码,如果我没说错的话,你的mysql数据库的用户名和密码分别是:root、123。

url查对复杂一点,它是用来找到要连接数据库“网址”,就好比你要浏览器中查找百度时,也需要提供一个url。下面是mysql的url:

jdbc:mysql://localhost:3306/mydb1

JDBC规定url的格式由三部分组成,每个部分中间使用冒号分隔。

l 第一部分是jdbc,这是固定的;

l 第二部分是数据库名称,那么连接mysql数据库,第二部分当然是mysql了;

l 第三部分是由数据库厂商规定的,我们需要了解每个数据库厂商的要求,mysql的第三部分分别由数据库服务器的IP地址(localhost)、端口号(3306),以及DATABASE名称(mydb1)组成。

下面是获取连接的语句:

Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/web08”,”root”,”root”);

还可以在url中提供参数:

jdbc:mysql://localhost:3306/web08?useUnicode=true&characterEncoding=UTF8

useUnicode参数指定这个连接数据库的过程中,使用的字节集是Unicode字节集;

characherEncoding参数指定穿上连接数据库的过程中,使用的字节集编码为UTF-8编码。请注意,mysql中指定UTF-8编码是给出的是UTF8,而不是UTF-8。要小心了!

5.3获取Statement

在得到Connectoin之后,说明已经与数据库连接上了,下面是通过Connection获取Statement对象的代码:

Statement stmt = con.createStatement();

Statement是用来向数据库发送要执行的SQL语句的!

5.4发送SQL查询语句

String sql = “select * from user”;

ResultSet rs = stmt.executeQuery(sql);

请注意,执行查询使用的不是executeUpdate()方法,而是executeQuery()方法。executeQuery()方法返回的是ResultSet,ResultSet封装了查询结果,我们称之为结果集。

5.5读取结果集中的数据

ResultSet就是一张二维的表格,它内部有一个“行光标”,光标默认的位置在“第一行上方”,我们可以调用rs对象的next()方法把“行光标”向下移动一行,当第一次调用next()方法时,“行光标”就到了第一行记录的位置,这时就可以使用ResultSet提供的getXXX(int col)方法来获取指定列的数据了:

rs.next();//光标移动到第一行

rs.getInt(1);//获取第一行第一列的数据

当你使用rs.getInt(1)方法时,你必须可以肯定第1列的数据类型就是int类型,如果你不能肯定,那么最好使用rs.getObject(1)。在ResultSet类中提供了一系列的getXXX()方法,比较常用的方法有:

Object getObject(int col)

String getString(int col)

int getInt(int col)

double getDouble(int col)

5.6关闭

与IO流一样,使用后的东西都需要关闭!关闭的顺序是先得到的后关闭,后得到的先关闭。

rs.close();

stmt.close();

con.close();

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值