关系型数据库是基于关系代数模型发展而来。常用的数据库有SQL Server、MySQL、Oracle等,我们后续学习都以MySQL为主。关于什么是关系代数模型我们后面会为大家解释。
数据库是逻辑上的概念,它是一堆互相关联的数据,放在物理实体上,是一堆写在磁盘上的文件,文件中有数据。这些最基础的数据组成了表(table),我们把它想象成一张Excel的sheet。
而其中用id来表示数据的唯一性,也就是主键。而每个表只能有一个主键。
由于id的唯一性,后期我们可以根据id进行增删改查等基本操作。它就像是每一条数据的身份证,方便我们在一堆数据中把它给抓出来。
而数据库则是表的集合,一个数据库中可以放多张表,我们给每张表命名,表与表之间能互相联系。
像上图这样两张图可以由id进行连接,第一张学生表的学生id对应第二张学历表的sid。
当然,数据库的设计还要更严谨,一般每张表都会有主键(主键不是必须,但是从效率优化上肯定会加),这个主键也不能是其他表的主键,防止产生冲突。
所以我们可以将学历表进行修改。
修改结果如下:
然后学历就可以作为这张表的id,而sid可以作为外键与学生表的学生id进行连接。
了解上面的概念,你就知道什么叫关系型数据库,简单说,它是由多张能互相联接的二维行列表格组成的数据库。
基础理论了解了,那么下面我们来安装数据库:
首先,去数据库的官网MySQL :: Download MySQL Community Server下载MySQL。
下载完成,进行解压
然后配置环境变量,
windows7 右击我的电脑--->属性---->高级----->环境变量
windows10 右击此电脑---->属性---->高级系统设置---->环境变量
输入
变量名:MYSQL_HOME
变量值:D:\mysql-8.0.27-winx64(Mysql文件位置)
在解压目录下新建my.ini文件
将下面文本拷贝进my,ini文件中
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录 ----------是你的文件路径-------------
basedir=E:\mysql\mysql
# 设置mysql数据库的数据的存放目录 ---------是你的文件路径data文件夹自行创建
datadir=E:\mysql\mysql\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
以管理员身份运行cmd
然后输入cd /d D:\mysql-8.0.27-winx64\bin进入到Mysql的bin目录下
在MySQL目录下的bin目录下执行命令:
mysqld --initialize --console
复制root@localhost:之后的密码到本地文件夹,保存好( : 后有一个空格,不复制)
然后输入下面命令安装Mysql
mysqld --install mysql
启用Mysql
mysql -uroot -p
然后它会提示你输入密码
然后我们将刚刚保存的密码粘贴到控制台点击回车
这样就证明我们连接成功。
但是密码是mysql安装时随机给的,这个时候我们要进行修改密码。
ALTER USER 'root'@'localhost' IDENTIFIED BY '新的密码';
这样显示密码修改完成。
下面我们使用几个常用语句来试试吧。
创建数据库
create database csdnyyds;
打开数据库
use csdnyyds;
创建表student
create table student(
id int not null auto_increment,
name char(50) not null,
age int null default 18,
primary key(id)
)engine=innodb;
1、允许NULL值,则说明在插入行数据时允许不给出该列的值,而NOT NULL则表示在插入或者更新该列数据,必须明确给出该列的值;
2、DEFAULT表示该列的默认值,在插入行数据时,若没有给出该列的值就会使用其指定的默认值;
3、PRIMARY KEY用于指定主键,主键可以指定一列数据,而可以由多列数据组合构成,如PRIMARY KEY(id,name);
4、ENGINE用于指定引擎类型。常见的引擎类型有这些:(1)InnoDB是一个支持可靠的事务处理的引擎,但是不支持全文本搜索;(2)MyISAM是一个性能极高的引擎,它支持全文本搜索,但是不支持事务处理;(3)MEMORY在功能上等同于MyISAM,但由于数据存储在内存中,速度很快(特别适合于临时表);
创建成功了。下面我们为这个表插入一些数据;
insert into student values (1,'张三',25),(2,'李四',20),(3,'王五',30);
插入成功之后,我们进行查询;
select*from student;
好了,我们所添加的数据都查询出来了。