黑马程序员_PHP_课程同步笔记day22:数据库操作语言

黑马程序员_PHP_课程同步笔记day22:数据库操作语言
黑马程序员_PHP_课程同步笔记day22:数据库操作语言

【黑马程序员】PHP课程同步笔记day22:数据库操作语言插入数据(insert)

4种形式:

形式1:

insert[into] 表名[(字段名1,字段名2,.....)] values(值表达式1,值表达式2,.....),(...),....;

插入一行或多行数据库

形式2:

Replace [into] 表名[(字段名1,字段名2,....)] values(值表达式1,值表达式2,....),(...),.....;

插入一行或多行数,可能会出现更新情况

形式3:

Insert [into] 表名[(字段名1,字段名2,....)] select 字段名1 ,字段名2....

from 其他表名;

插入一行或多行数,是将select 语句所获得的结果数据插入指定表的制定字段;

形式4:

Insert [into] 表名set 字段名1=值表达式1,字段名2=值表达式2,......;

说明:

1.重要观念:插入数据都应该理解为是以”行”为单位进行的。

2.Replace语法可以实现跟insert语法一样的效果,但还可以做到:如果主键重复

了或唯一键重复了,则会先删除原来的数据,再插入新数据(相当于修改);

3.插入数据时的字段名和数据值之间都有”一一对应”关系

4.插入数据时,有的字段可以不用给定数据,则无需列出来,该字段的值会根据表的设定获得相应的”数据”,比如:自增长值,默认值,甚至是空值(允许空的时候)

5.对于字符串和时间类型的”直接值”(比如”abc”,”2017-06-24 13:31:31”),必须用单引号引起来!而数字一类就可以不用。

删除数据

形式:

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

说明:

1.删除数据也是以”行”为单位。

2.Where ,order,limit3个子句,虽然语法上都可以省略,但是order和limit

很少用,而where几乎都需要用。

3.Order用于设定删除这些数据时的顺序;

4.Limit用于设定在前述排序下,删除多少条;

示例:

Delete from user_info where age>18 order by age desc limit 3;

//含义:删除user_info中年龄大于18的用户,并且按年龄倒序删除前3个。修改数据

形式:

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

说明:

1.更新数据也是以”行”为单位;

2.设置某个字段的值的时候,如果是字符或时间类型的直接值,也要加单引号

3.Where,order,limit3个子句,虽然语法上都是可以省略的,但是order

和limit很少用,而where几乎都需要用。

4.Order用于设定修改这些数据时的顺序

5.Limit用于设定在前述排序下,修改多少条

举例:

Update user_info set age=18,edu=’大学’,user_pass=md5(‘456’) where age<18 order by age limit 100;

基本查询

基本形式:

Select [all|distinct] 字段或表达式列表[as 别名]

[from 子句]

[where 子句]

[group by 子句]

[having 子句]

[order by 子句]

[limit 子句];

说明:

1.上述select语句中,只有select部分是比不可少的,其他都可以省略

2.字段:指一个表中的字段名

3.表达式:是指一个常规的”运算”,甚至是最直接的”数据值”

4.All:表示取得的结果行都”输出”,默认可以不写,就表示all

5.Distinct:表示取得的结果行,”消除重复行”再输出

From子句

表示从哪个表(或视图)中去取出数据,可以认为就是数据的最原始来源,可以成为”数据源”。

形式有:

From 表名;

From 表名1,表名2,......;

From 表名1 连接方式join 表名2 连接方式join 表名3 .....; Where子句

用于对从from子句所设定的数据源进行条件筛选的语句,往往都是使用某个字段名来做某种判断。判断如果成立,结果就是true,就表示该行”会取出”,否则就不会取出。

Where子句其实是对一个表中的”所有行”的数据进行”遍历”,依次进行判断。

Where子句执行的结果,都只是”true”或”flase”

Where子句中,可以用到很多的运算符:

算术运算符:+,-,*,/,%

比较运算符:>,>=,<,<=,=(等于),<>(不等于),!=(不等于)

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

Is运算符:is运算符只用于对布尔值和空值进行判断,有如下4中情

况:

Is true / is false / is null / is not null

Between运算符:

使用形式:

XX字段between 值1 and 值2;

含义:

表示该字段的值,在给定的2个值之间(含),其相当于:

XX字段>=值1 and xx字段<=值2;

In 运算符:

形式:

XX字段in (值1,值2,....);

含义:

表示该字段的值,等于其中列出来的任意一个值,就算满足条件了。

Like运算符

语法形式:

XX字段like ‘要查找的字符串’;

含义说明:

1.该运算符只能对字符串类型的字段进行运算;

2.其含义表示如果某个字段的值,符合(匹配)给定的要查找的字符串,

就算满足条件;

3.该运算符是”模糊查找”的基本形式,并依赖于如下2个特殊的符

合:

%(百分号):它代表”任意个数的任意字符”

_(下划线) :它代表”一个任意字符”

4.如果在需求中,就想要”%”或”_”这个符号,就将其转义Group by 分组子句

语法形式:

Group by 字段1 [asc|desc],字段2 [asc|desc]....

含义:

表示将一个表中的”所有数据行”,按给定的某个字段进行分门别类区分,每一个不同的值就算一个组。

特别注意:

1.分组之后,结果数据中,”只有组”--即信息都应该是组的信息

2.后续的数据处理,也是以组为单位:比如求平均值,求最大值等

3.对于分组的查询,在select子句中,出现”字段”,只能是”组信息”,而不应是单个数据信息

Having子句:

跟where子句的用法和作用一样,唯一区别是:having子句跟在group by之后,用于对”分组之后的结果数据”进行筛选;

Order by 子句:

形式:

Order by 字段1 [asc|desc],字段2 [asc|desc]....

说明与含义:

1.用于将”前面”取得的数据,按给定的字段值的给定顺序(正

序asc或倒序desc)排序

2.可以进行多重排序,每一重排序,都是在前一重排序的值相等

的时候才有意义。

3.可以省略排序顺序设定,此时默认值是asc

Limit子句

形式1:

Limit 数量n;

含义:取出”前述所获得结果”数据的前n行;

形式2:

Limit 起始行号m,数量n;

含义:取出“前述所获得结果”数据的第m行开始的n行;m 是从0开始算起的——注意:m跟数据表中的字段没有关系;当m 等于0时,起始就是前一个形式的含义;

对select语句的整体理解、

说明:

1,除了select子句,各个其他子句都可以省略(语法上可行);

2,每一个子句,都是按该先后顺序出现,不可先后打乱顺序;

3,每个子句都可以看做是一种“计算”,他们在mysql的内部,其实是按该顺序先后进行的计算。

4,where需要有from才能出现;

5,having需要有group by才能出现;

相关主题
相关文档
最新文档