版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二部分 数据库第一章 数据库基础1.1 数据库优点降低数据的沉余度;更高的数据一致性;存储的数据可以共享;可以建立数据库所遵循的标准;便于维护数据完整性;1.2 关系模型关系模型把世界看作是有实体(Entity)和联系(Relationshap)组成的,所谓实体就是指在现实世界中客观存在并可相互区别的事物。实体所具有的某一特性称为属性。表是关系型数据库的核心单元,是数据存储的地方。主键(primary key):在关系型数据表中,用一个唯一的标识符来标识每一行,这个标示符就是主键.主键的属性不一定只有一个,只要能区分,多个也可以。外键(forergn key):是用来表达表和表之间的关联关系
2、。外键允许多个,不需要标识每一行。关系数据库的三种关系: 一对一关系 一对多关系 多对多关系:转成两个一对多关系,通过中间表或过度表转换。数据库管理系统(Database Manegement System 简称DBMS)1.3结构化查询语言(SQL)SQL(Structured Query Language):是一种用于管理关系数据库,并与数据库中的数据进行通讯的计算机语言。最新版本的SQL为SQL-2003.SQL语句作用:(1)数据定义语言(DDL)创建、修改、删除数据库的内部数据结构(2)数据查询语言(DQL)用于数据库中数据查询(3)数据操作语言(DML)修改数据(添加、删除、修改)
3、(4)数据控制语言(DCL)控制数据库访问权限 第二章 管理数据库和表2.1 管理数据库2.1.1 数据库的穿件和使用数据库名规则:建议使用英文和下划线组成.标识符不能使多用RDBNS的保留字。 不允许嵌入空格或其他特殊字符。数据库的创建:CREATE DATABASE 数据库名;激活数据库:USE 数据库名;删除数据库: DROP DATABASE 数据库命;2.2数据类型字符串数据类型:类型类型大小范围用途CHAR(N)N0-255字符型VARCHAR(N)N0-65535字符型2.3 管理表创建表的基础SQ语法: CREATE TABLE ();show DATABASES; - 显示所
4、有数据库删除表: DROP TABLE 表名;复制表:CREATE TABLE新表名 SELECT*FROM 原表名;复制表的同时表的约束不能复制查询表的结构:DESC 表名;查看表详细结构语句:SHOW CREATE TABLE 表名;修改表语句:添加新列: ALTER TABLE 表名 ADD 属性名类型;替换属性:ALTER TABLE 表名 CHANGE 需要改变的属性名 该变后的属性名类型;删除属性(列): ALTER TABLE 表名 DROP COLUMN 列名;修改表名:ALTER TABLE 旧表名 RENAME 新表名;修改属性的数据类型:ALTER TABLE 表名 MO
5、DIFY 属性名 属性数据类型;2.4管理索引索引是对数据库表中一列或多列的值进行排序的一种结果,使用索引可快速访问数据库表中的特定信息。创建索引:CREATE INDEX 索引名 ON 表名(列名一,列名二,。); 删除索引:ALTER TABLE 表名 DROP INDEX 索引名;索引的优点: 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 可以加快数据的检索速度,这也是创建索引的最主要原因 可以加速度表与表之间的连接,特别在数显数据的参考完整性方面有特别意义。 在使用分组和排序字句进行数据检索时,同样可以减少查询中分组和排序时间。 通过使用索引,可以再查询的过程中,使用优化
6、掩藏器,提高系统性能。索引的缺点: 创建索引和维护索引要消耗时间,这种时间随着数据量的增加而增加。 索引需要占用物理空间,除了数据表占用数据空间之外,每个索引还需要占用一定的物理空间,如果建立聚簇索引,那么需要的空间就很大。 当对表中的数据进行增加,删除和修改时,索引页要动态维护,这样降低了数据的维护速度。索引的使用原则: 不要索引数据量不大的表,对于小表来讲,来遍历的成本并不好。 不要创建过多的索引,在没有聚集索引的表中,最大可以创建249个非聚集索引,过多索引会占用更大的磁盘空间,而且在数据发生修改时,对索引的维护时特别消耗性能的。 合理应用复合索引,有某些情况下可以考虑创建含所有属性的覆
7、盖索引。 对经常使用范围查询的属性,可以考虑聚集索引。 避免对不经常用的属性,大字段属性创建索引。第三章 数据库的完整性数据完整性的分类3.1 实体完整性实体完整性:保证一行数据是完整的,行不重复。(1) 用主键约束,不能为空。指令:CREATE TABLEt_student(属性名 数据类型 PRIMARY KEY,-指定该属性为主键属性名 VARCHAR(50)方法二:CREATE TABLEt_student_bak(s_id数据类型,s_name VARCHAR(50) NOT XULL,PRIMARY KEY(s_id)-指定主键约束)(2)唯一约束(Unique Constrain
8、t):唯一约束是指定列的所有值必须是唯一,该列在表中每一行的值必须唯一,与主键的区别是该列可以为空,并且在一张表中给多个列设置约束。设置唯一约束:CREATE TABLE t_student(s_id int PRIMARY KEY,s_name VARCHAR(50) _increment);给已创建的表添加唯一约束:ALTER TABLE 表名 ADD UNIQUE(属性名);3.2 域完整性域完整性:保证一列数据是完整的。域的完整性是指定列的输入有效性。实现方法:非空约束:Not Null; 默认约束:Default; 检查约束:Chedk(MySQL不支持);设置非空约束:CREATE
9、 TABLE t_student(s_id int PRIMARY KEY,s_name VARCHAR(50) UNIQUE NOT NULL, s_age INT NOT NULL); 注意:非空约束默认为非空。设置默认值:CREATE TABLE t_student(s_id int PRIMARY KEY,s_name VARCHAR(50) UNIQUE NOT NULL, s_age INTs_gendar CHAR(2) DEFAULT男); 设置受检查约束:设置输入范围。3.3 引用完整性引用完整性:保证引用的编号是有效地。外键与主表数据保持一致。外键与外键约束没有直接关系。外
10、键是指从表的某列与主表的某列存在依附关系。外键约束是指在外键关联的主键上强制加上一个约束,如果违反,则不允许修改数据。注意:没有建立外键约束不等于没有外键。一个表中外键(FOREIGN KEY)指向另一个表中的主键(PRIMARE KEY)叫表的关联。MySQL有两种常用的引用引擎类型:MyISAM和InnoDB.目前只有后者引擎类型支持外键约束。查看数据库存储引擎: SHOW VARIABLES like%engine%;-设置外键约束 主键CREATE TABLE t_class(C_id INT PRIMARY KEY,C_NAME VARCHAR(50) UNIQUE NOT NULL
11、)ENGINE=INNODB;- 再创建从表 外键CREATE TABLE t_students(S_id INT PRIMARY KEY,S_C_id INT,S_NAME VARCHAR(50) UNIQUE NOT NULL,S_age INT,s_gendar CHAR(2) DEFAULT男,CONSTRAINT FOREIGN KEY(S_C_id)REFERENCESt_class(C_id)ENGINE=INNODB;3.4 用户自定义完整性用户自定义完整性:保证自定义规则。auto_increment来实现列的自动编号。加在需要自动编号的语句后面。可以设置从多少开始排auto
12、_increment=100;sex VARCHAR(4) CHECK(sex=男|sex=女) 设置是只能是男是女DEFAULT NOW(), 默认为当前时间3.5修改数据完整性(CONSTRAINT ) 创建约束名; CONSTRAINT 约束名 - 删除唯一约束- ALTER TABLE 表名 DROP CONSTRAINT 约束名;- 删除外键约束- ALTER TABLE 外键名 DROP FOREIGN KEY 约束名;- 增加约束- ALTER TABLE t_class CHANGE S_C_id INT PRIMARY KER;第四章 使用DML语句更改数据4.1 数据添加4
13、.1.1插入单行记录(INSERT)-不指定属性,表示需要插入所有的属性。 语法:INSERT INTO 表名 (属性列表) VALUES(值列表); 表示在某个属性列里添加 值; 注意:主键是自动编号,插入使用NULL; 属性有默认约束,插入时欲显示默认值,插入值只用DEFAULT; 插入的属性允许为空时,插入时不显示值,插入值使用NULL;同时插入多条数据(MYSQL):INSERT INTO 表名 (属性1,属性2,属性3) VALUES(值1,值2,值3);可以不写列名,但是值必须对应表中的所有属性类型。4.1.2 表数据的复制(ELECT*FROM ) 复制语法(都不能复制约束):一
14、起使用建表的方式复制:CREATE TABKE 新表名 SELECT*FROM 原表名;/复制表INSERT INTO 的方式复制:INSERT INTO 新表名 SELECT*FROM 原表名;/只复制数据4.2更改已有数据(UPDATE 表 set)(1)更新张三的属性为女UPDATE 表名 SET 性别=女 WHERE 姓名=张三;(2)将所有年龄小于18岁的同学增加3岁UPDATE 表名 SET 年龄=年龄+3 WHERE 年龄$id order by id asc dlimit 16、查询一条记录($id)的上一条记录 select * from table1 where id$id
15、 order by id desc dlimit 15.3 选择操作between/LIKE/IS null1.单条件选择查询 :SELECT 显示的属性,属性2 FROM 表名 WHERE 选择条件(如:sex=男)2.多条件选择查询:后面的过滤条件用(AND或or)连接条件1,条件2 也可以用:属性名 between 下线 and 上限 作为过滤条件。3.定义集合关系(IN 或NOT IN )SELECT 列A, 列B FROM 表名 WHERE 列C IN(值集合) 例如: SELECT * FROM person WHERE age IN(22,26,30) 查询年龄是22.36.30
16、岁的人员信息4.模糊查询 标准结构:SELECT 列A, 列B FROM 表名 WHERE 列C like 模式 通配符:“_“表示任何单个字符, ”%“ 表示包含另个或多个任意字符 例如:SELECT * FROM person WHERE name LIKE张 _ _;表示查询名字有三个字并且性张 张 %;表示性张的不限名字字数。5.处理空值数据 SELECT * FROM 表名 WHERE 属性 IS null(或者IS NOT NULL)- 判断属性是否为空。 注意不能直接用null进行判断,用nul返回的都是false运算符含义=用于检测值是否等于另一个值!=不等于=与!=类似与!=
17、类似如果第一个操作数大于第二个操作数为真=如果第一个操作数小于第二个操作数为真1990-01-01; - 查询1990-01-10之后出身的用户SELECT name FROM t_user WHERE money5000; - 查询存款大于5000的用户SELECT * FROM t_user LIMIT 4,4; - 查询第5行至第8行的数据SELECT COUNT(userId)AS 张三的车辆数 FROM t_bike WHERE userId=(SELECT id FROM t_user WHERE name=张三); - 查询张三的车辆数SELECT (SELECT NAME FR
18、OM t_user WHERE id=userId)AS 姓名 ,COUNT(userid)AS 车辆数,sum(money)AS 总价 FROM t_bike WHERE userId is NOT NULL GROUP BY userId; - 显示用户拥有的车辆数,和总价SELECT (SELECT NAME FROM t_user WHERE id=userId)AS 姓名 ,type FROM t_bike WHERE userId is NOT NULL ; - 每个用户拥有车辆信息SELECT type,money FROM t_bike WHERE money=(SELECT
19、MAX(money) FROM t_bike);- 显示最贵的自行车SELECT type , COUNT(userid)AS 车辆数 FROM t_bike GROUP BY type; - 显示每种车拥有的车辆数第八章 联接8.1 表联接(Join)表联接:多个表联合在一起实现查询效果。表联接原理:采用笛卡尔乘积,称为横向联接。UNION是纵向联接。笛卡尔乘积:是将两张表的所有数据相连,最后联接的结果数位两张表数量的乘积。(前表的每一列与后表的所有列乘)标准结构:SELECT 列1,列2 FROM 表1 join 表2 on 表1.列=表2.列;使用on关键字来确定其是否匹配。因为笛卡尔乘积会产生重复的行,所以可以通过on过滤重复的行8.2 表联接的分类1.内连接(inner join):内部联接两个表中的记录,仅当至少有一个同属于两个表的行符合联接条件是才返回行。也就是只要纪律不符合ON条件,就不会显示在结果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医学26年:透析患者心血管疾病管理 心内科查房
- 上海工程技术大学《安全检测与监控》2025-2026学年第一学期期末试卷(B卷)
- 上海工程技术大学《Android 开发技术课程设计》2025-2026学年第一学期期末试卷(B卷)
- 上海工商职业技术学院《安全管理学》2025-2026学年第一学期期末试卷(B卷)
- 小学生艺术启蒙说课稿
- 5.3 三角函数的图象与性质说课稿2025学年高中数学湘教版2019必修第一册-湘教版2019
- 上饶卫生健康职业学院《安全检测与监控》2025-2026学年第一学期期末试卷(A卷)
- 上饶卫生健康职业学院《Android 手机软件开发》2025-2026学年第一学期期末试卷(B卷)
- 上海音乐学院《安全科学与工程导论》2025-2026学年第一学期期末试卷(A卷)
- 医学26年:继发性中枢神经系统血管炎 查房课件
- 农村宅基地永久性转让合同书5篇
- 《轴承加工工艺流程》课件
- 养老护理员职业道德培训培训课件
- 2025年度化工企业安全生产技术改造合同范本
- 医院感染在养老院的管理与预防
- 选择性必修2《法律与生活》专练100题(1)(原卷版)
- 《高考饮食营养搭配》课件
- 附着式升降脚手架课件
- 2024年中国心脏脉冲电场消融系统(PFA)行业发展概况、市场全景分析及投资策略研究报告
- 职业技能竞赛互联网营销师(直播销售员)赛项考试题库500题(含答案)
- 厨房劳务承揽合同范本
评论
0/150
提交评论