PHP中数据库的基本知识点有哪些?基本语句?基本概念?

上篇文章给大家介绍了《PHP中作用域划分为哪几种?作用域能够被访问的区域是?》,本文继续给大家介绍PHP中数据库的基本知识点有哪些?基本语句?基本概念?有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

数据库基本概念

命令结束符:“g”或是“;”

Mysql支持数据类型:

  • 数值型

  • 整数类型

Tinyint、smallint、mediumint、int和bigint

Ddl语句(命令大小写都可以)

创建数据库

Create database 数据库名

选择要操作的数据库:use数据库;对于要操作的数据库我们需要使用use来选择

查看数据库中的所有数据表show tables

删除数据库

Drop database 数据库名称

创建表(在某个数据库里面创建表,需要先使用use选择到要操作的数据库里)

Create table 表名(

字段1名字 字段1类型 列的约束条件,

字段2名字 字段2类型 列的约束条件,

创建完表之后可以查看表单定义

Desc 表名;

查看创建表的SQL语句

Show create table 表名G(G选项使得记录能按照字段竖向排列,一遍更好展示内容较长的记录,G之后不需要加分号)

删除表

Drop table 表名;

修改表字段类型

Alter table 表名 modify [colimn] 字段定义 [first|after字段名];

增加表字段

Alter table 表名 add [colimn] 字段定义 [first|after字段名];

删除表字段

Alter table 表名 change [colimn] 旧的字段名 字段定义 [first|after字段名];

注:change与modify都可以修改表的定义,不同的是change后面需要解两次列名,不是特别方便,优点是change可以修改字段名

修改字段排列排序

[first|after字段名]这个选择可以用来修改字段在表中的位置,新增字段默认是加载在表中最后位置,而change/modify默认不会改变字段位置

注:change/first|after 字段名 这些关键字都是属于mysql在标准sql上的扩展,在其他数据库上不一定适用

更改表名

After table 表名 rename [to] 新的表名

Dml语句

插入记录

Insert into 表名(字段1,字段2, …,字段n) values(值1,值2,… ,值n);

可以不用指定字段名,但是values后面的顺序应该与字段排序一致

一次性插入多条记录

Insert into 表名(字段1,字段2, …,字段n)

Values

(值1,值2,… ,值n),

(值1,值2,… ,值n)

;

查询记录

select * from 表名 where 条件;(*代表你查询表里的所有字段,如果我们查询某一字段,只需要将*改成那一字段即可。)

查询不重复的记录

Select distinct 字段1,字段2 from 表名;(只要字段1,字段2任何一个字段有不同就会被选择,一般用于distinct,只筛选一个字段)

条件查询

注:条件查询比较符号:=,<,>,>=,<=,!=等比较运算符,多个条件之间可以使用or and等

排序和限制

排序:

  • asc:由低到高,也是默认值select * from 表名 order by 字段名 asc;

  • desc:由高到底select * from 表名 order by字段名 desc;

  • 多个字段排序select * from 表名 order by 字段名 desc,id desc;

  • 数字1代表从第几条记录开始取(是从0开始的),数字2代表取几条!

聚合

用户需要进行一些汇总操作,这就需要sql聚合操作。

①sum求和select sum(字段名) from 表名;

②count记录总数select count(*|字段名) from 表名;

③max最大值select max(字段名) from 表名;

④min最小值select min(字段名) from 表名;

⑤GROUP BY分类聚合select department,sum(salary) from employee group by department;

⑥WITH ROLLUP分类聚合后的结果进行再汇总select sum(salary) from employee group by department with rollup;

⑦HAVING

注意:having和where的区别在于,having是对聚合后的结果进行条件过滤,而where是在聚合前就对记录进行过滤,应该尽可能的对记录进行先过滤!

select sum(salary) from employee group by department having sum(salary)>1000;

在一起使用:select sum(id),max(id),min(id),count(*) from a1;

表连接(显示多个表中字段时可以使用)

连接分类

内连接:选取两张表中相互匹配的记录(select 表.字段,…. from 表1名,表2名,… where [匹配的条件比如 表1.字段=表2.字段];)

select 语句可以给字段起别名!直接写在需要查询显示的字段的后面就行,也可以给表起别名

外连接:不仅仅选取两张相互匹配的记录,其他不匹配的记录也会查询出来

左连接

  • 包含左边表中的所有记录(包括右表中没有和它匹配的记录)select * from 表1 left join 表2 on 表1.字段=表2.字段;

  • 包含右边表中的所有记录(包括左表中没有和它匹配的记录)

  • 左连接和右连接是可以相互转换的!

  • 子查询(一个查询需要另外一个查询的结果参与的时候)

用于子查询的关键字:

in在..里面(注意点 in后面的子语句必须只返回一个字段,若查询结果唯一(只有一条)可以使用=代替in,not in与in相反)

语法:select * from 表名1 where 字段1 in(select 字段2 from 表2);

Exists(后面那个子语句有没有查询出记录来,如果查询出记录来返回true,否则就是false,并且查询出来的记录的具体的值是NULL也可以,也是返回true.)

语法:select语句 where exists(select 语句);

not exits(与exists相反)

记录联合(我们常常会碰到需要将两个表或者多个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示这是就需要用到记录联合)

多个select 语句用UNION或者UNION ALL隔开即可实现

区别: 前者会将多个查询结果合并后并且进行去除重复后返回,后者 则直接合并并不去除重复

联合的条件:查询的列个数要相等

更新记录

更新一个表

Update 表名 set 字段1=值1,字段2=值2,…,字段n=值n[where条件];

更新多个表中数据

Update 表1,表2,…表n set 表1.字段1=表达式1,…,表n.字段n=表达式n[where条件];

注:多表更新更多是用在根据一个标的字段来动态更新另一表的字段

推荐学习:php视频教程

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » PHP中数据库的基本知识点有哪些?基本语句?基本概念?