数据库:存取数据。
关系型数据库和非关系型数据库,关系型数据库通过sql语句来进行操作。
没有sql语句的叫非关系型数据库Nosql,Nosql最常用你得数据库是Mongodb和Redis
redis一般用作缓存,存储的是我们经常用的数据,一般的数据是存储在mysql和oracle中的。
分布式内存数据库:把很多台电脑看作一台电脑
内存数据库:所有的数据都存储在内存中。
磁盘数据库
2.mysql三范式(经过研究和使用中问题的总结,对于设计数据库提出了一些规范,这些规范被称为范式)
第一范式: 列不可拆分
第二范式:唯一标识 不是主键
第三范式:引用主键 主键是唯一的,主键可以保证文件的唯一性。
后一个范式都是在前一个范式上建立的
3.E-R模型
E表示entry,实体。 R表示relationship 关系 一个实体转换为数据库中的一个表
关系描述两个实体之间的对应规则,包括,,一对一,一对多 ,多对多
关系转换为数据库表中的一个列,在关系型数据库中一行就是一个对象
操作:数据库的操作:创建、删除
表的操作: 增 删 改
数据的操作:增删改查,简称crud
4.数据完整性:
char(10) "niu "空格一并存入
字段类型:数字(包含decimal小数),字符串,日期,布尔(bit 实际上是0和1)
5.约束:
非空主键primary key 主键只能有一个 not null
唯一 unique 可以有多个,物理上的存储的结构是由主键维护的
默认 default
外键foregin key
设计表结构:
学生表结构: id name gender address
科目表结构:id name
图形窗口操作:创建数据库 创建表 添加字段 逻辑删除
------------------------------------------##分割线##------------------------------------------
5.10日更
安装MySQL到最后一步一直出错,无法运行实验,只好先从百度上找一点MySQL查询语句,等之后安好再补充
查询数值型数据:
1
|
SELECT
*
FROM
tb_name
WHERE
sum
> 100;
|
查询谓词:>,=,<,<>,!=,!>,!<,=>,=<
二查询字符串
1
2
3
4
|
SELECT
*
FROM
tb_stu
WHERE
sname =
'小刘'
SELECT
*
FROM
tb_stu
WHERE
sname
like
'刘%'
SELECT
*
FROM
tb_stu
WHERE
sname
like
'%程序员'
SELECT
*
FROM
tb_stu
WHERE
sname
like
'%PHP%'
|
三查询日期型数据
1
|
SELECT
*
FROM
tb_stu
WHERE
date
=
'2011-04-08'
|
注:不同数据库对日期型数据存在差异:
1
2
3
4
5
6
|
(1)MySQL:
SELECT
*
from
tb_name
WHERE
birthday =
'2011-04-08'
(2)SQL Server:
SELECT
*
from
tb_name
WHERE
birthday =
'2011-04-08'
(3)Access:
SELECT
*
from
tb_name
WHERE
birthday = #2011-04-08#
|
四查询逻辑型数据
1
2
|
SELECT
*
FROM
tb_name
WHERE
type =
'T'
SELECT
*
FROM
tb_name
WHERE
type =
'F'
|
逻辑运算符:and or not
五查询非空数据
1
|
SELECT
*
FROM
tb_name
WHERE
address <>
''
order
by
addtime
desc
|
六利用变量查询数值型数据
1
|
SELECT
*
FROM
tb_name
WHERE
id =
'$_POST[text]'
|
注:利用变量查询数据时,传入SQL的变量不必用引号括起来,因为PHP中的字符串与数值型数据进行连接时,程序会自动将数值型数据转变成字符串,然后与要连接的字符串进行连接
七利用变量查询字符串数据
1
|
SELECT
*
FROM
tb_name
WHERE
name
LIKE
'%$_POST[name]%'
|
完全匹配的方法"%%"表示可以出现在任何位置
八查询前n条记录
1
|
SELECT
*
FROM
tb_name LIMIT 0,$N;
|
limit语句与其他语句,如order by等语句联合使用,会使用SQL语句千变万化,使程序非常灵活
九查询后n条记录
1
|
SELECT
*
FROM
tb_stu
ORDER
BY
id
ASC
LIMIT $n
|
十查询从指定位置开始的n条记录
1
|
SELECT
*
FROM
tb_stu
ORDER
BY
id
ASC
LIMIT $_POST[
begin
],$n
|
注意:数据的id是从0开始的
十一查询统计结果中的前n条记录
1
|
SELECT
* ,(yw+sx+wy)
AS
total
FROM
tb_score
ORDER
BY
(yw+sx+wy)
DESC
LIMIT 0,$num
|
十二查询指定时间段的数据
SELECT 要查找的字段 FROM 表名 WHERE 字段名 BETWEEN 初始值 AND 终止值
1
|
SELECT
*
FROM
tb_stu
WHERE
age
BETWEEN
0
AND
18
|
十三按月查询统计数据
1
|
SELECT
*
FROM
tb_stu
WHERE
month
(
date
) =
'$_POST[date]'
ORDER
BY
date
;
|
注:SQL语言中提供了如下函数,利用这些函数可以很方便地实现按年、月、日进行查询
year(data):返回data表达式中的公元年分所对应的数值
month(data):返回data表达式中的月分所对应的数值
day(data):返回data表达式中的日期所对应的数值
十四查询大于指定条件的记录
1
|
SELECT
*
FROM
tb_stu
WHERE
age>$_POST[age]
ORDER
BY
age;
|
十五查询结果不显示重复记录
SELECT DISTINCT 字段名 FROM 表名 WHERE 查询条件