文章目录
什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:
- 1.数据以表格的形式出现
- 2.每行为各种记录名称
- 3.每列为记录名称所对应的数据域
- 4.许多的行和列组成一张表单
- 5.若干的表单组成database
RDBMS 术语
在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:
- 数据库: 数据库是一些关联表的集合。
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
- 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
- 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
- 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
- 外键:外键用于关联两个表。
- 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
- 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
- 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:
- 表头(header): 每一列的名称;
- 列(col): 具有相同数据类型的数据的集合;
- 行(row): 每一行用来描述某条记录的具体信息;
- 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
- 键(key): 键的值在当前列中具有唯一性。
MySQL数据库服务器、数据库和表的关系
- 所谓数据库服务器,只是在机器上装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
- 为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如图所示:
MySQL 连接
使用mysql二进制方式连接
- Mysql数据库自带的命令提示行
开始–所有程序–MySQL–自带的命令提示行–点击
先输入密码
弹出以下结果则登录成功
退出 mysql> 命令提示窗口可以使用 exit 命令
注意:在登录数据库服务器之前一定要打开mySQL数据库服务。
打开mySQL数据库服务
- 控制面板–管理工具–服务–Mysql服务—启动
- 开始–cmd–
C:\Users\Administrator>net start 数据库服务名称
C:\Users\Administrator>net start MySQL5.5.62
MySQL5.5.62 服务正在启动 .
MySQL5.5.62 服务已经启动成功
使用 PHP 脚本连接 MySQL
PHP 提供了 mysqli_connect() 函数来连接数据库。
该函数有 6 个参数,在成功链接到 MySQL 后返回连接标识,失败返回 FALSE 。
语法
mysqli_connect(host, username, password, dbname,port, socket);
参数说明:
参数 | 描述 |
---|---|
host | 可选。规定主机名或 IP 地址。 |
username | 可选。规定 MySQL 用户名。 |
password | 可选。规定 MySQL 密码。 |
dbname | 可选。规定默认使用的数据库。 |
port | 可选。规定尝试连接到 MySQL 服务器的端口号。 |
socket | 可选。规定 socket 或要使用的已命名 pipe。 |
你可以使用 PHP 的 mysqli_close() 函数来断开与 MySQL 数据库的链接。
该函数只有一个参数为 mysqli_connect() 函数创建连接成功后返回的 MySQL 连接标识符。
语法
bool mysqli_close ( mysqli $link )
本函数关闭指定的连接标识所关联的到 MySQL 服务器的非持久连接。如果没有指定 link_identifier,则关闭上一个打开的连接。
提示:通常不需要使用 mysqli_close(),因为已打开的非持久连接会在脚本执行完毕后自动关闭。
实例:
你可以尝试以下实例来连接到你的 MySQL 服务器:
<?php
$dbhost = 'localhost'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysqli_error());
}
echo '数据库连接成功!';
mysqli_close($conn);
?>
SQL语言
- 1.SQL—Structured Query Language, 结构化查询语言
- 2.各厂商增强了过程性语言的特征
如Oracle的PL/SQL 过程性处理能力
SQL Server、Sybase的T-SQL - 3.SQL是用来存取关系数据库的语言,具有查询、操纵、定义和控制关系型数据库的四方面功能。
SQL分类
- DDL (数据定义语句)
数据定义语言 - Data Definition Language
用来定义数据库的对象,如数据表、视图、索引等 - DML (数据操纵语句)
数据处理语言 - Data Manipulation Language
在数据库表中更新,增加和删除记录
如 update, insert, delete — 增删改 - DCL (数据控制语句)
数据控制语言 – Data Control Language
指用于设置用户权限和控制事务语句
如grant,revoke,if…else,while,begin transaction - DQL (数据查询语句)
数据查询语言 – Data Query Language
Select
MySQL 创建数据库
我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下:
CREATE DATABASE 数据库名;
创建表(基本语句)
语法结构:
CREATE TABLE table_name
(
field1 datatype,
field2 datatype,
field3 datatype
);
field:指定列名 datatype:指定列类型
注意:
1.创建表前,要先使用use db语句使用库。
2.创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型。
MySQL常用数据类型
字符串型 VARCHAR、CHAR
大数据类型BLOB、TEXT
数值型TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
逻辑性 BIT
日期型DATE、TIME、DATETIME、TIMESTAMP
数据库查看
1.查看所有数据库
show databases;
2.查看数据库mydb1的字符集
show create database mydb1;
数据库的修改
例如:
修改mydb2字符集为gbk;
ALTER DATABASE mydb2 CHARACTER SET gbk;
数据库的删除
例如:
删除数据库mydb3。
drop database mydb3;
删除表
删除employee1表
drop table employee1;
数据表的结构的修改
- 在上面员工表的基本上增加一个image列。
alter table employee2 add image varchr(20);
- 修改job列,使其长度为60。
alter table employee2 modify job varchar(60);
- 删除gender列。
alter table employee2 drop gender;
- 表名改为user。
rename table employee2 to user;
- 修改表的字符集为utf8
alter table user character set utf8;
- 列名name修改为username
查看表结构
- 查看数据库内的所有表
show tables;
- 查看employee的建表语句
show create table employee1;
- 查看employee的表结构
desc employee1;