数据库
来源:互联网 发布:在数据库里创建一个表 编辑:程序博客网 时间: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排序
在分组查询中,能够查询的字段,只能够是分组字段和聚合函数。
数据完整性
为了防止垃圾数据的产生,从而影响数据库的执行效率!!!
可靠性+准确性=数据完整性。
数据完整性的分类
实体完整性——保证一行数据是有效的
- 主键约束
- 主键是表中一到多个列,主键列不能为空,也不能重复。一个表只能有一个主键
- 唯一约束
- 唯一约束是指给特定列的所有值必须唯一,该列在表中每一行的值必须唯一。他和主键约束的区别在于该别可以为空,并且可以在一张表中给多个列设置唯一约束。
- (不能存在两行一模一样的数据-主键作为约束不能重复,不能为null。而唯一约束可以为null)
域完整性——保证一列数据是有效的
- 为什么要域完整性
- -保证指定列的数据的有效性
- 什么叫域完整性
- -域完整性时指定列的输入有效性
- 实现方法
- - 非空约束:Not Null
- - 默认约束:Default
- - 检查约束: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。
两个表之间如果存在外界约束,那么删除主表记录时,由于有外键约束在,无法删除有从表记录引用的主表记录
这时,删除主表记录就有两种方式:
级联删除:将主表记录对应的从表记录先做删除,再删除主表记录
DELETE FROM t_room WHERE manId=1;DELETE FROM t_man WHERE id=1;
外键设为空:将主表记录对应的从表记录外键设置为null,在删除主表记录
UPDATE t_room SET manId=NULL WHERE manId=2;DELETE FROM t_man WHERE id=2;
外键域外键约束的区别
外键是指从表单某列预主表的某列存在衣服关系,
外键约束是指在外键关联主键上强制加上一个约束,如果违反该约束,则不允该条数据的修改。 【注意:没有建立外键约束不等于没有外键】
- 数据库
- 数据库
- 数据库
- 数据库
- 数据库
- 数据库
- 数据库
- 数据库
- 数据库
- 数据库
- 数据库
- 数据库
- 数据库
- 数据库
- 数据库
- 数据库
- 数据库
- 数据库
- SSH 环境配置(Strut2+Spring3.2+Hibernate3)
- Idea关于Module is not backed by gradle的问题
- Java面向对象设计
- XML
- Maven+SSM框架(Spring+SpringMVC+MyBatis) - Hello World
- 数据库
- localStorage存值取值以及存取JSON,以及基于html5 localStorage的购物车
- 数据库(1)
- Android JNI 概述
- 网络编程_2
- JSP 内置对象和域
- 三层架构
- 飞信2016 5.6.8820.0超级精简版
- c++第六次实验