MySQL数据库day01

本文介绍了数据库的基本概念,如为何需要数据库,数据库的类型,并重点讲述了关系型数据库,尤其是MySQL。同时,概述了SQL语言,包括其功能分类和数据类型。此外,还讲解了如何访问数据库,数据定义与操作语句,以及事务控制语句的重要性。
摘要由CSDN通过智能技术生成

一、数据库介绍

    1、为什么需要数据库

        a、计算机的资源是有限的,不可能把所有的数据存储在内存中,内存掉电后数据回丢失

        b、为了让数据在程序关闭重启后还能继续使用,必须把数据存储到磁盘的文件中

        c、随着程序的功能越来越复杂、数据越来越多,从文件中读取数据需要大量的重复性操作,

        从文件中读取指定的数据需要复杂的逻辑

        d、不同的程序它的数据不同、访问数据文件的操作也有所不同,意味着读写文件的代码不能复用

        e、所有程序员非常需要一个统一的、快速的访问磁盘数据的工具

        f、使用数据库时,程序员不需要自己管理数据,而是通过数据库提供统一的接口进行读写数据即可

            至于数据在数据库文件中如何保存、查找、修改等与程序员无关

    2、什么是数据库

        数据库指的是管理数据的软件,而不是存储数据的仓库

    3、数据库的类型

        层次型:以上下级层次关系组织数据的一种数据库,层次模型类似于树型结构,是早期的组织管理数据库

        网状型:把相互之间有关系的数据进行连接,形成一张数据网,适合复杂数据的存储

        关系型:就是把数据看作一张二维表,由行和列组成,这是普通人最容易理解和使用的一种数据组织方式

            因此关系型数据库获得了最后的胜利

        key/value型:目前比较流行的一种内存数据库,适合存储高频访问的数据、并且对时间有一定要求

    4、主流的关系型数据库

        商用型: OceanBase、Oracle、DB2、SQL Server

        开源型: MySQL、mariaDB、PostgreSQL

        桌面型: 以微软的Access为代表,可以通过界面操作数据库

        嵌入式: 以SQLLite为代表,适合嵌入式设备使用的小型数据库

二、SQL语言介绍

    1、什么是SQL

    SQL是结构化查询语言的缩写,是数据库的标准库的标准委员会提供,用于访问和操作数据的统一语言标准

        是所有的数据库都支持SQL语言,也就是说我们只需要学习SQL语言就能操作所有的数据

    虽然ANSI组织定义了统一的SQL语言标准,但是不同的数据库厂商对SQL的支持不同,甚至有的还添加自己新的语法

        把各种数据库中独有的SQL语法称为SQL的方言

    标准SQL语句不区分大小写(int或INT),但是自定义的标识符(表名)是区分大小的

    2、SQL语句的功能分类

        数据控制语句:用于权限的划分的回收

        数据定义语句:用于建立、修改、删除数据库对象(表、视图等)

        数据操作语句:用于改变表中的数据(增、删、改)

        数据查询语句:根据各种不同的条件进行查询数据

        事务控制语句:用于维护数据库的统一性

   

    3、SQL语句中的数据类型

    数值型:

        整型:

            TINYINT   1 Byte

            SMALLINT  2 Bytes

            MEDIUMINT 3 Bytes

            INT       4 Bytes

            BIGINT    8 Bytes

        浮点型:

            FLOAT     4 Bytes

            DOUBLE    8 Bytes

    日期\时间型:

        DATE        3   1000-01-01/9999-12-31

        TIME        3   '-838:59:59'/'838:59:59'

        YEAR        1   1901/2155

        DATETIME    8   1000-01-01 00:00:00/9999-12-31 23:59:59

        TIMESTAMP   4   1970-01-01 00:00:00/2038

    字符串型:

        CHAR        0-255 bytes

        VARCHAR     0-65535 bytes

        LONGTEXT    0-4 294 967 295 bytes

三、如何访问数据库

    1、本地访问

        mysql -u用户名 -p密码   方便但是容易泄漏密码

        mysql -u用户名 -p   建议这样登录

    2、远程登录

        先使用 ssh 或 telnet  远程登录MySQL服务器

            ssh 服务器用户名@ip地址 输入密码

        后通过 mysql -u用户名 -p 访问数据库

    3、客户端登录

        详情见数据库环境搭建

    注意:登陆后,一定要选择具体的数据库

        use 数据库名;

        use testDB;

        ctrl + Enter 快速执行选中的语句

四、数据定义语句

    1、创建表

        create table 表名(字段名 字段类型,...);

    2、查看表结构

        desc 表名;

    3、修改表

        --修改表名

        rename table 旧表名 to 新表名;

        --增加列

        alter table 表名 add(新字段名 字段类型);

        --删除列

        alter table 表名 drop 字段名;

    4、删除表

        --删除表数据,保留表结构

        truncate 表名;

        --删除表 包括数据和结构

        drop table 表名;

五、数据操作语句

    1、插入数据

    --按照全字段的顺序插入 必须完全相同

    insert into 表名 values(数据);

    --按照指定字段顺序插入

    insert into 表名(字段名) values(数据);

   

    2、删除数据

    delete from 表名 where 条件;

    --delete from stu where name="hehe";

    注意: 如果where不写,相当于删除整张表的数据

    注意: SQL中 = 就是等于号,数据都可以直接=比较

    3、修改数据

    update 表名 set 字段1=数据,字段2=数据 [where 条件];

    注意: 如果不写where,则整张表的数据都修改

六、数据查询语句

    select 字段名1,字段名2,... from 表名;

    -- * 在SQL语句中也是通配符,代表所有字段

    --select * from 表名;

七、事务控制语句

    1、commit 提交

    在数据库中,一个用户修改、插入一条数据时,只有它自己能查询到结果,其它用户不能立即看到,

        只有该用户执行commit语句后,其他用户才能看到

    注意:默认情况下会默认自动提交

    A转账1000元给B

    if(A余额>1000)

    {

        A-=1000;

        if(检查B是否存在)

        {

            B+=1000;

            commit;

        }

        else

        {

            取消

            //A+=1000;

        }

    }

    else

    {}

    2、rollback

    当用户对数据进行操作后,如果发现想要取消操作,可以使用rollback语句返回到上一次commit时的状态

    使用commit\rollback的优点:

    1、让数据库批量性提交操作,提高数据库的操作效率

    2、减少读写磁盘的次数,延长硬盘的使用寿命

    3、使用rollback可以撤销大量操作,提高效率

    3、MySQL的自动提交

    默认情况下,MySQL是自动进行commit

    --查询当前用户的自动提交是否开启

    show variables like 'autocommit';

    --关闭或开启当前用户的自动提交

    set session autocommit = 0 | 1;

    注意:这些修改都只能该当前次生效,想要永久生效要修改配置文件

    4、设置保存点

    使用rollback会取消commit后所有操作,这样就可能浪费一些有意义的操作,可以在某一个节点设置一个保存点,

        让rollback返回指定的保存点

    insert into stu values("h1",1,'x',1,"中国");

    savepoint s1;

    insert into stu values("h2",1,'x',1,"中国");

    savepoint s2;

    insert into stu values("h3",1,'x',1,"中国");

    savepoint s3;

    insert into stu values("h4",1,'x',1,"中国");

    savepoint s4;

    insert into stu values("h5",1,'x',1,"中国");

    select * from stu;

    rollback to savepoint s1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值