数据库

来源:互联网 发布:在数据库里创建一个表 编辑:程序博客网 时间:2024/06/05 19:33

数据库

流操作的目的:完成磁盘数据和内存数据的转换。

数据库之所以好用是因为数据库有:DBMS。SQL语言大大提高搜索文件的能力。

DBMS:关系型数据库知识一个保存数据的容器,大多数数据库依靠一个称为数据库管理系统(Database Management System,简称DBMS)的软件来管理数据库中数据,管理关系型数据库的软件称为关系型数据库管理系统(Relational Database Management System,简称RDBMS)

SQL:SQL是结构化查询(Structured Qubry Language)的英文缩写,是一种用于管理关系型数据库,并与数据进行通讯的计算机语言。

SQL语句

数据定义语言(DDL)创建、修改、删除数据库的内部数据结构数据查询语言(DQL)用于数据库中数据的查询数据操作语言(DML)用于数据库中数据段修改,包括添加、删除、修改等数据控制语言(DCL)控制数据库访问权限。

关系数据库

关系模型把世界看作是由实体和联组成的。而关系型数据库是将数据库表作为实体,以数据库的主键和外键的关联关系描述联系的一种数据库结构。

一对一

一条主表记录对应一条从表记录,同时一条从表记录也对一条主表记录。

公民表                                 身份证表编号      姓名      生日                  编号      身份证号        公民ID    1       张三      1980-8-8                101     123456789   22       李四      1997-8-9                102     987654311   1

一对多

一对多:一条主表记录对应多条从表记录,同时,一条从表记录只对应一条主表记录。

公民表                             房间表编号      姓名      生日                  编号      房间地址        公民ID1       王五      1888-9-9                1       水碾河1号   12       赵六      1999-9-9                2       红星路2号   1                                     3      火车北站        1                                     4      磨子桥     1                                        5       科华南路        2

多对多

一条主表记录对应多条从表记录,同时一条从表记录对应多条主表记录。

老师表                             中间表                             学生表编号      老师姓名            老师ID        学生ID                编号      学生姓名1       张老师                 1           2                       1           苗文杰2       李老师                 1           3                       2           何元庆3       胡老师                 2           4                       3           蔡国庆                                2           3                       4           贾玲                                3           2                                3           4

mysql的数据类型

整型:int浮点型:float、double、decimal(10,2)//有效长度为10,保留两位小数。字符型:varchar(20)   //由20个字符组成日期类型:data、 

创建数据库

-- 创建数据库    //-- 两条横杠加空格    是数据库里的是注释CREATE DATABASE book;   //新建一个数据库,   选中+执行再刷新-- 删除数据库DROP DATABASE book;  //删除数据库    -- 创建表CREATE TABLE t_student( id INT PRIMARY KEY AUTO_INCREMENT, -- 编号  //     PRIMARY KEY定义当前列为主键。主键有两个特点,非空、不能重复。                  //  AUTO_INCREMENT     设置当前列为自动增长列,有DBMS为该列分配值,确保该列的值不重复    studentName VARCHAR(20), -- 学生姓名    sex VARCHAR(20), -- 性别 birthday DATE,   -- 生日 tel VARCHAR(20)  -- 电话);

删除数据

使用DELETE删除

不加WHERE条件的DELETE语句就能删除所有数据

使用TRUNCATE语句

直接删除表中所有数据、标准结构

TRUNCATE TABLE 表名

二者的区别

DELETE 会记录日志,意味着删除的数据还可以恢复,但是效率低,TRUNCATE 不会记录日志,删除后的数据不能恢复,但是效率更高。

SQL提供的聚合函数、聚合函数的分类:

COUNT:统计行数量
SUM:获取单个列的合计值
AVG:计算某个列的平均值
MAX:计算列的最大值
MIN:计算列的最小值

HAVING和WHERE的区别

二者都是过滤条件,WHERE运行在分组前,因此不能执行任何聚合函数,HAVING是运行在分组后,只能用做聚合函数的过滤。

SQL执行顺序

在基本的SQL学习中我们已经掌握到了SQL执行顺序,下面来看看加上分组后的SQL是执行顺序:

第一步:执行FROM
第二部:WHERE条件过滤
第三步:GROUP BY 分组
第四步:执行SELECT投影系列
第五步:HAVING条件过滤
第六步:执行ORDER BY排序

在分组查询中,能够查询的字段,只能够是分组字段和聚合函数。

数据完整性

为了防止垃圾数据的产生,从而影响数据库的执行效率!!!

可靠性+准确性=数据完整性。

数据完整性的分类

实体完整性——保证一行数据是有效的
  1. 主键约束
  2. 主键是表中一到多个列,主键列不能为空,也不能重复。一个表只能有一个主键
  3. 唯一约束
  4. 唯一约束是指给特定列的所有值必须唯一,该列在表中每一行的值必须唯一。他和主键约束的区别在于该别可以为空,并且可以在一张表中给多个列设置唯一约束。
  5. (不能存在两行一模一样的数据-主键作为约束不能重复,不能为null。而唯一约束可以为null)
域完整性——保证一列数据是有效的
  1. 为什么要域完整性
  2. -保证指定列的数据的有效性
  3. 什么叫域完整性
  4. -域完整性时指定列的输入有效性
  5. 实现方法
  6. - 非空约束:Not Null
  7. - 默认约束:Default
  8. - 检查约束:Check(MySQL不支持)
引用完整性——保证引用的编号是有效的

外键中出现数据,主键中必须出现

用户自定义完整性——保证自定义规则
CREATE TABLE t_man(    id INT PRINMARY KEY AUTO_INCREMENT,    manName VARCHAR(20) NOT NULL,    -- nut null 表示该列必须添加值,不能为null    sex VARCHAR(20) DEFAULT '男'   -- DEFAULT 表示如果该列不插入值,则以'男'插入,如果该列插入了值,就以插入的值为准);-- 房间表CREATE TABLE t_room(    id INT PRIMARY KEY AUTO_INCREMENT,    address VARCHAR(50),    price INT,    manId INT);--为房间表添加外键约束,fk_1是约束名称,该外键的值必须引用t_man中的id主键ALTER TABLE t_room ADD CONSTRAINT fk_1 FOREIGN KEY(manId)REFERENCES t_man(id);INSERT INTO t_room(address,pric,mainId)VALUES('火车南站11号',200000,3);   -- 3要报错,因为没有满足fk_1 的要求。                                                                        t_man的id只有1,2   这里 加3是不行的,必须加主表当中有的id。

两个表之间如果存在外界约束,那么删除主表记录时,由于有外键约束在,无法删除有从表记录引用的主表记录

这时,删除主表记录就有两种方式:
  1. 级联删除:将主表记录对应的从表记录先做删除,再删除主表记录

    DELETE FROM t_room WHERE manId=1;DELETE FROM t_man WHERE id=1;
  2. 外键设为空:将主表记录对应的从表记录外键设置为null,在删除主表记录

    UPDATE t_room SET manId=NULL WHERE manId=2;DELETE FROM t_man WHERE id=2;
外键域外键约束的区别

外键是指从表单某列预主表的某列存在衣服关系,

外键约束是指在外键关联主键上强制加上一个约束,如果违反该约束,则不允该条数据的修改。 【注意:没有建立外键约束不等于没有外键】

0 0
原创粉丝点击