• MySQL数据库


    一.数据库概念

    1.数据库类型

    关系数据库:MySQL,Oracle

    非关系数据库:NoSQL,MongoDB,CouchDB

    2.数据库模型

    • 对象模型
    • 层次模型(轻量级数据访问协议)
    • 网状模型(大型数据存储)
    • 关系模型
    • 面向对象模型
    • 半结构化模型
    • 平面模型(表格模型,一般形式上是一个二维数组,如表格型数据Excel)

    3.数据库架构

    大致区分为三个概括层次:内层,概念层和外层。

    • 内层:最接近实际存储体,有关数据的实际存储关系。
    • 外层:最近接近用户,有关个别用户观看数据的方式。
    • 概念层:介于两者之间的间接层

    4.数据库操作:事务

    事务(transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么不做,是一个不可分割的工作单位。事务的ACID特性:

    • 基元性(atiomicity)
    • 一致性(consistency)
    • 隔离性(isolation)
    • 持续性(durability)

    事务的并发性是指多个事务的并行操作轮流交叉运行,事务的并发可能会访问和存储 不正确的数据,破坏交易的隔离性和数据库的一致性。

    网状数据模型的数据结构 网状模型 满足下面两个条件的基本层次联系的集合为网状模型:

    1. 允许一个以上的节点无双亲。
    2. 一个节点可以有多于一个的双亲。

    二.关系型数据库

    1.如何使用终端操作数据库?

    1).如何登陆数据库服务器?

    mac:~ lyt$ mysql -uroot -p123456

    2).如何查询数据库服务器中所有的数据库?

    mysql> shoa databases;

    3).如何选中某一个数据库进行操作?

    未选中数据库报错:No database selected

    退出服务器命令:mysql> exit;

    在服务器中创建数据库:create database 数据库名pet;

    选中服务器:use 数据库名;

    查看数据库中所有的数据表:show table;

    创建数据表:CREATE TABLE 数据表名 (name VARCHAR(20),species VARCHAR(20), sex CHAR(1), birth DATE, death DATE) {注:=>数据字段 数据类型}

    查看数据表是否创建成功:show tables;

    查看创建好的数据表的结构:describe 数据库名pet;

    查看数据表中的记录:select * from 数据库名per;

    往数据表中添加数据:mysql> INSERT INTO 数据库名pet;-> VALUE ('hello','2000-12-13',NULL);

    再此查询数据表:select * fron 数据库名pet;

    再次插入数据表:

    INSERT INTO pet

    VALUES('name01','owner01','species01','boy','birtf',NULL);

    4).mysql常用数据类型有哪些?

    MySQl支持多种类型,大致分为三类:数值,日期/时间和字符串类型。

    数值类型:

    日期和时间类型:

    字符串类型:

    5).数据类型如何选择?

    日期选择按照格式

    数值和字符串按照大小

    6).如何删除数据?

    删除name01数据:delete from 数据库名pet where name='name01'; 

    7).如何修改数据?

    修改name01为name02:update 数据库名pet set name='name02' where owner='owner01'

    8).总结:数据记录的增删改查操作

    • 增加:insert
    • 删除:delete
    • 修改:update
    • 查询:select

    2.mysql建表约束

    1).主键约束

    能够唯一确定一张表中的一条记录,也就是通过给某个字段添加约束就可以是的该字段不重复且不为空。

    create table user( 创建user表

            id int primary key, 创建主键为id的user表

            name varchar(20)

    );

    出现主键重复报错:

    insert into user values(1,'张三')

    Dup;icate enter '1'for key 'PRIMARY'

    出现主键为空报错:

    insert into user values(NULL,'张三')

    Column 'id' cannot br null

    联合主键:

    只要联合组件加起来不重复就可以,每个字段都不能为空

    create table user2(

            id int,

            name varchar(20),

            password narchar(20),

            parimary key(id,name) id和name为联合主键

    )

    insert into user2 values(1,'张三','123')

    insert into user2 values(2,'张三','123')

    2).自增约束

    自增约束和主键约束一起使用,自动填充未传入主键。

    create table user3(

            id int primary key auto_incerment, 主键为auto_incerment

            name varchar(20)

    );

    insert into user3 (name) values ('张三') 插入name为张三的字段

    select* from user3;  查询输出:id:1,name:张三

    insert into user3 (name) values ('张三') 再次插入name为张三的字段select* from user3;  查询输出:id:2,name:张三

    如果在建表的时候忘记创建主键约束,该怎么办?

    create table user4(

            id int, 没有创建主键

            name varchar(20)

    );

    修改表结构,添加主键元素:alter table user4 add primarykey(id);

    修改表结构,删除主键元素:alter table user4 drop primary key;

    使用modify修改字段,添加主键元素:alter table user4 modify id int primary key;

    3).唯一约束

    唯一约束:约束修饰的字段的值不可以重复

    create table user5(

            id init,

            name varchar(20)

    );

    修改表结构给name字段添加唯一约束:

    name的key值为UNI:alter table user5 add unique(name)

    insert into user5 values(1,'张三')

    insert into user5 values(2,'张三')

    UIN出现重复报错:Duplicate entery '张三' for key 'name'

    create table user5(

            id init,

            name varchar(20)

    );

    建表时直接设置唯一约束:

    create table user6(

            id init,

            name varchar(20) unique

    );

    create table user7(

            id init,

            name varchar(20),

            unique(name)

    );

    联合唯一约束:

    create table user8(

            id init,

            name varchar(20),

            unique(id,name)

    );

    desc user8;输出id和name的key值为MUL,多个元素唯一约束时,key为MUL

    联合唯一约束组合在一起不重复

    insert into user8 values(1,'张三')

    insert into user8 values(2,'张三')

    12-约束-唯一约束-unique_哔哩哔哩_bilibili

    4).外键约束 

    5).非空约束

    6).默认约束

  • 相关阅读:
    Java——聊聊JUC中的线程中断机制 & LockSupport
    一文详解JackSon配置信息
    升级macOS系统到13之后git报错
    Spring cloud gateway 如何在路由时进行负载均衡
    Unity Meta Quest 一体机开发(七):配置玩家 Hand Grab 功能
    大数据Hadoop之——Apache Hudi 数据湖实战操作(Spark,Flink与Hudi整合)
    使用 Python 的高效相机流
    CentOS8中文乱码问题
    【深入理解Kotlin协程】协程的上下文 CoroutineContext
    Elasticsearch
  • 原文地址:https://blog.csdn.net/m0_65912225/article/details/134163574