数据库

什么是数据库
        数据库指的是管理数据的软件、工具,是一个文件系统,而不是额外存储数据的仓库
数据库的类型
        层次型:以上下级的层次关系来组织数据的一类数据库,类似倒悬树结构,早期的数据库采用
        网状型:通过网状关系连接组织数据,形成一张数据网复杂度高
        关系型:把数据看做一张二维表,由行和列组成,这也是普通人最容易理解的一种数据组织方式,因此变成目前主流
        非关系key-value型,是一种和内存数据库,适合存储高频访问的数据、对时间有要求的数据
 
主流的关系型数据库
        商用型:Oracle(甲骨文)、DB2(IBM)、SQL Sever(微软)
        开源型:MySQL、mariaDB
        桌面型:Access(微软) 通过界面操作
        嵌入式:SQLite、适合嵌入式移动设备使用的小型数据库
 
SQL 语句分类:
        数据控制语句DCL:
            用于用户权限的赋予、回收
        数据定义语句DDL:
            用于建立、修改、删除数据库对象(数据库、表、视图等)
        数据操作语句DML:
            用于改变表中数据(增、删、改)
        数据查询语句DQL:
            根据不同的条件来查询同一张、不同的表中的数据
        事物控制语句TCL:
            用于维护数据表的一致性的语句
 
SQL语句中的基础数据类型
        int
        double
            字段名 double(总位数,小数点后保留几位)
        datetime
        date
        CHAR 0~255 bytes    定长字符串
            存储性能更优,浪费空间
        VARCHAR 0-65536 bytes   变长字符窜
            存储性能较差,节约空间
 
MySQL数据库登录方式
    1、本地登录
        mysql -u用户名 -p密码   方便但有泄露密码风险
        mysql -u用户名 -p 回车  更安全,密码不显示
    2、远程登录
        先通过ssh或者telent 远程登录具有MySQL服务器
        再通过MySQL命令登录MySQL数据库
    3、客户端登录
        例如:MySQL WorkBench的登录(Ctrl+Enter执行单行)
    无论哪种登录,登录后都需要先 use 数据库名; 选择操作的数据库
 
数据定义语句DDL
1、创建表
    create table 表名(字段名 字段类型,...);

    -- 查看当前数据库中所有表名
    show tables;
    -- 查看表结构
    desc 表名;
    -- 查看创建该表的SQL语句
    show create table 表名;

    2、复制表结构创建
        create table 新表名 like 旧表名;    -- 不复制数据
   
    3、修改表结构
        -- 修改表名
        rename table 旧表名 to 新表名;
        -- 添加字段
        alter table 表名 add(字段名 字段类型,...);
        -- 删除字段
        alter table 表名 drop 字段名;
   
    4、删除表
        drop table 表名;    -- 数据、结构都删除

        truncate 表名;      -- 删除数据,保留表结构
 
数据操作语句DML
    1、插入数据
    -- 按照字段顺序插入数据
    insert into 表名 values(数据);  -- 必须按照字段顺序,若想要插入空值,写null
   
    -- 指定字段插入数据
    insert into 表名(字段名) values(数据);

    2、删除数据
    delete from 表名 [where 条件];
        -- SQL中所有数据比较可以直接用 = 进行
        注意:如果不写where条件,则整张表删除

    3、修改数据
    update 表名 set 字段名=新数据 [where 条件];
        注意:如果不写where条件,则整张表全部修改
   
    注意:Work Bench中需要把 Edit->Prefrence->SQL Editor->最后选项不打钩->重启->才能使用update、delete语句
 
数据查询语句DQL:
    select 字段名1,字段名2,... from 表名;
    -- * 在SQL中是通配符,能够通配代表所有字段
 
事务控制语句TCL:
    1、commit 提交
    默认下,在数据库中,当某一个用户操作了某一条数据时,只有它自己能够查询到结果,其他用户不能立即查看到变化,只有执行了commit语句后,其他用户才能看到变化
 
  2、MySQL中的自动提交
        -- 查看当前登录用户是否开启自动提交
        show variables like 'autocommit';
        -- 设置当前用户的自动提交
        set session autocommit=0 | 1;

        注意:MySQL中自动提交默认都是开启的,通过SQL语句关闭只能当前临时生效,如果想要长期设置,需要修改配置文件
   
    3、rollback
        当用户对数据修改,如果发现有错误,可以使用rollback返回上一次commit时的数据状态

        使用commit的好处:
        1、让数据库批量执行操作,提高数据库的操作效率
        2、降低磁盘的读写次数,提高磁盘寿命

    4、设置保存点 savepoint
        只使用rollback取消操作,会把全部的操作取消返回上一次commit状态,这样可能会浪费一部分有意义但不想commit的操作,可以设置savepoint,让rollback返回到指定的保存点
        savepoint 标签名;
        rollback to savepoint s1;   -- 返回到s1时的状态
 
排重 distinct
    在查询时,一个字段的值可能有多个重复的数据,通过distinct可以排除重复数据
    select distinct 字段名,... from 表名;
 
 
posted @ 2023-09-11 19:11  ycddqr  阅读(22)  评论(0)    收藏  举报