JDBC数据库主要分为四大部分语言:
DDL:数据库定义语言,用来定义数据库,库表列等
DML:数据操作语言,用来定义数据库记录(数据)
DCL:数据控制语言,用来定义访问权限和安全级别
DQL:数据查询语言,用来查询记录(数据)
1.DDL语句,主要涉及表格结构
创建数据库--create datebase 数据库名 charset 字符集名(通常是utf8)
切换数据库--use 数据库名
查看数据库--show 数据库名
查看数据库定义信息--show create datebase 数据库名
删除数据库-- drop database 数据库名
- 单行:#注释内容
- 多行:/* 多行注释 */
创建表格(重点,高频)
create table 表名 (
字段名 类型(长度)【约束】
字段名 类型(长度)【约束】
。。。
);
其中经常使用的语句
id int primary key auto_increment;
其中
name varchar(30) not null,
修改表结构
运用alter语句
alter(影响)table 表格名字
如果想增加就在后面ADD( 新加的字段名称)‘dec’ 字段长度varchar(30)
修改字段类型modify ,可以修改列的长度还有约束
修改范围更大的是change,可以修改列名,长度,约束
格式:alter table 表格名字 change 旧列名新列名长度约束
alter table 表格名 drop 列名------>修改表删除列
2.DML语句
2.1插入用insert into 增加操作
insert into表格名字(可以挑选一部分属性) values(对应的值)
也可以直接进行 insert into 表格名字 values(所有的值)
用来修改指定条件的数据,将满足条件的记录指定列修改为指定值,此时的语句是update
2.2修改操作 用update进行修改表数据
update 表名 set 字段名 =值,字段名 =值
需要搜索有特定条件的地方时,采用where (比如想搜索某个列名=某个值的时候,可以进行筛选)
2.3删除操作用delete,这点区别于表格结构的drop
delete from 表名 [where 条件];
3.DCL模块
在实际生产中,我们的表格环境是多个表格相互关联,这就需要通过表格的主键进行约束
3.1主键约束的关键字
primary key
设置为主键的列有一下特点:
不能为null
同时数据唯一,不可重复
几种方式
添加方式一:在创建表时,在字段后面直接指定
create table 表格名字(
id int primary key ,(此时就可以添加了)
);
添加方式二:在constraint约束区域,去指定主键约束
需要先解释下什么叫做constraint约束区域,说白了就是创建表格之后与右边的括号之间的区域,这块区域可以添加约束,和平时的留白一样
constraint[名称] 列名primary key (通常还是给id进行添加)
constraint[名称] 可以省略
添加方式三:修改表结构,运用alter语句,这里注意和update语句区别开来,那个是针对列的
#ALTER TABLE persons DROP PRIMARY KEY->删除主键约束
自动增长列
1.关键字:auto_increment
2.使用:一般和primary key 一起使用
truncate和delete区别
delete 和 truncate区别
delete:如果在自增长的情况下删除,新添加的数据不会重新为主键编号
truncate:摧毁表结构,新添加的数据会重新为主键编号->直接将表删除,重新建表
主键会从1开始
非空约束
1.关键字:NOT NULL
2.特点:如果一个列设置为非空约束,此列中的数据不能是NULL
唯一约束
1.关键字:UNIQUE
2.特点:一个列被设置为唯一约束,此列中的数据不能重复
4.DQL语句
date query language
query:查询,也就是说这是一门查询语句
常用查询
最常用就是select * from 表格名字 where 限定条件(列名=需要寻找的值)
排序查询
1.关键字:order by
ASC:升序(默认)
DESC:降序
2.语法格式:
SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC;
3.注意
a.asc和desc不区分大小写
b.先排序,还是先查询?
先查询,后排序
我们一般会将排序写到sql的最后
sql语句执行顺序
select 字段名称/聚合函数 from 表名称 where 条件 group by 分组字段名称 having 对分组后条件 order by 字段名称
from where group by having select order by
先定位到要查询哪个表,然后根据什么条件去查,表确定好了,条件也确定好了,开始利用select查询
查询得出一个结果,在针对这个结果进行一个排序
聚合函数:针对于纵向查询的
sum(列名):针对指定的列进行求和
avg(列名):针对指定的列进行求平均值
count(列名):统计指定列不为NULL的记录行数;
max(列名):求指定列中的最大值
min(列名):求指定列中的最小值
分组查询
1.关键字: group by 后面跟的是按照哪一列进行分组
2.格式:
SELECT 字段1,字段2… FROM 表名 GROUP BY分组字段 HAVING 分组条件;
3.分组的秘诀(按照哪个列分组)
相同的为一组,不同的单独成一组
按照哪一列去分组,就看根据哪一列是否是相同的成为一组合并
4.HAVING 条件 用在分组之后
where 条件 用在分组之前
5.注意:分组要和聚合函数一起使用
分页查询
1.格式:select * from 表名 limit m,n
m:起始位置
n:每页显示多少条数据
2.注意:分页的时候起始位置都是从0开始
3.分页要掌握的参数:
-- 注意:下面是伪代码不用于执行
a.起始位置怎么计算 :(当前页-1)*每页显示条数
b.int curPage = 2; -- 当前页数
c.int pageSize = 5; -- 每页显示数量
d.int startRow = (curPage - 1) * pageSize; -- 当前页, 记录开始的位置(行数)计算
e.int totalSize = select count(*) from products; -- 记录总数量
f.int totalPage = Math.ceil(totalSize * 1.0 / pageSize); -- 总页数