MySQL数据库详解
p.p2 { margin: 0; font: 14px “Yuanti SC Light”; color: rgba(0, 0, 0, 1); background-color: rgba(255, 255, 255, 1); min-height: 20px }
p.p3 { margin: 0; font: 14px “Yuanti SC”; color: rgba(0, 0, 0, 1); background-color: rgba(255, 255, 255, 1) }
p.p4 { margin: 0; font: 14px “Yuanti SC”; color: rgba(0, 0, 0, 1); background-color: rgba(255, 255, 255, 1); min-height: 20px }
span.s1 { font: 14px “Yuanti SC” }
p.p1 { margin: 0; font: 14px “Yuanti SC” }
1.数据库的定义:
数据库是存储数据的工具,并允许以某种方式创建,阅读,更新,和删除数据。
p.p1 { margin: 0; font: 14px “Yuanti SC” }
关系数据库:包含行和列的表。每一行均保存了有关特定实体的相关数据。每一列表示有关实体的一条信息。
p.p1 { margin: 0 0 10px; font: 14px “Yuanti SC” }
p.p2 { margin: 0; font: 14px “Yuanti SC”; color: rgba(50, 51, 51, 1) }
p.p3 { margin: 0 0 10px; font: 14px “Yuanti SC”; min-height: 20px }
p.p4 { margin: 0; font: 14px “Yuanti SC” }
span.s1 { color: rgba(0, 0, 0, 1) }
span.s2 { color: rgba(19, 110, 194, 1) }
常用关系型数据库:
Oracle:跨平台,多层次网络计算,支持多重工业标准,处理海量数据,性能优
DB2: IBM公司
Microsoft sqlServer:只能运行在windows平台,C/S结构可以使用ADO,OLEDB,ODBC连接,由于其易操作性及其友好的操作界面,深受广大用户的喜爱
MySql:mySql是开源的,是一个快速的、可靠的和易于使用的数据库服务器,MySQL服务器工作在客户/服务器或嵌入系统中
LAMP:Linux+Apache+MySql+PHP
一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台
选择标准:
首要的原则就是根据实际需要,另 一方面还要考虑游戏开发预算。现在常用的数据库有:SQL Server、My SQL、Oracle。其中MySQL是一个完全免费的数据库系统,其功能也具备了标准数据库的功能,因此,在独立制作时,建议使用。 Oracle虽然功能强劲,但它毕竟是为商业用途而存在的,目前很少在游戏中使用到。
2.数据库应遵守的范式:(规范)
第一范式:
1.每列必须有唯一的名称
2.行和列的次序无关紧要
3:每一列有单独的数据类型
4:不允许包含相同值的行
5:每一列包含一个单值
6:列不能包含重复的组
第二范式:
1:符合第一范式
2:所有的非键值字段依赖于所有的键值字段
不符合第二范式的例子: 表:学号, 姓名, 年龄, 课程名称, 成绩, 学分; 这个表明显说明了两个事务:学生信息, 课程信息; 存在问题: 数据冗余,每条记录都含有相同信息; 删除异常:删除所有学生成绩,就把课程信息全删除了; 插入异常:学生未选课,无法记录进数据库; 更新异常:调整课程学分,所有行都调整。
修正: 学生:Student(学号, 姓名, 年龄); 课程:Course(课程名称, 学分); 选课关系:SelectCourse(学号, 课程名称, 成绩)。
第三范式:
符合2NF
他不能包含传递相关性(指一个非键值字段的值依赖于另一个非键值的字段)
不符合第三范式的例子: 学号, 姓名, 年龄, 所在学院, 学院联系电话,关键字为单一关键字“学号“; 存在依赖传递: (学号) → (所在学院) → (学院地点, 学院电话) 存在问题: 数据冗余:有重复值; 更新异常:有重复的冗余信息,修改时需要同时修改多条记录,否则会出现数据不一致的情况 删除异常 修正: 学生:(学号, 姓名, 年龄, 所在学院); 学院:(学院, 地点, 电话)。
p.p1 { margin: 0; font: 18px “Yuanti SC” }
p.p2 { margin: 0; font: 18px “Yuanti SC Light”; min-height: 25px }
p.p3 { margin: 0; font: 18px “Yuanti SC Light” }
p.p4 { margin: 0; font: 18px “Yuanti SC Light”; color: rgba(4, 51, 255, 1) }
p.p5 { margin: 0; font: 18px “Yuanti SC Light”; color: rgba(4, 51, 255, 1); min-height: 25px }
p.p6 { margin: 0; font: 18px “Yuanti SC Light”; color: rgba(255, 38, 0, 1) }
span.s1 { color: rgba(0, 0, 0, 1) }
span.s2 { color: rgba(4, 51, 255, 1) }
span.s3 { color: rgba(255, 38, 0, 1) }
3.常用的SQL语句
1,创建表
CREATE 创建
TABLE 表
PRIMARY KEY主键 (标志符 身份证)打完人名后自动生成
AUTOINCREMENT自动增长
NOT NULL 非空
UNIQUE 唯一的
一般不写
CREATE TABLE Teacher1 (teacher_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, teacher_name TEXT,teacher_sex BOOLEAN)
[说明 表里有多少列 每列有多少行 3列 ]
CREATE TABLE Teacher2 (teacher_id INTEGER PRIMARY KEY AUTOINCREMENT, teacher_name TEXT,teacher_sex BOOLEAN)
2, 删除表
DROP 丢弃 扔到
DROP TABLE Teacher1
3,给表添加列
ALTER 改变 修改
ALTER TABLE Teacher2 ADD teacher_age INTEGER
4,插入数据
INSERT INTO Teacher VALUES(1,\’zhangsan\’,1)
INSERT INTO Students (name,sex)VALUES(\’zhangsan\’,0)
5,查询数据
SELECT 查询
* 全部
FROM
SELECT * FROM Students
SELECT * FROM Students WHERE number<10
SELECT * FROM Students WHERE number<10 OR sex=1
SELECT * FROM Students WHERE number<10 AND number>5
like 匹配
SELECT * FROM Students WHERE name like \’zhang%\’
SELECT * FROM Students WHERE name like \’zhang_\’
LIMIT 限制
从第六条开始 往后的15条
SELECT * FROM Students LIMIT 5,15
6,修改数据
UPDATE 更新
set 设置
UPDATE Students set name=\’lisi\’,sex=1 where number < 10 AND number>5
7,删除数据
DELETE 删除
DELETE FROM Students WHERE number > 25