【数据库知识点】

数据库知识点

1.关系型数据库

概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。
特点:

  1. 使用表存储数据,格式统一,便于维护。
  2. 使用SQL语言操作,标准统一,使用方便。
    非关系型数据库
    数据模型:

2.Navicat基础操作

a.SQL通用语法:
  1. SQL语句可以单行或多行书写,以分号结尾。
  2. SQL语句可以使用空格/缩进来争抢语句的可读性。
  3. MySQL数据库的SQL语句不区分大小写,关键字建议是用大写。
  4. 注释:
    单行注释:–注释内容或#注释内容
    多行注释:/注释内容/

b.SQL分类:

在这里插入图片描述
在这里插入图片描述

查询所有数据库
show databases;
select database();
create database asdf;
drop database asdf;
use dbe1;

创建表
create table 名字{
表头 类型 (comment后可加注释);
在这里插入图片描述

注意:创建最后一个语句一定不要加 ,
最后加不加分号都是可以的。

黑窗口打开数据库语句:mysql -uroot -p

展示当前页面所有表:show tables;

展示表:desc 表名;

***展示详细信息:***show create table 表名;

3. SQL

a.DDL-表操作-数据类型

MySQL中的数据类型有很多:数值类型,字符串类型,时间日期类型。
具体看黑马数据库第八节
:马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括_哔哩哔哩_bilibili

b.DDL-表操作-修改

**字段:纵列的列名:**如name,age。
添加字段:
alter table 表名 modify (如:add)字段名 类型(长度)【comment注释】【约束】(约束即是否为空);???
修改字段名和字段类型:
alter table 表名 change 旧字段名 新字段名 类型(长度);
删除字段名和字段类型:
alter table 表名 DROP 字段名;
修改表名:
alter table 表名 rename to 新表名;
删除表:
drop table【if exists】表名;
删除指定表并重新创建该表
truncate table 表名;

总结:
  1. DDL-数据库操作:
    当前有哪些数据库
    show databases

创建数据库的语法;
create databases 数据库名;

切换到某一个数据库;
use 数据库名;

查看当前处于哪一个数据库当中;
select databases();

删除数据库
drop databases数据库名;

  1. DDL-表操作:
    查看当前数据库所有的表
    show table;

创建表:
create table 表名(字段 字段类型,字段 字段类型);

查看表有哪些字段:
desc 表名;

查看表的建表语句:
show create table 表名;

alter table 表名 (add添加/modify修改字段类型/change修改字段及字段类型/drop删除字段/rename to …修改表名);
删除表
drop table 表名;

c.DML-插入

DML(Data Manipulation Language) (数据操作语言)用来对数据库中表的数据记录进行增删改操作。

添加数据

1给指定字段添加数据
insert into 表名(字段1,字段2,…)VALUES(值1,值2,…); (注意:逗号是小写)

2.给全部字段添加数据
INSERT INTO 表名 VALUES(值1,值2,…);

3.批量添加数据
INSERT INTO 表名(字段1,字段2,…),(值1,值2,…),(值1,值2,…),(值1,值2,…);
INSERT INTO 表名 VALUES(值1,值2,…),值1,值2,…),值1,值2,…);
注意:
插入数据时,指定的字段顺序需要与值的顺序一一对应的。
字符串与日期型数据应该包含在引号中。
插入的字段大小应该在字段的规定范围内。

修改数据

UPDATE 表名 SET 字段名1=值1,字段名2=值2,… (有空格)[WHERE 条件];
注意修饰语句的条件可以有也可以没有,如果没有条件,则会修改整张表的所有数据。
(值如果为char型)则应该为引号。
案例:

DML-删除数据:

delete from 表名 [where 条件];
注意:delete语句可以有where语句,也可以没有,但如果没有where语句则会删除整张表的所有数据。
delete不能删除某一个字段的值(可以使用update)。

d.DQL-查询

DQL(Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。
查询关键字:select
SELECT
字段列表(可加别名如: as ‘工作地址’)
FROM
表明列表 基本查询
WHERE
条件列表 条件查询
GROUP BY
分组字段列表
HAVING
分组后条件列表 分组查询(聚合函数)
ORDER BY
排序字段列表 排序查询
LIMIT
分页参数 分页查询

一.基础查询

1.查询指定字段name,age workno 返回:
select name,age,workno from 表名;

2.查询所有字段返回:
select name,age,…(全部的字段名)from 表名;
或者 select *(此处有无空格均可)from 表名;

3.查询所有员工的工作地址,起别名:(???)
select workadress as ‘工作地址’ from 表名;
或select workadress '工作地址’ from 表名;

4查询公司员工的上班地址(不能重复):
select distinct workaddress from 表名;

二DQL-条件查询

1.语法:select 字段列表 from 表名 where 条件列表;
2.条件
在这里插入图片描述

举例:
1.查询某一字段为空的整行信息
select * from 表名 where idcard is null;
反之:
select * from 表名 where idcard is not null;
2.查询姓名为两个字的员工信息
select * from 表名 where name like’__‘;
3.查询最后一位身份证号为x的员工信息
select * from 表名 where idcare link’%x’
select * from 表名 where idcare link’_________________x’;(前面有17个下划线);

三DQL-DQL-聚合函数

1.介绍
将一列数据作为一个整体,进行纵向计算。
2.常见聚合函数
在这里插入图片描述

3.语法
select 聚合函数(字段列表)from 表名;
举例:
1统计该企业的员工数量:
select count(*) from 表名;
select count(id)from 表名;
注意:null不参与count计算;
2统计西安地区员工的年龄之和
select sum(age) from 表名 where workadress=‘西安’;

四DQL-分组查询

1.语法
select 字段列表 from 表名 【where条件】 group by 分组字段 【having 分组后过滤条件】;
2.where与having的区别:
1执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
2判断条件不同:where不能对聚合函数进行判断,而having可以。
注意:
执行顺序:where>聚合函数>having。
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

五DQL-排序查询

1.语法
select 字段列表 from 表名 order by 字段1 排列方式1,字段2 排列方式2;
2.排序方式
asc:升序(默认值)
desc:降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序了。

六DQL-分页查询:

1语法
select 字段列表 from 表名 limit 起始索引,查询记录数;
注意
起始索引从零开始,起始索引=(查询页码-1)每页显示记录数。
分页查询是数据库的方言,不同的数据库有不同的实现,Mysql中是limit
如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。
案例:
1.查询年龄为20,21,22,23岁的女性员工信息。
select * from 表名 where age in(20,21,22,23);
2.查询性别为男,年龄在20至40岁以内的姓名为三个字的员工信息。
select * from 表名 where gender='男’and age between 20 and 40 and name like ‘___’;
3.统计员工表中年龄小于六十的,男性员工和女性员工的人数。
select gender,count(
) from emp where age<60 group by gender;
4.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序
select age,name from emp where age<=35 order by age asc,entrydate desc;
5 查询性别为男,年龄在20-40岁以内的前5个员工信息,对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序
select * from emp where gender=‘男’ and age between 20 and 40 order by age asc,entrydate asc limit 5;
DCL
DCL(data control Language(数据控制语言),用来管理数据库 用户,控制数据库的访问权限。
在这里插入图片描述

控制权限

在这里插入图片描述
在这里插入图片描述

4.函数

函数:是一段可以直接被另一段程序调用的程序或代码

1. 字符串函数在这里插入图片描述

2. 数值函数

在这里插入图片描述

3. 日期函数

在这里插入图片描述

4. 流程函数

在这里插入图片描述

4.约束

1. 概述:

  1. 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
  2. 目的:保证数据库中数据的正确,有效性和完整性。
  3. 分类:
    在这里插入图片描述

注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

2. 约束演示:

在这里插入图片描述

细节:当唯一约束重复时,数据不能添加,但会占用主键自增

3. 外键约束

在这里插入图片描述

删除/更新行为

图形化界面操作:
表上右击——modigy Table——Foreign Keys(1)——双击——Delete rule:——(选择要改内容);

小结:

  1. 非空约束:not null
  2. 唯一约束:unique
  3. 主键约束:primary key
  4. 默认约束:default
  5. 检查约束:check
  6. 外键约束:Foreign key

5.多表查询:

1. 多表关系

各个表之间也存在着各种联系,基本分为三种:

一对多

案例:部门与员工的关系
关系:一个部门对应多个员工,一个员工对应一个部门
实现:在多的一方建立外键,指向一的一方的主键

多对多

案例:学生与课程的关系
关系:一个学生可以选修多门课程,一门课程也可以共多个学生选择
实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

图形化界面;在表中右击——diagrams——第一个
或者ctrl+alt+shift+U

一对一

案例:用户与用户详情的关系
关系:一对一关系,多用于单表拆分,讲一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率

2. 多表查询概述

多表查询分类
连接查询
内连接:相当于查询A,B交集部分数据
外连接:
左外连接:查询左表所有数据,以及两张表交集部分数据
右外连接:查询右表所有数据,以及两张表交集部分数据
自连接:当前表与自身的连接查询,自连接必须使用表别名
子查询

在这里插入图片描述

3.内连接

内连接:相当于查询A,B交集部分数据

内连接查询语法:
隐式内连接

在这里插入图片描述

select 字段列表 from 表1,表2where 条件…;

显式内连接

在这里插入图片描述

select 字段列表 from表1 【inner】join表2 on 连接条件…;

4. 外连接

查询语法:
左外连接:select 字段列表 from 表1 left 【outer】 join 表2 on 条件…;
相当于查询表1(左表)的所有数据 包含表1和表2交集部分的数据
右外连接:select 字段列表 from 表1 right 【outer】 join 表2 on 条件…;
相当于查询表2(右表)的所有数据包含表1和表2交集部分的数据

5. 自连接

查询语法:
select 字段列表 from 表A 别名A join 表A 别名B on 条件…;
自连接查询,可以是内连接查询,也可以是外连接查询。
在这里插入图片描述

联合查询-union,unionall
对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。
select 字段列表 from 表A…
union[all]
select 字段列表 from 表B…;

注意:对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
union all会将全部的数据直接合并在一起,union会对合并之后的数据去重。

6.子查询

概念:SQL语句中嵌套select语句,称为嵌套查询,又称子查询。

select * from t1 where column1=(select column1 from t2);
子查询外部的语句可以是insert/update/delete/select的任何一个。
根据子查询结果不同,分为:
标量子查询(子查询结果为单个值)
在这里插入图片描述

案例:
在这里插入图片描述

列子查询(子查询结果为一列)
在这里插入图片描述

案例:

在这里插入图片描述

行子查询(子查询结果为一行)
在这里插入图片描述

案例:
在这里插入图片描述

表子查询(子查询结果为多行多列)

根据子查询位置,分为:where之后,from之后,select之后。

6.事务

1.事务简介

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么使用成功,要么同时失败。

2.事务操作

在这里插入图片描述

在这里插入图片描述

自动:

3.事务四大特性

  1. 原子性
  2. 一致性
  3. 隔离性
  4. 持久性

4.并发事务问题

在这里插入图片描述

5.事务隔离级别

在这里插入图片描述

关系代数:
具体记忆不太清了,以后重点再看一下

熟悉MySQL的数据类型、索引、主键和外键
·掌握MySQL的DML、DDL、DCL,重点掌握select语句的各种使用方式
掌握JDBC的使用
·理解和掌握MVC架构·
了解物理删除和逻辑删除
·了解数据的加密、解密方式
了解时间戳概念
Tomcat,Intellij使用,HTTP相关,Servlet,Cookie,和Session,jsp,javaBean,MVC,JDBC

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值