博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP数据库mysql(二)增删改查
阅读量:4289 次
发布时间:2019-05-27

本文共 3932 字,大约阅读时间需要 13 分钟。

============条件关键的使用===

on是用于链接查询。

where用于一般性的查询;from后面都可以用;如果from是在连接查询语句后面,则是对连接查询的结果做条件判断;

having用于group by 后面限定条件;

复制表---------------第二种方法可能会丢失一些数据

-

auto_increment必须作用在有索引的字段上;

====================数据库操作-----------DML--------

插入-----------------

insert  into  表名1(字段名1,字段名2,。。。。。)  values(值a1,值a2........),  (值b1,值b2,.....),..............;

inset    into   表名1(字段名1,字段名2,。。。。。) select 字段名1,字段名2,。。。。from  表名2;

insert  into   表名1 set  字段名1=值1,字段名2=值2,。。。。;

inset    into   表名1  select   * from  表名2  where语句 ;------表1的字段如果是表2的所有字段,则表1的字段可以省略;

吧txt'中的数据(形式整齐的数据)载入到数据库中,如果表名是汉字要用单引号引起来,但是汉字可能出错,最好不用汉字,注意字符编码问题,注意BOM;---------

load data infile 'TXT文件的路径' into table 表名;

-----------------------------删除表-----------------------

drop table if exists 表名;

-----------------------------删除数据-----------------------------------------

delete from表名 [where 条件]  [order 排序][limit 限定];

delete from 表名;------------如果不加where条件,就删除表里的所有数据;

------------------假删除-----------------------------------------

              truncate [table]表名;

    truncate----会把原始的表结构完全跟初始的一样,全部索引,全部约束,全部属性都跟原始的一样,可以理解为重置该表为初始状态;delete的话,会继续在删除之前的基础上自增长;

----------------------------------修改数据------------------------

                                   字段的值可以是表达式,或者直接值,或者函数;如果是直接值,字段的值中的数字不加引号,字符串和时间要加引号;

update 表名 set 字段名1=值1,字段名2=值2,。。。[where 条件] [order 排序][limit 限定];

-------------------------------------数据查询--DQL-------------------------------

数据查询包括:基本查询,连接查询,子查询,联合查询;

select [all | distinct ] 字段或者表达式列表 [from 子句][group by 子句][having 子句][order by 字句][limit 子句];

无数据源的select语句:

上面的字段在php中没法使用,添加别名后就可以使用 了;

============对字段和直接值(或者函数返回值)同时取出;

可以用:表名 . 字段名   表示那个表的字段

===============基本查询===================

基本查询中:from,where,group,having,order,limit;这些都是在他前一步的结果基础上再设定条件。

=============是否允许出现重复行(完全相同的数据行)=============

===================from子句=====================

======================where子句===========================

where和from可以省略,但是如果有where,必须有from,如果有from,可以没有where;

逻辑运算符:and (  与)    or(或)     not   (非)

空值需要用is运算符,等号是不行的;

值可以是直接值,也可以是select语句;

id2 in(100,200,300,400)表示id2是100或者,200或者,300或者,400时为真;

=======================groupby========================

group by 字段1  排序方式 1 ,字段2  排序方式2,。。。。。;

        组内成员个数,最大值,最小值,平均值,总和值,以及分组的依据字段;

------------如果是对两个字段分组,就是先对第一个进行分组,再在组内对第二个字段进行分组;

count(*)表示的是每一组的个数。

按照pinpai分组;

默认是升序:

如果是两个或两个字段分组,相当于对前一个分组结果再进行分组;

==========================having字句==========================

having只针对group by后面组的数据进行条件判断;
where针对表的字段的值进行条件判断;

======================order by字句======================

order by 排序字段  排序方式;

=================================limit子句=========================

--------------------------连接查询-------------------------------------

交叉连接,内连接,外链接:(左外连接,右外连接,全连接)

================交叉连接==============

交叉连接:就是不设定任何条件的链接结果,也叫笛卡尔积;

from 表1 [cross] join 表2;---没有on 条件;cross可以省略,也可以用inner代替,

===========内连接===========

from 表1 [inner] join 表2  on 条件;---------------有on 条件;

交叉连接通常无意义,内连接是有意义的;

==============左外连接================

from 表1 left [outer] join 表2 on 链接条件;-----------在内链接结果的基础上,加上左边表中不符合链接条件的数据对应左边不符合链接条件的数据行的右边表的字段的位置自动补为null值

==============右外连接================

from 表1 right [outer] join 表2 on 链接条件;-----------在内链接结果的基础上,加上右边表中不符合链接条件的数据对应右边不符合链接条件的数据行的左边表的字段的位置自动补为null值

==================全外连接==============*mysql本身不支持全外连接。**

from 表1 full [outer] join 表2 on 链接条件;---------在左右链接的合集(消除重复项)-也就是-在内链接结果的基础上,加上左边表中不符合链接条件的数据对应左边不符合链接条件的数据行的右边表的字段的位置自动补为null值加上右边表中不符合链接条件的数据对应右边不符合链接条件的数据行的左边表的字段的位置自动补为null值。

=====================子查询======================

-----------in子查询------------

--------------any子查询----------------

                           = any和in是一个意思;

-----------all子查询-------------

----------some子查询----------exists 或者not exist子查询-------

exist子查询只判断查询的结果,只要数据的行数大于等于1,就是true,并且把exists中的子查询的结果作为上一级查询的结果。否则为false。

--------------------------

exists 或者not exist子查询,如果涉及两个或以上的表,内部会自动进行连接,而且过程还很复杂。不明确。

==============================联合查询================

联合查询的两个查询结果的字段数要相等;

联合查询的两个表的字段数必须相等(类型可以不等,内部会自动转换),查询的结果字段,以第一个表的字段为准,可能会出现两个一模一样的行。但联合查询会默认消除重复的行。要想不消除重复的行,必须写成:select 语句1  union all  select语句2;这里的默认项和普通的默认选项相反,要注意。

你可能感兴趣的文章
设计模式学习 - Singleton Pattern
查看>>
学习Spring——依赖注入
查看>>
CSS3 transform 属性详解
查看>>
Java对象内存结构及大小计算
查看>>
Spring MVC注解的一些案列
查看>>
Web大文件断点续传,快来看看吧!
查看>>
javascript高级编程3第二章:在html中使用javascript
查看>>
Android中热修复框架AndFix原理解析及案例使用
查看>>
手写代码实现EventBus
查看>>
关于JSON的相关知识
查看>>
SpringMVC基础_常用注解
查看>>
Spring框架-IOC容器和Bean的配置(1)
查看>>
查询内容在网页里面分页显示+跳页查看
查看>>
mysql substring函数截取值后赋给一个declare变量
查看>>
Java Thread 的 sleep() 和 wait() 的区别
查看>>
DbUtils入门
查看>>
每一个程序员需要了解的10个Linux命令
查看>>
service的自调用 VS service之间调用
查看>>
Android权限管理之Permission权限机制及使用
查看>>
重识Retrofit
查看>>