数据库的简介以及基本操作

这篇博客介绍了数据库的基础知识,包括SQL语言的介绍、如何访问数据库、数据库控制语句的使用、数据定义与操作,以及事务控制。同时,详细阐述了表设计遵循的三范式,强调了无重复列、属性完全依赖于主键以及属性不传递依赖的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数据库

1、为什么需要数据库
    随着程序的功能越来越复杂,需要操作的数量也就是越来越大,管理数据就成了很大的问题,
    因为读写文件并接续数据需要大量重复的操作,并且从大量数据的增、删、改、查需要非常复杂的逻辑和耗时的操作

    如果程序都各自实现读写数据的代码,一方面效率低、容易出错,另一个方面是每个程序访问数据的接口、业务逻辑不同,所以代码可以复用

2、什么是数据库
    数据库可以看作是电子化的文件柜(存储电子文件的场所),用户可以对文件中的数据方便的增加、修改、删除、查询等操作
    注意:我们使用的是数据管理的软件,而不是存储数据的仓库

3、数据库的类型
    层次型数据库
        它的数据模型是上下级的层次关系,从数据结构上来看就是一颗树
    网状型数据库
        层次型数据库不足以表达更复杂的数据关系因此有了网状型数据库,他的数据模型是数据节点与节点之间链接起来,从数据结构上来看就是图形结构
    关系型数据库
        前两者普通人难以理解才有了关系型数据库
        可以把关系型数据库看作是二维表格,他的数据模式就相当于Excel表
    随着时间的推移和市场竞争,关系型获得了最终份额

4、目前主流的关系数据库
    商用数据库:Oracle Oceanbase DB2 SQL Server
    开源数据库:MySQL MariaDB
    桌面数据库:微软的Access为代表,适合桌面应用程序使用
    嵌入式数据库:SQLite为代表,适合手机、平板、可穿戴设备使用
    内存数据库:Redis,数据存储在内存中,所以访问速度非常快

二、SQL语言介绍

1、什么是SQL
    SQL是结构化查询语言的缩写,用于访问和操作数据库,既可以查询数据库中的输一局,也可以添加、删除、修改数据库中的数据,还可以对数据库进行管理和维护
    SQL语言被ANSI组织定义出一套统一的标准,也就是说有的数据库都支持SQL语言,但是不同的数据库对SQL语言进行了不同程度的扩展(我们把他们称为"方言"),
    也就是说如果只使用标准的SQL语言,理论上所有的数据库都可以使用,但如果使用了某个数据库的扩展,换到其他数据库上可能就不行了
    注意:大小写不影响

2、SQL中的语句分类
    数据控制语句:用于权限的授予和回收
    数据定义语句:用于建立修改、修改、删除数据库对象
    数据操作语句:用于改变数据库中的数据
    数据查询语句:用于查询所需要的数据 select
    事物控制语句:用来维护数据一致性的语句

3、SQL的数据类型
    数值型
        TINYINT 1字节 相当于有符号的char类型
        SMALLINT 2字节
        MEDIUNMINT 3字节
        INT 4字节
        BIGINT 8字节
        FLOAT 4字节
        DOUBLE 8字节
        DECIMAL(M,D) M范围 D小数点右侧的数目不得超过M
    字符型
        CHAR(n)     n:0~255   定长字符串,相当于定义char str[n]
        VARCHAR(n)  n:0~65535 变长字符串,n表示最多存储n个字节
    日期型
        DATA    3字节 日期值  格式YYYY-MM-DD
        TIME    3字节 时间值或持续时间 格式HH:MM:SS
        YEAR    1字节 年份值 格式:YYYY
        DATETIME    8字节 混合日期和时间值 格式:YYYY-MM-DD HH:MM:SS
        TIMESTAMP   4字节 时间戳 格式:YYYYMMDD HHMMSS

三、访问数据库

1、本地访问
    mysql -uuser -ppwd 会暴露密码
    mysql -uuser -p 可以隐藏的输入密码
2、远程访问
    先通过ssh、telnet命令远程登录搭建数据库,然后再登录数据库
    前提是服务器要开启ssh或telnet远程登录的功能
3、客户端访问
    MySQL Workbench

四、数据库控制语句

创建数据库:create database nameDB;
创建用户并授权 :grant all(select,insert,update,delete) privileges on nameDB.* to user@'*' identified by 'pwd';
刷新: flush privileges;
选择数据库:user nameDB;
注意:每次用户登录后,第一个操作就要选择要使用的数据库

五、数据定义语句

1、创建表
    create table 表名(字段名 字段类型,...);
    注意:语句不区分大小写,但表名、字段名区分大小写
    show tables;查看当前数据库中的所有表格
    desc 表名;查看表结构
    练习1:创建一个教师表
2、修改表
    修改表名:rename teble 旧表名 to 新表名
    增加列:alter table 表名 add(字段名 字段类型)
        注意:只能添加到末尾,不能插入到中间
    删除列:alter table 表名 drop 字段名 
    修改列:alter table 表名 modify 字段名 字段类型
3、删除表
    删除表数据,保留表结构 truncate 表名

六、表设计的三范式

1、无重复的列
如果列的数据重复,可以拆分成两张表

2、属性完全依赖于主键
如果一个字段与主键没有依赖关系,可能会导致其他字段的值重复

3、属性不能传递依赖于主键
如果一个字段与主键仅有依赖关系,也可能会导致其他字段的值重复

七、数据操作语言

1、插入数据
    插入一条完整的数据    
        insert into student values(字段值);
        字段值要与表结构一一对应
    插入一条不完整的数据
        insert into student(字段名) values(字段值);
        字段名要与字段值要一一对应

2、修改表数据
    修改所有行:update 表名 set 字段名 = 数据;
    修改部分行:update 表名 set 字段名 = 数据 where 条件;

3、删除表数据
    删除所有数据:delete from 表名;
        功能相当于 truncate 表名;
    删除符合条件的数据:delete from 表名 where 条件;

八、数据查询语言

select 字段1,字段2,... from 表名;
注意:*是SQL中的通配符,代表所有字段

九、事务控制语言

    什么是事物控制:在操作数据时需要让有关系的数据进行联动(一起有效、无效)
注意:数据定义语句立即有效,不需要事物控制,只有数据操作语句才需要事物控制

1、commit接交
    一个用户向表中插入一条记录,其他用户并不能立即查询到,只有执行了提交命令存才确定有效
    注意:MySQL数据库默认设置了自动提交
        查看是否开启自动提交:show variables like 'autocommit'
        autocommit OFF
        set session autocommit=0|1;     //开启或关闭当前链接的自动提交 临时的
        set global autocommit=0|1;      //所有用户的

2、rollback回滚
    当使用数据操作语句时 对数据进行更改时,如果还没有使用commit,那么可以使用rollback撤销,把数据还原成修改前的样子

3、savepoint保存点
    默认情况下执行rollback语句,数据会回到最近一次的commit,设置保存点可以在rollback时返回到指定的位置
        操作1
            savepoint sp1;
        rollback to savepoint sp1;
        假设依次设置了1,2,3个savepoint如果先rollback到第一个,是无法再rollback到第二第三个的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值