目录
一,DBMS
二,SQL
三,数据库相关的 SQL 语句
1,查询所有数据库
2,创建数据库
3,查询数据库信息
4,删除数据
5,使用数据库
四,表相关的 SQL 语句
1,创建表
2,查询所有表
3,查询表信息
4,查询表字段
5,删除表
6,修改表名
7,添加表字段
8,删除表字段
9,修改表字段
五,数据相关 SQL
六,数据类型
七,主键约束 primary key
八,常用操作
1,比较运算符 > < >= <= = !=和<>
2,and和or not
3,between x and y 包含x和y
4,in 查询某个字段的值为多个值的时候使用in
5,去重distinct
6,模糊查询 like
7,排序 order by
8,分页查询 limit
9,别名
10,聚合函数
11,分组查询 group by
12,having
13,子查询(嵌套查询)
九,关联关系
1,关联查询
1.1,等值连接
1.2,内连接
1.3,外连接
十,JDBC
十一,Statement执行SQL语句的对象
十二,DBCP
十三,SQL注入
十四,带有预编译效果的执行SQL语句的对PreparedStatement
十五,SQL语句分类包含:
DBMS是DataBaseManagementSystem的简称,表示数据库管理系统,俗称数据库软件
常见 DBMS有:MySQL,MariaDB,Oracle,SQLServer,SQLite
SQL是Structured Query Language的简称,表示结构化查询语言, 让程序员和数据库软件进行交流
show databases;
create database 数据库名 charset=utf8/gbk;
show create database 数据库名;
drop database 数据库名;
use 数据库名;
注意:执行表相关和数据相关的 SQL 语句之前必须使用某个数据库
create table 表名(字段 1 名 类型,字段 2 名 类型)charset=utf8/gbk;
show tables;
show create table 表名;
desc 表名;
drop table 表名;
rename table 原名 to 新名;
#最后面添加格式:
alter table 表名 add 字段名 类型;
#最前面添加格式:
alter table 表名 add 字段名 类型 first;
#在 xxx 字段后面添加格式:
alter table 表名 add 字段名 类型 after xxx;
alter table 表名 drop 字段名;
alter table 表名 change 原名 新名 新类型;
插入数据: insert into 表名(字段 1 名,字段 2 名) values(值 1,值 2),(值 1,值 2),(值 1,值 2);
查询数据: select 字段信息 from 表名 where 条件;
修改数据: update 表名 set 字段名=值,字段名=值 where 条件;
删除数据: delete from 表名 where 条件;
● 整数:int(m) 和 bigint(m) ,bigint等效Java中的long,m代表显示长度 用来补零
● 浮点数: double(m,d) m代表总长度 d代表小数长度 例:23.645 m=5 d=3
● 字符串
○ char(m): 固定长度, m=5 存 "刘德华" 占5个字符长度, 执行效率略高, 最大值255
○ varchar(m):可变长度, m=5 存 "刘德华" 占3个字符长度,节省空间,最大值65535但是建议保存255以内的数据,超过255的建议使用text
○ text(m):可变长度, 最大值65535
● 日期 ○ date: 保存年月日
○ time: 保存时分秒
○ datetime: 保存年月日时分秒, 默认值为null, 最大值9999-12-31
○ timestamp:(时间戳:距离1970年1月1日的毫秒数)保存年月日时分秒,默认值为当前系统时间, 最大值2038-1-19
● 主键:表示数据唯一性的字段称为主键
● 约束:创建表时给表字段添加的限制条件
● 主键约束:限制主键的值 唯一且非空 主键约束+自增 primary key auto_increment
● 自增规则:从历史最大值基础上+1
● 查询多个条件同时满足时使用 and
● 满足一个条件时使用or
● _ : 代表1个未知字符
● %: 代表0或多个未知字符
● 格式: order by 字段名 asc升序(默认)/desc降序
● 格式: limit 跳过的条数,请求的条数(每页的条数) ● 跳过的条数=(请求的页数-1)*每页的条数
select 字段名 as '别名' from emp;
select 字段名 '别名' from emp;
select 字段名 别名 from emp;
可以对查询的多条数据进行统计查询,统计方式包括求平均值,求最大值,求最小值,求和,计数
平均值avg(字段名)
最大值max(字段名)
最小值min(字段名)
求和sum(字段名)
计数count(*)
可以将某个字段相同值的数据划分为一组, 然后以组为单位进行统计查询
where 后面只能写普通字段条件, 不能写聚合函数条件
having关键字专门用来写聚合函数条件的, 并且需要和分组group by结合使用, 写在分组的后面
把一条SQL语句嵌套到另外一条SQL语句中,称为子查询
关联关系指的是创建表时表和表之间存在的业务关系
标语表之间存在以下几种关系
一对一:有AB两张表, A表中的一条数据对应B表中的一条数据, 同时B表中的一条数据也对应A表中的一条数据.
一对多:有AB两张表, A表中的一条数据对应B表中的多条数据, 同时B表中的一条数据对应A表中的一条数据.
多对多:有AB两张表, A表中的一条数据对应B表中的多条数据, 同时B表中的一条数据也对应A表中的多条数据.
如何建立关系:
一对一: 在AB两张表中任意一张表里面添加一个建立关系的字段指向另外一张表的主键
一对多: 在AB两张表中,表示多的表中添加建立关系的字段指向另外一张表的主键
多对多: 在单独的关系表中添加两个建立关系的字段指向另外两张表的主键
同时查询多张表数据的查询方式称为关联查询
三种关联查询的方式:
等值连接
内连接
外连接
格式: select 字段信息 from A,B where A.x=B.x(关联关系) and 其它条件
内连接和等值连接作用一样, 查询到的是两个表之间的交集数据(有关系的数据)
内连接格式: select 字段信息 from A join B on A.x=B.x(关联关系) where 其它条件;
内连接和等值连接作用一样, 查询到的是两个表之间的交集数据
外连接查询的是一张表的全部和另外一张表的交集
格式: select 字段信息 from A left/right join B on A.x=B.x where 其它条件
Java DataBase connectivity: Java数据库连接
学习JDBC主要学习的是如何通过Java代码执行SQL语句
JDBC是Sun公司提供的一套专门用于Java语言和数据库软件进行连接的API(Application Programma Interface应用程序编程接口)
execute("sql"); 可以执行任意SQL语句, 推荐执行数据库相关和表相关的SQL
int row = executeUpdate("sql"); 此方法执行增删改相关的SQL语句. row代表生效的行数
ResultSet rs = executeQuery("sql"); 此方法专门用于执行查询相关的SQL语句, ResultSet是结果集对象, 里面装着查询回来的所有数据
rs.next()询问是否有下一条数据有返回true否则返回false 同时游标往下移动
DataBaseConnectionPool: 数据库连接池
作用: 是将连接重用,避免了频繁开关连接导致的资源浪费,从而提高执行效率
往传值的地方传递进来一些SQL语句的关键字,导致原有SQL语句的逻辑发生改变,这个过程称为SQL注入
SQL注入漏洞是后果非常严重的一个安全隐患, 工作中一定不能出现.
预编译指的是在执行SQL语句之前,创建PreparedStatement对象时对SQL语句进行编译, 此时会对SQL语句的语法格式进行校验,并且对SQL语句的语义进行锁死操作, 之后用户输入的内容只能以值的形式添加到SQL语句中, 这样的话不管用户输入的内容是什么都不会影响原有SQL语句的逻辑.从而避免了出现SQL注入的问题.
DDL:数据定义语言
DML:数据操作语言
DQL:数据查询语言
TCL:事务控制语言
DCL:数据控制语言