一、基础操作--sql语句
启动MySQL:service mysql start
停止MySQL:service mysql stop
重启MySQL:service mysql restart
进入数据库:mysql -uroot -p
导出数据库:mysqldump -u 用户名 -p 数据库名 > 导出的文件名
创建数据库:
(1)、create database 数据库名称 字符集;
(2)、create schema 数据库名称 字符集
创建数据库,如果不存在就创建,存在的话不会报错但不会去创建数据库:
create database if not exists 数据库名称 字符集;
(3)、schema和database区别:
在MySQL中创建一个Schema好像就跟创建一个Database是一样的效果,在SQL Server和Orcal数据库中好像又不一样. 目前我只能理解,在mysql中 schema<==>database。
切换(进入)数据库:use 数据库名称;
删除数据库:drop database 数据库名称;
修改数据库字符集:alter database 数据库名称 字符集;
查看(展示)所有数据库:show databases;
筛选查找数据库并展示:show database like "db%" -->表示筛选展示以db开头的所有数据库
数据库帮助命令:help 命令关键字;
二、修改数据库默认储存引擎
数据库引擎有:ISAM、MyISAM、MEMORY、BLACKHOLE、 ARCHIVE、 InnoDB等等......
查看所有储存引擎:show engines;
查看数据库默认储存引擎:show variables like 'default%';
修改默认储存引擎:
(1)、在根目录/etc/mysql 下打开MySql配置文件my.cnf(或者mysqld.cnf.d/mysqld.cnf文件里)
(2)、在[mysqld]下添加设置默认储存引擎命令
default-storage-engine=InnoDB
(3)、重启数据库以后就可以正常使用了:service mysql restart;
三、IDE集成开发环境是什么?
简述:IDE(Integrated Development Environment),集成开发环境,是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。
四、MySql数据库系统自动创建的四张表是什么?
information_schema:
信息数据库,它提供了访问数据库元数据的方式,元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。
mysql:
核心数据库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。
performance_schema:
mysql 5.5 版本 新增了一个性能优化的引擎: PERFORMANCE_SCHEMA这个功能默认是关闭的:
需要设置参数: performance_schema 才可以启动该功能,这个参数是静态参数,只能写在my.ini 中 不能动态修改。
sys:
通过这个库可以快速的了解系统的元数据信息。
这个库确实可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助。
这个库是通过视图的形式把information_schema 和performance_schema结合起来,查询出更加令人容易理解的数据。
存储过程可以执行一些性能方面的配置,也可以得到一些性能诊断报告内容。
存储函数可以查询一些性能信息。
五、关系、关系模型、关系模式?
名词解释:
数据:数据就是数据库中存储的基本数据,比如学生的学号、学生的班级
数据库:存放数据的仓库
数据库管理系统:数据库软件,如MySQL、Oracle
数据库系统:数据库+数据库管理系统+应用程序+数据库管理员(大佬)
实体:客观存在的对象,比如一个学生,一位老师
属性:实体的特性,比如学生的学号、姓名、院系
码:可唯一标识实体的属性集。比如学号是学生的码,一个学号唯一标识一名学生。学号和课程号是成绩的码,因为学号和课程号唯一标识一门课程的成绩
实体型:对实体的描述,比如学生(学号,姓名,院系)
实体集:实体的集合
联系:实体集之间的关系。一名学生对应一个寝室(一对一),一个院系对应多名学生(一对多),多位教师对应多名学生(多对多)
关系:若干元组的集合,说白了就是指数据库表
关系模式:对关系的描述称为关系模式,最后会详细描述
关系模型:若干关系的集合,也就是一个数据库
属性(关系):相对于前面的属性的意义,这里特指数据库表中的某列
元组:一条数据库记录
分量:元组中某一属性值
域:一组具有相同数据类型的值的集合,是属性的取值范围,比如性别属性的域就是{男,女},学生学历属性的域就是{学士、硕士、博士、院士}
候选码:可唯一标识某一元组的属性组,属性组中各个属性缺一不可。【t_student】(学号,姓名,学院),姓名可能会重复,所以其中学号可以唯一标识一条记录,学号就是t_student的候选码。那么假设姓名不会重复,那么候选码就有学号和姓名两个。 又比如【t_grade】(学号,课程,成绩),其中一个学生可以有多条成绩记录,所以需要学号和课程号组合才可以唯一标识一条数据库记录,所以学号、课程号就是t_student的一个候选码。
超码:只要一个属性组可以唯一标识一个元组,那么就说这个属性组是超码 【t_student】(学号,姓名,学院),姓名可能会重复,所以(学号)是一个超码同时也是候选码,(学号,姓名)可唯一标识一个元组,所以其也是超码,但不是候选码,因为少了姓名也可以唯一标识。
主属性:候选码中的属性称为主属性。【t_student】(学号,姓名,学院),学号就是主属性
非主属性:不是主属性就是非主属性呗。【t_student】(学号,姓名,学院),姓名、学院就是非主属性
全码:极端情况下表的所有属性组成该表的候选码,则称为全码
主键/主码:primary key,一个表可能有多个,往往选中一个作为主键
外键/外码:foreign key,假设表A的某个属性attr是另一表B中的主码,且A和B有某种联系,则称attr是外码
参照表:外码所在的表
被参照表:外码所引用(foreign key references)的表
数据完整性:数据完整性就是指数据的正确性和相容性(符合逻辑),又分为实体完整性、参照完整性、用户自定义完整性
实体完整性:主码唯一且不为空
参照完整性:不允许引用不存在的实体。参照表插入某条记录,这条记录的外码在被参照表中必须存在
用户自定义完整性:由用户自定义的数据约束。比如性别只能用男、女表示,人的年龄在0-120之间。常见的用户自定义完整性有NOT NULL,UNIQUE,CHECK等
内模式:对数据库的物理存储结构和存储方式的描述,是数据库在数据库内部的存储方式。拿MySQL来讲,每建一个表,都会在文件系统上生成一个或多个文件,这些文件存储了数据、表信息、索引信息,这就称为内模式
模式:对内模式的抽象,即数据库
外模式:对模式的抽象,即用户直接使用的应用程序
外模式-模式映像:保证数据的逻辑独立性。当模式改变时(增加表,增加表的结构),可以保证外模式不变
模式-内模式映像:保证数据的物理独立性。当内模式改变时(比如MySQL切换了存储引擎),可以保证模式不变,从而外模式也不会变。
关系模式
关系模式是对关系的描述(有哪些属性,各个属性之间的依赖关系如何),模式的一个具体值称为模式的一个实例。模式反应是数据的结构及其联系,是型,是相对稳定的,实例反应的是关系某一时刻的状态,是值,是相对变动的。
想要查看t_student的关系模式?DESC t_student
想要查看t_student的关系实例?SELECT * FROM student
另外,关系模式有约定的数学表示,R(U,D,DOM,F),R指关系名,U指一组属性,D指域,DOM指属性到域的映射,F就是指数据依赖。举个栗子,假设一个学生表t_student,拥有属性学号,姓名,性别,学院,其数学表示如图。
关系模式例图
六、InnoDB、MyIsam区别?
简述:基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。