目录
数据库DataBase
-
学习数据库主要就是学习如何对数据进行增删改查操作
-
平时所说的数据库(DBMS数据库管理系统)实际上就是一款软件, 电脑上安装了这个软件,电脑就可以称为数据库服务器
-
常见的DBMS:
- MySQL: Oracle公司产品, MySQL 08年被Sun公司收购,09Sun公司被Oracle收购. 目前市占率排名第一, 开源软件, 原MySQL创始人从Oracle离开创办MariaDB
- Oracle: Oracle公司产品, 拉里埃里森32, 闭源产品, 性能最高价格最贵. 市占率排名第二
- SQLServer: 微软公司产品,闭源产品, 市占率第三, 主要应用在微软的整套解决方案中
- DB2: IBM公司产品,闭源产品 主要应用在IBM整套解决方案中.
- SQLite: 轻量级数据库 安装包只有几十k,主要应用在移动设备或嵌入式设备中
-
网站开发整套解决方案:
网站= 开发语言(Java/php/.net)+webServer+操作系统(linux/windows/mac os等)+数据库(MySQL/Oracle/SQLServer....)
-
开源和闭源:
- 开源:开放源代码, 免费 盈利方式:通过卖服务 , 有技术大拿无偿维护升级
- 闭源: 不公开源代码, 盈利方式:通过卖产品和服务 , 有技术大拿攻击(但是闭源产品公司一般都比较有钱 养一群人维护升级)
-
学习数据库主要需要掌握一门语言 SQL(Structured Query Language) 结构化查询语言 用于程序员和数据库软件之间进行交流
-
执行SQL语句需要先连接数据库
-
windows: 开始->所有程序->MariaDB或MySQL->MySQL Client 点击运行 输入密码后回车
-
linux: 在桌面空白区域右键打开终端,输入mysql -uroot -p 回车,输入密码后再回车
-
-
常见错误:
需要检查MySQL服务是否开启:
我的电脑上右键->管理->服务->找到MySQL 查看是否显示正在运行,如果没有 右键启动
SQL语言分类
- DDL: 数据定义语言, 负责数据库和表相关的操作
- DML: 数据操作语言, 负责对数据进行增删改查
- DQL: 数据查询语言, 只负责查询
- TCL: 事务控制语言, 负责处理事务相关
- DCL: 数据控制语言, 负责创建用户及分配用户权限相关
DDL数据定义语言
- 往数据库软件中保存数据,需要先创建数据库, 在数据库里面创建表, 最后往表里面插入数据
数据库相关SQL
-
查询所有数据库
- 格式: show databases;
-
创建数据库
-
格式: create database 数据库名;
-
指定字符集格式: create database 数据库名 character set utf8/gbk;
-
举例:
- create database db1;
- create database db2 character set utf8;
- create database db3 character set gbk;
-
-
查询数据库详情
- 格式: show create database 数据库名;
- 举例: show create database db1;
-
删除数据库
- 格式: drop database 数据库;
- 举例:
- drop database db3;
-
使用数据库
- 格式: use 数据库名;
- 举例: use db2;
表相关SQL语句
-
操作表必须提前使用了某个数据库不然会报错 No database selected
-
查询所有表
- 格式: show tables;
-
创建表
- 格式: create table 表名(字段1名 类型,字段2名 类型 .....);
- 指定字符集格式: create table 表名(字段1名 类型,字段2名 类型 .....)charset=utf8/gbk;
- 举例:
- create table person(name varchar(50),age int);
- create table user(username varchar(50),password varchar(50))charset=utf8;
-
查询表详情
- 格式: show create table 表名;
- 举例:
- show create table person;
- show create table user;
-
删除表
- 格式:drop table 表名:
- 举例: drop table user;
-
修改表名
- 格式: rename table 原名 to 新名;
- 举例: rename table person to per;
-
添加表字段
- 最后面添加格式: alter table 表名 add 字段名 类型;
- 最前面添加格式: alter table 表名 add 字段名 类型 first;
- 在xxx字段的后面添加: alter table 表名 add 字段名 类型 after 字段名;
- 举例:
- alter table per add gender varchar(5);
- alter table per add id int first;
- alter table per add hobby varchar(20) after name;
-
查看表字段
- 格式: desc 表名;
- 举例: desc per;
-
删除表字段
- 格式: alter table 表名 drop 字段名;
- 举例: alter table per drop hobby;
-
修改表字段
- 格式: alter table 表名 change 原名 新名 新类型;
- 举例: alter table per change id pid int;
DML数据操作语言
- 操作数据必须使用了某个数据库并且保证已经创建了保存数据的表
create database mydb3 character set utf8;
use mydb3;
create table person(name varchar(50),age int) charset=utf8;
-
插入数据
-
全表插入格式: insert into 表名 values(值1,值2);
insert into person values('Tom',18);
-
指定字段插入格式: insert into 表名(字段1名,字段2名) values(值1,值2);
insert into person(name)values("Jerry");
-
批量插入
insert into person values('AAA',10),('BBB',11),('CCC',12);
insert into person(name)values("XXX"),("YYY"),("ZZZ");
-
中文问题
insert into person values("刘德华",50);
如果执行以上SQL语句 报以下错误 在终端中执行 set names gbk; 回车 再次输入即可.
-
-
查询数据
- 格式: select 字段信息 from 表名 where 条件;
- 举例:
- select * from person; 查询所有数据
- select name from person; 只查名字
- select * from person where age<12; 查询年龄小于12岁的信息
-
修改数据
- 格式: update 表名 set 字段1名=值,字段2名=值 where 条件;
- 举例:
- update person set age=20 where name='Jerry';
- update person set name='张学友' where age=12;
-
删除数据
- 格式: delete from 表名 where 条件;
- 举例:
- delete from person where age<20;
- delete from person where name='Jerry';
- delete from person where age is null;
- delete from person;
数据类型
-
整数 int(m) 和 bigint(m)
m代表显示长度, m=10 18 0000000018 起到补零的作用, 需要和zerofill关键字结合使用
举例: create table t1(name varchar(10),age int(10) zerofill);
insert into t1 values('Tom',18);
select * from t1;
-
浮点数 double(m,d)
m代表总长度 d代表小数长度 23.532 m=5 d=3 ,decimal(m,d) 是超高精度浮点数 只有涉及超高精度运算时使用
-
字符串
- char(m): m代表字符长度 , 固定长度 m=10 存"abc" 占10 , 执行效率略高 最大长度255
- varchar(m): 可变长度, m=10 存"abc" 占3 节省空间 最大长度65535 ,建议保存255以内的字符串 超过255使用text
- text(m):可变长度 最大长度65535
-
日期
-
date 只能保存年月日
-
time 只能保存时分秒
-
datetime 默认值null 最大值 9999-12-31
-
timestamp 时间戳默认值当前系统时间 最大值为2038-1-19
举例: create table t_date(t1 date,t2 time,t3 datetime,t4 timestamp);
insert into t_date values("2020-10-10",null,null,null);
insert into t_date values(null,"12:10:18","2018-11-16 15:33:23",null);
-
主键约束
-
什么是主键: 表示数据唯一性的字段称为主键
-
什么是约束: 创建表时给表字段添加的限制条件
-
主键约束primary key: 唯一且非空
举例: create table t3(id int primary key,name varchar(10));
insert into t3 values(1,'aaa');
insert into t3 values(1,'bbb'); //报错 主键值重复
insert into t3 values(null,'ccc'); //报错 主键值不能为null
主键约束+自增
- 自增规则:从历史最大值+1
create table t4(id int primary key auto_increment,name varchar(10));
insert into t4 values(null,'aaa'); 1
insert into t4 values(null,'bbb'); 2
insert into t4 values(10,'bbb'); 10
insert into t4 values(null,'ccc'); 11
delete from t4 where id>9;
insert into t4 values(null,'ddd'); 12
导入*.sql批处理文件
-
下载 emp.zip 解压出emp.sql 放到某个盘的根目录 其它操作系统放到桌面
-
在终端执行以下命令
source c:/emp.sql;
-
测试 select * from emp; 如果有乱码 执行 set names gbk; 再查
is null 和 is not null
-
查询没有上级领导的员工信息
select * from emp where mgr is null;
-
查询有上级领导的员工姓名和领导编号
select ename,mgr from emp where mgr is not null;
去重 distinct
-
查询员工表中出现的不同的工作有哪些
select distinct job from emp;
-
查询员工表中出现的部门编号 去掉重复
select distinct deptno from emp;
and和or
- and 类似java中的&&
- or 类似java中的||
-
查询1号部门工资低于2000的员工信息
select * from emp where deptno=1 and sal<2000;
-
查询3号部门或工作是程序员的员工信息
select * from emp where deptno=3 or job='程序员';
-
查询有上级领导的员工中工资小于2000的员工姓名,工资和领导编号
select ename,sal,mgr from emp where mgr is not null and sal<2000;
比较运算符 > < >= <= = != 和<>
-
查询不是程序员的员工中工资小于等于1600的员工信息
select * from emp where job !='程序员' and sal<=1600;
select * from emp where job <>'程序员' and sal<=1600;
in关键字
- 查询工资为3000,1500,5000的员工信息
select * from emp where sal=3000 or sal=1500 or sal=5000;
select * from emp where sal in(3000,1500,5000);
- 查询工资不是3000,5000的员工信息
select * from emp where sal!=3000 and sal!=5000;
select * from emp where sal not in(3000,5000);
between x and y 包含x和y
-
查询工资在1000到2000之间的员工信息
select * from emp where sal between 1000 and 2000;
-
查询工资在1000到2000之外的员工信息
select * from emp where sal not between 1000 and 2000;
模糊查询like
- _:代表1个未知字符
- %:代表0或多个未知字符
- 举例:
- 以x开头 x%
- 以x结尾 %x
- 第二个是x _x%
- 包含x %x%
- 第2个是x倒数第三个是y x%y_
-
查询名字中包含悟字的员工姓名
select ename from emp where ename like "%悟%";
-
查询工作中第二个字是售 的员工信息
select * from emp where job like '_售%';
-
查询名字中以精结尾的员工姓名
select ename from emp where ename like '%精';
-
查询姓孙的员工信息
select * from emp where ename like '孙%';
排序 order by
- 格式: order by 字段名 asc升序(默认)/desc降序
-
查询每个员工的姓名和工资 按照工资升序排序
select ename,sal from emp order by sal;
-
查询每个员工的姓名和工资,按照工资降序排序
select ename,sal from emp order by sal desc;
- 多字段排序; 在order by后面写多个字段用逗号分隔
-
查询每个员工的姓名工资和部门编号,按照部门编号升序排序 如果部门编号一致则按照工资降序排序
select ename,sal,deptno from emp order by deptno,sal desc;
分页查询limit
-
格式: limit 跳过的条数,请求条数(每页的条数)
-
格式: limit (请求页数-1)*每页条数,每页条数
请求5页的8条 32,8
3页10条 20,10
9页20条 (9-1)*20,20
-
查询员工姓名和工资按照工资降序排序查询前三条
select ename,sal from emp order by sal desc limit 0,3;
-
查询第二页的4条数据
select * from emp limit 4,4;
-
查询第3页的3条数据
select * from emp limit 6,3;
-
查询最惨员工信息(工资最低)
select * from emp order by sal limit 0,1;
别名
- 对查询的字段名起一个新的名字
select ename as '姓名' from emp;
select ename '姓名' from emp;
select ename 姓名 from emp;
数值计算 + - * / %
-
查询每个员工的姓名 工资和年终奖(年终奖=5个月的工资)
select ename,sal,5*sal 年终奖 from emp;
-
查询1号部门员工的姓名/工资和涨薪5块钱之后的工资
select ename,sal,sal+5 涨薪后 from emp where deptno=1;
聚合函数
- 对查询的多条数据进行统计查询
- 统计方式: 求平均值, 最大值,最小值, 求和, 计数
-
平均值avg(字段名)
-
查询2号部门的平均工资
select avg(sal) from emp where deptno=2;
-
查询程序员的平均工资
select avg(sal) from emp where job='程序员';
-
-
最大值max(字段名)
-
查询1号部门的最高工资
select max(sal) from emp where deptno=1;
-
-
最小值min(字段名)
-
查询销售的最低工资
select min(sal) from emp where job='销售';
-
-
求和sum(字段名)
-
查询销售工作的工资总和
select sum(sal) from emp where job like '%销售%';
-
-
计数count(字段名) count(*)
-
查询1号部门员工人数
select count(*) from emp where deptno=1;
-
分组查询 group by
- 格式: group by 字段名
- 以分组字段相同值的数据为一组 进行统计查询
-
查询每个部门的平均工资
select deptno,avg(sal) from emp group by deptno;
-
查询每个部门的最高工资
select deptno,max(sal) from emp group by deptno;
-
查询每种工作的人数
select job,count(*) from emp group by job;
-
查询1号部门每种工作的人数
select job,count(*) from emp where deptno=1 group by job;
各个关键字的顺序
select * from 表名 where 条件 group by 分组字段 order by 排序字段 limit 跳过条数,请求条数
select * from 表名 where 普通字段条件 group by 分组字段 having 聚合函数条件 order by 排序字段 limit 跳过条数,请求条数;
having
-
where后面只能写普通字段的条件, 聚合函数条件需要写在having后面, having写在group by的后面 要和分组查询结合使用
-
查询每个部门的平均工资要求只查询平均工资大于2000的信息
select deptno,avg(sal) from emp group by deptno having avg(sal)>2000 ;
-
查询只有一个人的工作名称
select job,count(*) c from emp group by job having c=1;
-
查询每个部门的工资总和,只查询有领导的员工,并且要求工资总和高于5400;
select deptno,sum(sal) s from emp where mgr is not null group by deptno having s>5400;
-
查询每个部门的平均工资,只查询工资在1000到3000之间的,并且过滤掉平均工资低于2000的部门
select deptno,avg(sal) a from emp where sal between 1000 and 3000 group by deptno having a>=2000;
-
查询每种工作的人数要求人数大于1个,并且只查询1号部门和2号部门的员工, 按照人数降序排序
select job,count(*) c from emp where deptno in(1,2) group by job having c>1 order by c desc;
子查询(嵌套查询)
-
查询工资高于1号部门平均工资的员工信息
select avg(sal) from emp where deptno=1;
select * from emp where sal>(select avg(sal) from emp where deptno=1);
-
查询工资最高的员工信息
select max(sal) from emp;
select * from emp where sal=(select max(sal) from emp);
-
查询工资高于2号部门最低工资的员工信息
select min(sal) from emp where deptno=2;
select * from emp where sal>(select min(sal) from emp where deptno=2);
-
查询和孙悟空相同工作的其它员工信息
select job from emp where ename='孙悟空';
select * from emp where job=(select job from emp where ename='孙悟空') and ename!='孙悟空';
-
查询拿最低工资员工的同事们的信息(同事指相同部门)
select min(sal) from emp; //得到最低工资
select deptno from emp where sal=(select min(sal) from emp);//最低工资的部门编号
select * from emp where deptno=(select deptno from emp where sal=(select min(sal) from emp)) and sal!=(select min(sal) from emp);
-
查询白骨精的部门信息(需要用到部门表)
select deptno from emp where ename='白骨精';
select * from dept where deptno=(select deptno from emp where ename='白骨精');
关联关系
-
创建表时,表和表之间存在的业务关系
-
有哪几种关系?
-
一对一:有AB两张表,A表中一条数据对应B表中的一条数据,同时B表中的一条数据也对应A表中的一条数据 称为一对一关系
-
一对多:有AB两张表,A表中一条数据对应B表中的多条数据,同时B表中的一条数据对应A表中的一条数据 称为一对多关系
-
多对多:有AB两张表,A表中一条数据对应B表中的多条数据,同时B表中的一条数据也对应A表中的多条数据 称为多对多关系
-
-
表和表之间如何建立关系?
通过一个单独的字段指向另外一个表的主键,这个单独的字段称为外键.
关联查询
-
同时查询多张存在关联关系的表时,使用的查询查询方式称为关联查询
-
关联查询的方式有三种: 1. 等值连接 2.内连接 3. 外连接
关联查询之等值连接
-
格式: select * from A,B where A.x=B.x(关联关系) and A.age>30;
-
查询1号部门每一个员工的姓名和对应的部门名
select e.ename,d.dname
from emp e,dept d
where e.deptno=d.deptno and e.deptno=1;
-
查询工资高于2000的员工姓名/工资和工作地点(部门地点)
select ename,sal,loc
from emp e,dept d
where e.deptno=d.deptno and e.sal>2000;
关联查询之内连接
-
和等值连接作用一样, 查询的是两张表的交集数据
-
格式: select * from A,B where A.x=B.x(关联关系) and A.age>30;
-
格式: select * from A join B on A.x=B.x(关联关系) where A.age>30;
-
查询1号部门每一个员工的姓名和对应的部门名
select ename,dname
from emp e join dept d
on e.deptno = d.deptno
where e.deptno=1;
关联查询之外连接
-
查询的是一张表的全部和另外一张表的交集
insert into emp (empno,ename) values(100,'Tom');
-
格式: select * from A left/right join B on A.x=B.x(关联关系) where A.age>30;
-
查询所有员工的名字和对应的部门名
select e.ename,d.dname
from emp e left join dept d
on e.deptno=d.deptno;
关联查询总结:
-
如果查询的是两张表的交集数据使用等值连接或内连接(推荐)
-
如果查询的是一张表的全部和另外一张表的交集则使用外连接
JDBC
-
Java DataBase Connectivity: java数据库连接
-
学习JDBC主要学习的就是如何通过java代码执行SQL语句
-
JDBC实际上是Sun公司定义的一套用户和各种数据库软件进行连接的API(Application Programma Interface应用程序编程接口)
-
为什么使用JDBC, 如果没有JDBC Java程序员连接每一种数据库都需要学习一套全新的方法, Sun公司为了避免出现这种情况 定义出了一套JDBC接口里面是一堆方法的声明,各个数据库厂商根据此接口里面的方法声明写各自的实现类(驱动),这样Java程序员只需要掌握JDBC接口中方法调用 即可访问任何数据库.
如何使用JDBC
-
创建一个maven工程
-
把MySQL相关jar包的坐标信息写到pom.xml文件中
<!-- 连接MySQL数据库的依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.15</version> </dependency>
-
创建Demo01.java
//1.注册驱动 告诉编译器使用的数据库是什么 Class.forName("com.mysql.cj.jdbc.Driver"); //2.获取连接对象 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/newdb3?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true", "root","root"); System.out.println(conn); //3.创建SQL执行对象 Statement s = conn.createStatement(); //4.执行SQL语句 String sql = "create table jdbct1(name varchar(10),age int)"; s.execute(sql); System.out.println("创建完成!"); //5.关闭资源 conn.close();
Statement执行SQL语句的对象
-
execute(sql); 可以执行任何SQL语句 但是推荐执行DDL(数据库相关和表相关SQL语句)
-
executeUpdate(sql); 执行增删改相关的SQL语句
-
executeQuery(sql); 执行查询相关的SQL语句
总结
数据库相关SQL
查询所有: show databases;
创建数据库: create database db1 character set=utf8/gbk;
查询详情: show create database db1;
删除数据库: drop database db1;
使用数据库: use db1;
表相关SQL
查询所有表: show tables;
创建表: create table t1(name varchar(50),age int) charset=utf8/gbk;
查询详情: show create table t1;
查询表字段: desc t1;
删除表: drop table t1;
修改表名:rename table t1 to t2;
添加表字段: alter table t1 add 字段名 类型 first/after xxx;
删除表字段: alter table t1 drop 字段名
修改表字段: alter table t1 change 原名 新名 新类型;
数据相关SQL
插入数据: insert into t1(字段1名,字段2名) values(值1,值2),(值1,值2),(值1,值2);
查询数据: select * from t1 where 条件;
修改数据: update t1 set xxx=xxx where 条件;
删除数据: delete from t1 where 条件;
数据类型
1.整数 int(m) 和 bigint(m)
create table t1(name varchar(10),age int(10) zerofill);
2.浮点数 double(m,d)
m代表总长度 d代表小数长度23.532,m=5,d=3,decimal(m,d)是超高精度浮点数 只有涉及超高精度运算时使用
3.字符串
- char(m): m代表字符长度,固定长度m=10存"abc"占10字节省空间最大长度255
- varchar(m):可变长度,m=10存"abc"占3 节省空间,最大长度65535,建议保存255以内的字符串 超过255使用text
- text(m):可变长度 最大长度65535
4. 日期
- date 只能保存年月日
- time 只能保存时分秒
- datetime 默认值null 最大值 9999-12-31
- timestamp 时间戳默认值当前系统时间 最大值为2038-1-19
举例: create table t_date(t1 date,t2 time,t3 datetime,t4 timestamp);
insert into t_date values("2020-10-10",null,null,null);
insert into t_date values(null,"12:10:18","2018-11-16 15:33:23",null);
主键约束primary key: 唯一且非空
create table t3(id int primary key,name varchar(10));
主键约束+自增
create table t4(id int primary key auto_increment,name varchar(10));
is null 和 is not null
and和or
比较运算符 > < >= <= = != 和<>
in关键字 临界
between x and y 包含x和y
模糊查询like
_:代表1个未知字符
%:代表0或多个未知字符
以x开头 x%
以x结尾 %x
第二个是x _x%
包含x %x%
第2个是x倒数第三个是y _x%y__
排序 order by 字段名 asc升序(默认)/desc降序
分页查询limit
别名
select ename as '姓名' from emp;
select ename '姓名' from emp;
select ename 姓名 from emp;
数值计算 + - * / %
聚合函数
平均值avg(字段名)
最大值max(字段名)
最小值min(字段名)
求和sum(字段名)
计数count(字段名) count(*)
分组查询 group by 字段名
having
where后面只能写普通字段的条件, 聚合函数条件需要写在having后面, having写在group by的后面 要和分组查询结合使用
各个关键字的顺序
select * from 表名 where 普通字段条件 group by 分组字段 having 聚合函数条件 order by 排序字段 limit 跳过条数,请求条数;
子查询(嵌套查询)
查询工资最高的员工信息
select * from emp where sal=(select max(sal) from emp);
关联关系
一对一
一对多
多对多
表和表之间如何建立关系?
通过一个单独的字段指向另外一个表的主键,这个单独的字段称为外键.
关联查询
同时查询多张存在关联关系的表时,使用的查询查询方式称为关联查询
关联查询的方式有三种: 1. 等值连接 2.内连接 3. 外连接
关联查询之等值连接
格式: select * from A,B where A.x=B.x(关联关系) and A.age>30;
查询工资高于2000的员工姓名/工资和工作地点(部门地点)
select ename,sal,loc
from emp e,dept d
where e.deptno=d.deptno and e.sal>2000;
关联查询之内连接
和等值连接作用一样, 查询的是两张表的交集数据
格式: select * from A,B where A.x=B.x(关联关系) and A.age>30;
格式: select * from A join B on A.x=B.x(关联关系) where A.age>30;
查询1号部门每一个员工的姓名和对应的部门名
select ename,dname
from emp e join dept d
on e.deptno = d.deptno
where e.deptno=1;
关联查询之外连接
查询的是一张表的全部和另外一张表的交集
insert into emp (empno,ename) values(100,'Tom');
格式: select * from A left/right join B on A.x=B.x(关联关系) where A.age>30;
查询所有员工的名字和对应的部门名
select e.ename,d.dname
from emp e left join dept d
on e.deptno=d.deptno;
关联查询总结:
1. 如果查询的是两张表的交集数据使用等值连接或内连接(推荐)
2. 如果查询的是一张表的全部和另外一张表的交集则使用外连接
JDBC
- Java DataBase Connectivity: java数据库连接
- 学习JDBC主要学习的就是如何通过java代码执行SQL语句
- JDBC实际上是Sun公司定义的一套用户和各种数据库软件进行连接的API(Application Programma Interface应用程序编程接口)
- 为什么使用JDBC, 如果没有JDBC Java程序员连接每一种数据库都需要学习一套全新的方法, Sun公司为了避免出现这种情况 定义出了一套JDBC接口里面是一堆方法的声明,各个数据库厂商根据此接口里面的方法声明写各自的实现类(驱动),这样Java程序员只需要掌握JDBC接口中方法调用 即可访问任何数据库.
如何使用JDBC
1. 创建一个maven工程
2. 把MySQL相关jar包的坐标信息写到pom.xml文件中
```xml
<!-- 连接MySQL数据库的依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
```
3. 创建Demo01.java
```java
//1.注册驱动 告诉编译器使用的数据库是什么
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取连接对象
Connection conn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/newdb3?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
"root","root");
System.out.println(conn);
//3.创建SQL执行对象
Statement s = conn.createStatement();
//4.执行SQL语句
String sql = "create table jdbct1(name varchar(10),age int)";
s.execute(sql);
System.out.println("创建完成!");
//5.关闭资源
conn.close();
```
Statement执行SQL语句的对象
- execute(sql); 可以执行任何SQL语句 但是推荐执行DDL(数据库相关和表相关SQL语句)
- executeUpdate(sql); 执行增删改相关的SQL语句
- executeQuery(sql); 执行查询相关的SQL语句