目录

数据库DataBase

SQL语言分类

DDL数据定义语言

数据库相关SQL

表相关SQL语句

DML数据操作语言

数据类型

主键约束

主键约束+自增

导入*.sql批处理文件

is null 和 is not null

去重 distinct

and和or

比较运算符 > < >= <= = != 和<>

in关键字

between x and y 包含x和y

模糊查询like

排序 order by

分页查询limit

别名

数值计算 + - * / %

聚合函数

分组查询 group by

各个关键字的顺序

having

子查询(嵌套查询)

关联关系

关联查询

关联查询之等值连接

关联查询之内连接

关联查询之外连接

关联查询总结:

JDBC

如何使用JDBC

Statement执行SQL语句的对象

总结


数据库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;

数据类型

  1. 整数 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;

  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));

    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

  1. 查询没有上级领导的员工信息

    select * from emp where mgr is null;

  2. 查询有上级领导的员工姓名和领导编号

    select ename,mgr from emp where mgr is not null;

去重 distinct

  1. 查询员工表中出现的不同的工作有哪些

    select distinct job from emp;

  2. 查询员工表中出现的部门编号 去掉重复

    select distinct deptno from emp;

and和or

  • and 类似java中的&&
  • or 类似java中的||
  1. 查询1号部门工资低于2000的员工信息

    select * from emp where deptno=1 and sal<2000;

  2. 查询3号部门或工作是程序员的员工信息

    select * from emp where deptno=3 or job='程序员';

  3. 查询有上级领导的员工中工资小于2000的员工姓名,工资和领导编号

    select ename,sal,mgr from emp where mgr is not null and sal<2000;

比较运算符 > < >= <= = != 和<>

  1. 查询不是程序员的员工中工资小于等于1600的员工信息

    select * from emp where job !='程序员' and sal<=1600;

    select * from emp where job <>'程序员' and sal<=1600;

in关键字

  1. 查询工资为3000,1500,5000的员工信息

select * from emp where sal=3000 or sal=1500 or sal=5000;

select * from emp where sal in(3000,1500,5000);

  1. 查询工资不是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

  1. 查询工资在1000到2000之间的员工信息

    select * from emp where sal between 1000 and 2000;

  2. 查询工资在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_
  1. 查询名字中包含悟字的员工姓名

    select ename from emp where ename like "%悟%";

  2. 查询工作中第二个字是售 的员工信息

    select * from emp where job like '_售%';

  3. 查询名字中以精结尾的员工姓名

    select ename from emp where ename like '%精';

  4. 查询姓孙的员工信息

    select * from emp where ename like '孙%';

排序 order by

  • 格式: order by 字段名 asc升序(默认)/desc降序
  1. 查询每个员工的姓名和工资 按照工资升序排序

    select ename,sal from emp order by sal;

  2. 查询每个员工的姓名和工资,按照工资降序排序

    select ename,sal from emp order by sal desc;

  • 多字段排序; 在order by后面写多个字段用逗号分隔
  1. 查询每个员工的姓名工资和部门编号,按照部门编号升序排序 如果部门编号一致则按照工资降序排序

    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

  1. 查询员工姓名和工资按照工资降序排序查询前三条

    select ename,sal from emp order by sal desc limit 0,3;

  2. 查询第二页的4条数据

    select * from emp limit 4,4;

  3. 查询第3页的3条数据

    select * from emp limit 6,3;

  4. 查询最惨员工信息(工资最低)

    select * from emp order by sal limit 0,1;

别名

  • 对查询的字段名起一个新的名字

select ename as '姓名' from emp;

select ename '姓名' from emp;

select ename 姓名 from emp;

数值计算 + - * / %

  1. 查询每个员工的姓名 工资和年终奖(年终奖=5个月的工资)

    select ename,sal,5*sal 年终奖 from emp;

  2. 查询1号部门员工的姓名/工资和涨薪5块钱之后的工资

select ename,sal,sal+5 涨薪后 from emp where deptno=1;

聚合函数

  • 对查询的多条数据进行统计查询
  • 统计方式: 求平均值, 最大值,最小值, 求和, 计数
  1. 平均值avg(字段名)

    • 查询2号部门的平均工资

      select avg(sal) from emp where deptno=2;

    • 查询程序员的平均工资

      select avg(sal) from emp where job='程序员';

  2. 最大值max(字段名)

    • 查询1号部门的最高工资

      select max(sal) from emp where deptno=1;

  3. 最小值min(字段名)

    • 查询销售的最低工资

      select min(sal) from emp where job='销售';

  1. 求和sum(字段名)

    • 查询销售工作的工资总和

      select sum(sal) from emp where job like '%销售%';

  2. 计数count(字段名) count(*)

    • 查询1号部门员工人数

      select count(*) from emp where deptno=1;

分组查询 group by

  • 格式: group by 字段名
  • 以分组字段相同值的数据为一组 进行统计查询
  1. 查询每个部门的平均工资

    select deptno,avg(sal) from emp group by deptno;

  2. 查询每个部门的最高工资

    select deptno,max(sal) from emp group by deptno;

  3. 查询每种工作的人数

    select job,count(*) from emp group by job;

  4. 查询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的后面 要和分组查询结合使用

  1. 查询每个部门的平均工资要求只查询平均工资大于2000的信息

select deptno,avg(sal) from emp group by deptno having avg(sal)>2000 ;

  1. 查询只有一个人的工作名称

    select job,count(*) c from emp group by job having c=1;

  2. 查询每个部门的工资总和,只查询有领导的员工,并且要求工资总和高于5400;

    select deptno,sum(sal) s from emp where mgr is not null group by deptno having s>5400;

  3. 查询每个部门的平均工资,只查询工资在1000到3000之间的,并且过滤掉平均工资低于2000的部门

    select deptno,avg(sal) a from emp where sal between 1000 and 3000 group by deptno having a>=2000;

  4. 查询每种工作的人数要求人数大于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. 查询工资高于1号部门平均工资的员工信息

select avg(sal) from emp where deptno=1;

select * from emp where sal>(select avg(sal) from emp where deptno=1);

  1. 查询工资最高的员工信息

    select max(sal) from emp;

    select * from emp where sal=(select max(sal) from emp);

  2. 查询工资高于2号部门最低工资的员工信息

    select min(sal) from emp where deptno=2;

    select * from emp where sal>(select min(sal) from emp where deptno=2);

  3. 查询和孙悟空相同工作的其它员工信息

    select job from emp where ename='孙悟空';

    select * from emp where job=(select job from emp where ename='孙悟空') and ename!='孙悟空';

  4. 查询拿最低工资员工的同事们的信息(同事指相同部门)

    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);

  5. 查询白骨精的部门信息(需要用到部门表)

    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. 查询1号部门每一个员工的姓名和对应的部门名

    select e.ename,d.dname

    from emp e,dept d

    where e.deptno=d.deptno and e.deptno=1;

  2. 查询工资高于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. 查询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;

  1. 查询所有员工的名字和对应的部门名

    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文件中

    <!-- 连接MySQL数据库的依赖 -->
    <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.15</version>
    </dependency>
  3. 创建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语句

Mysql数据库入门 (基础知识点 由来 各种指令 如何运用)相关推荐

  1. 《MySQL》入门基础知识点大全:数据库操作、增删改查、联表查询、常用函数、MD5加密、事务特性、隔离级别

    MySQL基础知识大全 1.操作数据库 1.1 创建表 1.2 修改表名 1.3 增加表的字段 1.4 修改表的字段 1.4.1 修改表的字段 1.4.2 修改表名 1.5 删除表的字段 1.6 删除 ...

  2. mysql数据库入门教程(5):多表操作(连接查询,子查询,分页查询,联合查询)

    前文介绍了单表查询:mysql数据库入门教程(4):查询讲解大全 今天介绍下多表查询 一.连接查询 含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询 先送上下面所讲用到的sql脚本 h ...

  3. MySQL数据库入门到高薪培训教程(从MySQL 5.7 到 MySQL 8.0)

    一.MySQL数据库入门到高薪培训视频教程(从MySQL5.7到MySQL8.0) 本套MySQL学习教程地址: https://edu.51cto.com/course/18034.html 为满足 ...

  4. 初识MySQL数据库(MySQL数据库的基础操作)

    初识MySQL数据库 前言 1.查询所有数据库 2.创建数据库 2.1指令1: 2.2指令2: 3.3指令3: 3.删除数据库 3.1指令1: 3.2指令2: 在这里插入图片描述 4.切换数据库 总结 ...

  5. pythonmysql数据分析_Python操作Mysql数据库入门——数据导入pandas(数据分析准备)...

    原标题:Python操作Mysql数据库入门--数据导入pandas(数据分析准备) 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求 ...

  6. centos7 mysql创建表_CentOS7 MySQL数据库入门 小白必看

    昨天网盾科技发布的一篇关于CentOS7配置ssh的文章,有很多小伙伴都收藏了,想必是对大家很有帮助,那么今天网盾科技再给大家分享一篇关于CentOS7配置MySQL数据库入门的文章,小白必看哟! l ...

  7. 【MySQL数据库入门】自关联

    文章目录 1. 自关联定义 2. 自关联举例 2.1. 需求 2.2. 设计 2.3. 简化 2.4. 结论 3. MySQL实现 3.1. 创建数据表 3.2. 批量插入数据 3.3. 演练 1. ...

  8. Linux下Mysql数据库的基础操作

    Linux下Mysql数据库的基础操作 一.Mysql数据介绍 二.数据库相关术语介绍 1.数据库相关名词 2.相关术语介绍 三.Mysql数据库的管理 1.创建数据库用户 2.查询用户状态 3.修改 ...

  9. mysql核心数据库_从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程...

    从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程 课程目录 (1) 01MySQL基础_课程引入.avi (2) 02MySQL基础_为什么学习 ...

  10. mysql数据库入门教程(11):视图讲解大全

    一.视图的介绍 含义:虚拟表,和普通表一样使用 mysql5.1版本出现的新特性,是通过表动态生成的数据 举例说明什么是视图:假设一个年级有10个班,上面有领导来啦,说要检查舞蹈功底,学校为了应付检查 ...

最新文章

  1. mysql 分区_搞懂MySQL分区
  2. 浏览器中唤起native app || 跳转到应用商城下载(二) 之universal links
  3. win8安装mysql8_windows安装mysql8详解
  4. maven(二)pom文件详解
  5. c++ 嵌套私有类_嵌套类和私有方法
  6. 高橋君とホテル / Tak and Hotels(AtCoder-2039)
  7. 测测你的显示器灰阶显示
  8. vs已停止工作的解决方案
  9. 强一致、高可用、自动容灾能力背后,阿里X-Paxos的应用实践
  10. 【数字信号】基于matlab CEEMD数字信号分解【含Matlab源码 1383】
  11. 微博三方登录账号注册
  12. 1.list倒叙输出
  13. 用 git 拉代码时报错:Git Pull Falied:You have not concluded your merge.Exiting because of unfinished
  14. 云计算、物联网、大数据到底是什么?
  15. 报Keystore was tampered with, or password was incorret的原因
  16. 三相全控tc787触发电路_开关电源常用的几种保护电路
  17. 轻量级网络:ResNeXt
  18. 继续当搬运工之人人网移动端架构解析
  19. 鼠标在用了一段之后偶然发现以给特别慢的速度移动鼠标,会在移动到可点击的选项按钮附近明显的卡住问题。
  20. Linux串口测试工具

热门文章

  1. 【C语言】从零开始的C语言小游戏之路(总)
  2. Android ImageView视图的七种图片缩放类型
  3. 百度 BAE 项目部署
  4. 私有CA搭建并将HTTPS应用于Tomcat、Springboot
  5. IDLE的介绍和使用
  6. java是牌子的眼镜多少钱一副_一副好眼镜的成本都去哪儿了?
  7. SVG 绘制可交互的中国地图
  8. 修改禅道使用的数据库
  9. zbox mysql_我服务器原来有apache和mysql,然后我把zbox的apache端口改成8000,mysql改成3307,无法打开网页...
  10. walking机器人仿真教程-应用-多点导航结合闹铃播放实现移动闹钟