数据库基础知识总结 | 概念+基础用法

:该文章主要是总结的学习内容,感兴趣可以去看原视频28-复习_哔哩哔哩_bilibili

一、数据库相关概念

1、数据库:存储数据的仓库

存储方式:文件(一个表对应三个不同的文件)

2、数据库管理系统:用来管理数据库的软件(MySQL、oracle、db2、Sybase 、redis、MongoDB、HBASE、mecache、solidDB、sqlite、H2 database)

3、数据:数字、图片、视频、文件等等

二、数据库发展历史

文件型数据---》关系型数据库---》关系-对象型数据库

我们现在用的数据库通常是关系型数据库,方便软件的设计和实现,那什么是关系型数据库呢?

关系型数据库的概念

关系:一张符合特定要求的二维表(二维就是行和列)

:记录、实体

:字段、属性

关系型数据库:由二维表构成的数据库

关系之间的关系:表与表之间的关系(一对一、一对多、多对多)

数据库语言:数据库结构化语言

DDL:数据定义语言

DML:数据操作语言

DQL:数据查询语言

DCL:数据控制语言

三、连接数据库服务器

通过命令行链接数据库服务器

mysql -u root -p # root是用户名 根据实际情况改写

常用的参数:

-u:用户名

-p:输入密码

-h:跟IP地址

-p:跟默认端口号,默认3306

还有一种方式就是通过客户端navicat来连数据库服务器

四、常用语句

1、create命令

1、创建数据库

create database if not exists <dbname> character set utf8;

2、删除数据库

drop datadase <dbname>;

2、创建表

1、语法

create table <tbname>(

字段 数据类型(长度) 约束类型,

....... ,

字段 数据类型(长度) 约束类型

) engine-innodb

2、数据类型

1、数字类型整数 (tinyint、int、bigint)、小数 (float 7位小数 4字节、double 15位 8、decimal 30位 17)、定义方法 (age int(3))

2、字符串类型char(n) (0-255) 、varchar(n) (0-65535) 、text(n) (0-65535)、binary(n) (0-n)

3、日期

year(yyyy)

data(yyyy-mm-dd)

time(HH:MM:SS)

timestamp(yyyy-mm-dd HH:MM:SS)

datatime(yyyy-mm-dd HH:MM:SS)

4、二进制(现在用的较少)

3、约束类型

约束:为保证数据库中的数据的完整性、准确性设定的一些限制规则

1、主键约束: 数据表中的一个或者多个字段组合,用来唯一 标识一行记录,同时可以排序来提高查询的效率primary key

在指定的字段后加上primary key

复合主键

忘记加主键,后假如主键

2、非空约束:指定的字段的数据不能为空 not null

3、默认值约束default 可以给字段设置默认值,如果没有给字段赋值,就会自动使用默认值

4、自增长: 被约束字段在数据记录增加时候其值会自动递增,一般是搭配主键一起使用,并且一个表只能使用一个 auto_increment

5、检查约束:Mysql不支持检查约束,enum('v1', 'v2' ,...)set('v1', 'v2' ,...)

6、唯一约束: 被唯一约束字段,它的值不可重复,unique,(unique 不能和默认值一起使用)

7、外键约束

外键 :外键就是字段,是从表和主表之间建立关系的字段,foreign key references

例如下图 从表3绿色 的字段就是引用的主表 表1 表2黄色字段

主表:拥有主键的表,字段别其他的表引用的表就是主表

从表:引用其他表的主键字段的表就是被引用的表的从表

语法规则:

DML数据操作语言

**1、insert:**把数据插入到数据表中

语法 insert into <tbname>(字段列表) values(值列表) # 完整语法

insert into <tbnname> values(值列表) #简洁写法

insert into <tabname>(字段列表) values(值列表),(值列表),..... #批量插入数据

**2、update:**对数据表中的数据进行变更

语法:

update <tbname> set 字段名=值,字段名=值,......where 条件表达式

**注:**如果缺少where ,就会把整个表的字段值改为同一个

**3、delete:**删除表中的数据记录

语法:

delate from <tbname> where 条件表达式

DCl数据控制语言

**1、grant:**获取权限

grant <权限列表> 数据库.对象 to '用户名'@'允许登录的地址' identified by '密码'

:要用flush 来刷新权限

**2、revoke:**解除权限

revoke <权限列表> 数据库.对象 to '用户名'@'允许登录的地址'

三大范式

1、范式:normal format设计数据表的标准格式,设计数据库必须要按照这个标准来设计执行

2数据库范式

1、目前有6个范式,目前用的最多的只有3个

第一范式:

  • 表中的字段不可拆分

第二范式:

  • 表中每一行必须唯一(避免重复数据,数据冗余),非主键必须完全依赖主键()
  • 建表必须建主键,尽量用一个主键

第三范式:

  • 每列都和主键直接相关,而不是间接相关

DQL数据库语言

1、select :筛选数据

1 语法

select 字段名,字段名,...from 表名where 子句group by 分组字段order by 子句 limit分页条件

  • 最简单的查询:

* :代表返回表中的所有的字段

  • 有条件的查询:用where来限制范围

2、 order by排序

3、模糊查询 where like

4、查重 distinct

select distinct 字段列表 from tablenamewhere 子句

5、聚合函数:sum()、 count()、avg()、max()、min()

6、分组查询

7、having的用法

having和where的区别:

8、连接查询:涉及到多个表的时候就需要连接查询

连接查询 有内连接和外连接(左外连接、右外连接),

外连接:

内连接:只有两个表都匹配上的才显示

9、子查询:嵌入到其他 sql语句中的查询语句,通常作为数据源 、用来存放数据或者用来查询条件语句中的数据

**10、组合查询:**将多个查询的返回结果进行组合显示