目录
数据库入门
什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:
- 1.数据以表格的形式出现
- 2.每行为各种记录名称
- 3.每列为记录名称所对应的数据域
- 4.许多的行和列组成一张表单
- 5.若干的表单组成database
字符串型
MySQL PHP 语法
MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP,在这些语言中,MySQL 在 PHP 的 web 开发中是应用最广泛。
在本教程中我们大部分实例都采用了 PHP 语言。如果你想了解 MySQL 在 PHP 中的应用,可以访问我们的 PHP 中使用 MySQL 介绍。
PHP 提供了多种方式来访问和操作 MySQL 数据库记录。:
PHP MySQL 函数格式如下:
mysqli_function(value,value,...);
数据库和数据表的操作
·注释语句
语句1: --单行注释
语句2: #单行注释
语句3: /*多行注释*/
·登录MySQL服务器时选择数据库
语法如下:
mysql -u用户名 -p[密码] 数据库名
·MySQL创建数据库,我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库
语法如下:
create database 数据库名;
·查看MySQL服务器下的所有数据库
语法如下:
show databases;
·查看指定数据库的创建信息
语法如下:
show create database 数据库名;
·选择数据库
语法如下:
use 数据库名;
·删除数据库
语法如下:
drop database 数据库名;
·创建数据表
create table<表名>(
列名1 数据类型[列/行级约束...],
......
列名2 数据类型[列/行级约束...],
......
列名3 数据类型[列/行级约束...]
);
·修改表结构
修改字段
新增字段
删除字段
alter table 数据表名 drop[column]字段名;
修改表名
#格式1
alter table 旧表名 rename[to|as] 新表名;
#格式2
rename table 旧表名1 to 新表名1[,旧表名2 to 新表名2...];
·查看当前MySQL支持的所有字符集
语法如下:
#语句1
show char set;
#语句2
show character set;
·查看MySQL可用的校对集
show collation;
·字符集的变量说明
数据的插入、更新与删除
·插入数据
语法如下:
insert [into] 表名[(字段1,字段2,...)]
values (值1,值2,...)[,(值1,值2,...),...];
关于insert语句的赋值问题
(值1,值2,...)中的值:可以是常量,变量,函数,表达式,及null,0,default等;
字符串常量:使用英文单引号将字符串括起来,用来标识这是一个字符串, 如'abc';
日期时间常量:使用英文单引号将其括起来,如'2021-01-26';
数值常量:不需要使用任何符号标识,直接书写数字即可,如1000;
变量、函数、表达式、NULL、 0、DEFAULT:不需要使用任何符号标识,直接书写即可;
字符串常量是区分大小写的:如'abc'、 'ABC'、 'Abc' 是不一样的。
关于空、空串、空格串的说明
NULL:空、空值,表示值未知、不确定的值;
":空串,表示空字符串,一个字符都没有;
' ':空格串,表示含有空格的字符串,有一个或多个空格;
'0' :只有一个数字0的字符串;
0:取值为数值0。
·修改数据
语法如下:
update 表名
set 字段名1=值1[,字段名2=值2,...]
[where 条件表达式];
--例1 将作者是张三的书名由“计算机方法”改为“数值计算”
update bookinfo
set bookname='数值计算'
where author='张三';
·删除数据
语法如下:
delete from 表名[where 条件表达式];
--例1 删除表bookinfo中姓名为李四的记录
delete from bookinfo
where author='李四';
数据完整性的实现
·数据完整性的定义
在MySQL中,为了防止数据表中插入错误数据,定义了一些维护数据完整性的规则,即为表的约 束。数据完整性是指数据的正确性、完备性和一致性,它是衡量数据库质量好坏的重要标准。数 据完整性要确保数据库中数据一致、准确,同时符合业务单位规则。因此,满足数据完整性要求 的数据应具有以下特点:
1.数据类型准确无误。
2.数据的值满足范围设置。
3.同一表格数据之间不存在冲突。
4.多个表格数据之间不存在冲突。
·数据完整性类型
·表的约束简介
·主键约束(primary key)
主键可唯一标识表中的记录, 通过主键可以快速查找表中的某条信息,就好比身份证可以用来标 识人的身份一样。
·唯一约束(unique)
唯一约束保证数据表中字段的唯一性,即表中字段的值不能重复出现。
·primary key和unique约束的区别
·外键约束(foreign key)
外键:特指两张表的公共列,在一张表是主键或唯一 键,在另一张表则可以定义为外键。外键表示两 个表之间的相关联系。
·创建外键
foreign key(外键列名) references 住表名(被引用列名)
单表查询
·基础查询
语法如下:
select [distinct] *|{字段1,字段2,字段3,...}
from 表名
[where 条件表达式1]
[group by 字段名 [having 条件表达式2]]
[order by 字段名 [asc|desc]]
[limit [offset,] 记录数];
·改变列标题的显示
语法如下:
字段名 as 标题名 或 字段名 标题名;
·比较条件的使用
·比较条件的组合使用
·distinct 关键字
实际应用中,出于对数据的分析需求,有时需要去除查询记录中重复的数据。
可使用DISTINCT(去重复值子句)去除重复记录(消除重复行,只保留一条)。
语法如下:
distinct 字段名1 [,字段名2]...
·order by子句
在项目开发时,为了使查询的数据结果满足用户的要求,通常使用ORDER BY(排序子句)对查询 出的数据进行上升或下降的排序。
语法如下:
order by 字段名[asc|desc]
--asc升序,desc降序
·limit关键字
对于一次性查询出的大量记录, 不仅不便于阅读查看,还会浪费系统效率。
MySQL中提供了一个关键字LIMIT(限量子句), 可以限定记录的数量,也可以指定查询从哪一条 记录开始(通常用于分页)。
语法如下:
limit [偏移量,]记录数
·group by子句
分组统计:在应用中,通常需要对数据按照某个或多个字段进行分组统计。
语法如下:
group by 字段名
多表查询
·内连接
语法如下:
select 查询列表
from 表1,表2
where 表2.公共列=表1.公共列;
select 查询列表
from 表1 [inner] join 表2
on 表2.公共列=表1.公共列;
·子查询
子查询: SQL语句中嵌套SELECT语句,又称嵌套查询
可使用子查询的语句: SELECT、 DELETE、 UPDATE、 INSERT、CREATE TABLE
SELECT嵌套: SELECT语句嵌套SELECT语句,首先会执行内层查询(子查询),然后将返回的结 果作为外层查询(主查询)的过滤(筛选)条件或数据源。
子查询出现的位置: where后、 from后
where子查询:子查询作为查询条件
from子查询:子查询作为表