首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

第二章《数据库的基本操作》

一、mysql默认安装的4个库: 1.information_schema:保存关于mysql服务器所维护的所有的其他数据库的信息,例如:数据库名、数据库中的表名; 2.mysql:记录数据库用户,权限,关键字等。mysql自己需要使用的控制和管理信息; 3.performance_schema:5.5版本新增一个库,用于手机服务器性能参数,且该库中所有的表的存储引擎均为performance_schema; 4.test:测试库,所有用户再test库里都有root权限(一般不会存储有用的信息再test库里) 二.1.创建数据库:create database databasename; databasename是指数据库名称 2.移动到指定的数据库里:use databasename; 3.删除数据库:drop database databasename; 其它用法 1、使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2、创建一个数据库MYSQLDATA mysql> CREATE DATABASE MYSQLDATA; 3、选择你所创建的数据库 mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!) 4、查看现在的数据库中存在什么表 mysql> SHOW TABLES; 5、创建一个数据库表 mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1)); 6、显示表的结构: mysql> DESCRIBE MYTABLE; 7、往表中加入记录 mysql> insert into MYTABLE values (”hyq”,”M”); 8、用文本方式将数据装入数据库表中(例如D:/mysql.txt) mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE; 9、导入.sql文件命令(例如D:/mysql.sql) mysql>use database; mysql>source d:/mysql.sql; 三,数据库的存储引擎: 1.什么是存储引擎:数据库的存储引擎是数据库的底层软件组件,数据库管理系统(Dbms)就是依赖存储引擎来对数据表进行创建,查询,更新和删除操作的。不同的存储引擎提供了不同的存储机制,索引技巧和锁定水平等功能。还可以获得某些特定的功能。现在不同的数据库的管理系统都支持多种不同的存储引擎。mysql的核心就是存储引擎。 2.MySQL的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在MySQL中不需要所有的表都使用同一种引擎,针对具体的需求每一张表都可以选择不同的存储引擎。 MySQL5.5支持的存储引擎有:InnoDB,MyiSAM,Memory,CVS等。 查看mysql中所有的存储引擎的命令:show engines\G Engine: PERFORMANCE_SCHEMA #引擎名称 Support: YES #mysql是否支持这种引擎 Comment: Performance Schema #mysql对它的评价 Transactions: NO #是否支持事务 XA: NO #是否支持事务的分布式 Savepoints: NO #事务的保存点 1.myisam存储引擎的特点: (1)myisam引擎读取速度快,占用资源少,不支持事务,不支持外键约束,但支持全文索引 (2)读写相互阻塞,也就是说读数据的时候就不能写数据,写数据的时候就不能读数据; (3)myisam引擎只能缓存索引,而不能缓存数据; (4)mysql5.5之前的默认引擎。 使用场景: (1)不需要事务支持的业务,例如银行转账就不适合用myisam引擎; (2)适用于读数据比较多的业务,不适用于读写频繁的业务; (3)并发相对较低的业务(纯读或者纯写的高并发也可以),数据修改相对较少的业务; (4)硬件资源比较差的机器可以考虑多使用myisam引擎。 2.InnoDB存储引擎的特点: (1)事物类数据表的首选引擎,支持事物安全表,支持行级别锁定和外键,mysql5.5之后的默认引擎; (2)具有提交,回滚和崩溃恢复能力的事物安全存储引擎,能处理巨大的数据量,性能及效率高,完全支持外键完整约束条件; (3)具有非常高的效的缓存特性,能缓存索引也能缓存数据,对硬件要求高, (4)使用InnoDB时,将在mysql数据目录创建一个名为ibdata的10M带大小的自动扩展文件,以及两个名为ib_logfile0和ib_logfile1的5M带大小的日志文件。 使用场景:

03

浅谈数据库设计技巧(上)(转)

转一篇他人写的数据库设计技巧,感觉也不一定都正确,开拓一下思路吧。 说到数据库,我认为不能不先谈数据结构。1996年,在我初入大学学习计算机编程时,当时的老师就告诉我们说:计算机程序=数据结构+算法。尽管现在的程序开发已由面向过程为主逐步过渡到面向对象为主,但我还是深深赞同8年前老师的告诉我们的公式:计算机程序=数据结构+算法。面向对象的程序开发,要做的第一件事就是,先分析整个程序中需处理的数据,从中提取出抽象模板,以这个抽象模板设计类,再在其中逐步添加处理其数据的函数(即算法),最后,再给类中的数据成员和函数划分访问权限,从而实现封装。   数据库的最初雏形据说源自美国一个奶牛场的记账薄(纸质的,由此可见,数据库并不一定是存储在电脑里的数据^_^),里面记录的是该奶牛场的收支账目,程序员在将其整理、录入到电脑中时从中受到启发。当按照规定好的数据结构所采集到的数据量大到一定程度后,出于程序执行效率的考虑,程序员将其中的检索、更新维护等功能分离出来,做成单独调用的模块,这个模块后来就慢慢发展、演变成现在我们所接触到的数据库管理系统(DBMS)——程序开发中的一个重要分支。   下面进入正题,首先按我个人所接触过的程序给数据库设计人员的功底分一下类:   1、没有系统学习过数据结构的程序员。这类程序员的作品往往只是他们的即兴玩具,他们往往习惯只设计有限的几个表,实现某类功能的数据全部塞在一个表中,各表之间几乎毫无关联。网上不少的免费管理软件都是这样的东西,当程序功能有限,数据量不多的时候,其程序运行起来没有什么问题,但是如果用其管理比较重要的数据,风险性非常大。   2、系统学习过数据结构,但是还没有开发过对程序效率要求比较高的管理软件的程序员。这类人多半刚从学校毕业不久,他们在设计数据库表结构时,严格按照教科书上的规定,死扣E-R图和3NF(别灰心,所有的数据库设计高手都是从这一步开始的)。他们的作品,对于一般的access型轻量级的管理软件,已经够用。但是一旦该系统需要添加新功能,原有的数据库表差不多得进行大换血。   3、第二类程序员,在经历过数次程序效率的提升,以及功能升级的折腾后,终于升级成为数据库设计的老鸟,第一类程序员眼中的高人。这类程序员可以胜任二十个表以上的中型商业数据管理系统的开发工作。他们知道该在什么样的情况下保留一定的冗余数据来提高程序效率,而且其设计的数据库可拓展性较好,当用户需要添加新功能时,原有数据库表只需做少量修改即可。   4、在经历过上十个类似数据库管理软件的重复设计后,第三类程序员中坚持下来没有转行,而是希望从中找出“偷懒”窍门的有心人会慢慢觉悟,从而完成量变到质变的转换。他们所设计的数据库表结构有一定的远见,能够预测到未来功能升级所需要的数据,从而预先留下伏笔。这类程序员目前大多晋级成数据挖掘方面的高级软件开发人员。   5、第三类程序员或第四类程序员,在对现有的各家数据库管理系统的原理和开发都有一定的钻研后,要么在其基础上进行二次开发,要么自行开发一套有自主版权的通用数据库管理系统。 我个人正处于第三类的末期,所以下面所列出的一些设计技巧只适合第二类和部分第三类数据库设计人员。同时,由于我很少碰到有兴趣在这方面深钻下去的同行,所以文中难免出现错误和遗漏,在此先行声明,欢迎大家指正,不要藏私哦8)   一、树型关系的数据表   不少程序员在进行数据库设计的时候都遇到过树型关系的数据,例如常见的类别表,即一个大类,下面有若干个子类,某些子类又有子类这样的情况。当类别不确定,用户希望可以在任意类别下添加新的子类,或者删除某个类别和其下的所有子类,而且预计以后其数量会逐步增长,此时我们就会考虑用一个数据表来保存这些数据。按照教科书上的教导,第二类程序员大概会设计出类似这样的数据表结构: 类别表_1(Type_table_1) 名称     类型    约束条件   说明 type_id   int   无重复   类别标识,主键 type_name   char(50) 不允许为空 类型名称,不允许重复 type_father int 不允许为空 该类别的父类别标识,如果是顶节点的话设定为某个唯一值   这样的设计短小精悍,完全满足3NF,而且可以满足用户的所有要求。是不是这样就行呢?答案是NO!Why?   我们来估计一下用户希望如何罗列出这个表的数据的。对用户而言,他当然期望按他所设定的层次关系一次罗列出所有的类别,例如这样: 总类别   类别1     类别1.1       类别1.1.1     类别1.2   类别2     类别2.1   类别3     类别3.1     类别3.2   ……   看看为了实现这样的列表显示(树的先序遍历),要对上面的表进行多少次检索?注

01

第二章《数据库的基本操作》

一、mysql默认安装的4个库: 1.information_schema:保存关于mysql服务器所维护的所有的其他数据库的信息,例如:数据库名、数据库中的表名; 2.mysql:记录数据库用户,权限,关键字等。mysql自己需要使用的控制和管理信息; 3.performance_schema:5.5版本新增一个库,用于手机服务器性能参数,且该库中所有的表的存储引擎均为performance_schema; 4.test:测试库,所有用户再test库里都有root权限(一般不会存储有用的信息再test库里) 二.1.创建数据库:create database databasename; databasename是指数据库名称 2.移动到指定的数据库里:use databasename; 3.删除数据库:drop database databasename; 其它用法 1、使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2、创建一个数据库MYSQLDATA mysql> CREATE DATABASE MYSQLDATA; 3、选择你所创建的数据库 mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!) 4、查看现在的数据库中存在什么表 mysql> SHOW TABLES; 5、创建一个数据库表 mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1)); 6、显示表的结构: mysql> DESCRIBE MYTABLE; 7、往表中加入记录 mysql> insert into MYTABLE values (”hyq”,”M”); 8、用文本方式将数据装入数据库表中(例如D:/mysql.txt) mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE; 9、导入.sql文件命令(例如D:/mysql.sql) mysql>use database; mysql>source d:/mysql.sql; 三,数据库的存储引擎: 1.什么是存储引擎:数据库的存储引擎是数据库的底层软件组件,数据库管理系统(Dbms)就是依赖存储引擎来对数据表进行创建,查询,更新和删除操作的。不同的存储引擎提供了不同的存储机制,索引技巧和锁定水平等功能。还可以获得某些特定的功能。现在不同的数据库的管理系统都支持多种不同的存储引擎。mysql的核心就是存储引擎。 2.MySQL的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在MySQL中不需要所有的表都使用同一种引擎,针对具体的需求每一张表都可以选择不同的存储引擎。 MySQL5.5支持的存储引擎有:InnoDB,MyiSAM,Memory,CVS等。 查看mysql中所有的存储引擎的命令:show engines\G Engine: PERFORMANCE_SCHEMA #引擎名称 Support: YES #mysql是否支持这种引擎 Comment: Performance Schema #mysql对它的评价 Transactions: NO #是否支持事务 XA: NO #是否支持事务的分布式 Savepoints: NO #事务的保存点 1.myisam存储引擎的特点: (1)myisam引擎读取速度快,占用资源少,不支持事务,不支持外键约束,但支持全文索引 (2)读写相互阻塞,也就是说读数据的时候就不能写数据,写数据的时候就不能读数据; (3)myisam引擎只能缓存索引,而不能缓存数据; (4)mysql5.5之前的默认引擎。 使用场景: (1)不需要事务支持的业务,例如银行转账就不适合用myisam引擎; (2)适用于读数据比较多的业务,不适用于读写频繁的业务; (3)并发相对较低的业务(纯读或者纯写的高并发也可以),数据修改相对较少的业务; (4)硬件资源比较差的机器可以考虑多使用myisam引擎。 2.InnoDB存储引擎的特点: (1)事物类数据表的首选引擎,支持事物安全表,支持行级别锁定和外键,mysql5.5之后的默认引擎; (2)具有提交,回滚和崩溃恢复能力的事物安全存储引擎,能处理巨大的数据量,性能及效率高,完全支持外键完整约束条件; (3)具有非常高的效的缓存特性,能缓存索引也能缓存数据,对硬件要求高, (4)使用InnoDB时,将在mysql数据目录创建一个名为ibdata的10M带大小的自动扩展文件,以及两个名为ib_logfile0和ib_logfile1的5M带大小的日志文件。 使用场景:

01
领券