SQL数据库基础知识巩固

SQL数据库基础知识

数据库,又称“电子化的文件柜”,是“按照数据结构来组织、存储和管理数据的仓库”,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

1.1-数据库分类

  • 关系型数据库: 关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。例如:Oracle和MySQL。

  • 非关系型数据库: NoSQL,(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。NOSQL典型产品有memcached (纯内存),redis(持久化缓存),mongodb(文档的数据库)

1.2-SQL之间的关系(服务器-数据库-表-数据)

一个数据库的服务器中有多个数据库,一个数据库中有多个表,
每个表有多个字段(字段和Java中类的属性是对应的),每一条记录对应是一个Java实例对象。

1.3-数据库的事务

事务就是作为单个工作单元而执行的一系列操作,如查询和修改数据等。

1.3.1事务必须满足的4个条件(特性)

  • 原子性:在事务中进行的修改,要么全部执行,要么全不执行。
  • 一致性:为了事务在查询和修改时数据不发生冲突。
  • 隔离性:隔离性是一种用于控制数据访问的机制,能够确保事务只能访问处于期望的一致性级别下的数据。
  • 持久性:在将数据修改写入到磁盘之前,总是先把这些修改写入到事务日志中。这样子,即使数据还没有写入到磁盘中,也可以认为事务是持久化的。

1.3.2事务隔离

事务的隔离性就是指,多个并发的事务同时访问一个数据库时,一个事务不应该被另一个事务所干扰,每个并发的事务间要相互进行隔离。

一般的数据库,都包括以下四种隔离级别:

  • 读提交(Read Committed):这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。这种隔离级别能够有效的避免脏读,但除非在查询中显示的加锁。“读提交”只能避免“脏读”,并不能避免。
  • 读未提交(Read Uncommitted):就是可以读到未提交的内容。因此,在这种隔离级别下,查询是不会加锁的,也由于查询的不加锁,所以这种隔离级别的一致性是最差的,可能会产生“脏读”、“不可重复读”、“幻读”。
  • 可重复读(Repeated Read):这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行,能够有效的避免“不可重复读”。不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。
  • 串行化(Serializable):这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。这种级别下,“脏读”、“不可重复读”、“幻读”都不会出现,但是执行效率非常差,性能开销也最大,所以基本没人会用。

2.1-数据库的数值类型

  • 数值型:TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE

  • 大数据型:BLOB(二进制文件)、TEXT(文本)

  • 字符串型:VARCHAR、CHAR

    ​ varchar和char的区别:

    ​ *varchar(经常使用)长度是可变的。name varchar(8)可以存入数据wangzhu(如果数据长度在范围之内,自动根据存放内容改变长度),但是如果存入wangguozhu就报错了;

    ​ *char长度是不可变的。name char(8)存入数据wangzhu,如果不够长度8用空格补全。(char效率高)

  • 逻辑型:BIT(对应boolean)

  • 日期型:

    ​ DATE:只包含日期

    ​ TIME:只包含时分秒

    ​ DATETIME:需要手动录入时间

    ​ TIMESTAMP:默认选择当前系统时间

    (datetime和timestamp包含日期和时分秒)

2.2- 数据库的常见字段属性

  • AUTO_INCREMENT 自动递增 自动在上一条记录的基础下自动增加。通常用来设计唯一主键 --index 必须是整数类型。 可以自定义设置自增起始值和步长。

  • NULL ,NOT NULL 空/非空 假设为not null,当不赋值时,就会报错。NULL ,如果不填写值,默认为null。

  • DEFAULT 默认 设置默认值。如果不指定该列的值,则会存在默认的值。

3.1-数据库的操作语句

3.1.1创建数据库

语法

(1)创建数据库:create database 数据库名称;

(2)创建指定字符集的数据库:create database 数据库名称 character set ‘字符集’;

(3)创建指定字符集并带校对规则的数据库(校对规则和编码是成对出现的):create database 数据库名称 character set ‘字符集’ collate ‘校对规则’;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值