【七天入门数据库】第一天 MySQL的安装部署
【七天入门数据库】第二天 数据库理论基础
【七天入门数据库】第三天 MySQL的库表操作
【七天入门数据库】第四天 数据操作语言DML
insert into 表名 values (数据1,数据2,.....);
insert into 表名(列名1,列名2,.....) values (数据1,数据2,.....);
insert into 表名(列名,列名2,.....) select 列名 from 表名;
replace into 表名 values (数据1,数据2,.....);
replace [into] set 列名1=值1,列名2=值2,.....;
若主键值或唯一值重复时,则原记录删除,再删除,条件可以为范围。
PS:where的使用:where+条件(可配合select筛选)
replace语句的功能与insert语句的功能基本相同,不同之处在于:使用replace语句向表插入新记录时,如果新记录的主键值或者唯一性约束的字段值与已有记录相同,则已有记录先被删除(注意:已有记录删除时也不能违背外键约束条件),然后再插入新记录。
使用replace的最大好处就是可以将delete和insert合二为一(效果相当于更新),形成一个原子操作,这样就无需将delete操作与insert操作置于事务中了
update 表名 set 列名1=新值,列名2=新值,....[where 条件];
修改可以一次修改多行数据,修改的数据可用where子句限定,where子句里是一个条件表达式,只有符合该条件的行才会被修改。没有where子句意味着where字句的表达式值为true。也可以同时修改多列,多列的修改中间采用逗号(,)隔开
1、delete from 表名 [where 条件];
2、truncate table 表名;
delete:删数据,保留结构,可回滚,如果数据量大,很慢。
truncate: 删所有数据,保留结构,不可回滚,一次删除所有数据,速度相对很快。
drop: 删数据和表结构,删除速度最快。
1、别名:select 列名 别名 from 表名;
2、统计行数:select count(列名) from 表名[where 条件];
3、去重:select distinct 列名 from 表名 [where 条件];
4、升序:select 列名 from 表名 order by 要排序的列名;
5、降序:select 列名 from 表名 order by 要排序的列名 desc;
6、数组分组:select 列名 from 表名 [where 条件] group by 被分组的列名;
语法:select 列名 from 表名[where 条件] limit a ,b;
a:代表起始位置,从0开始
b:代表要返回记录行的最大行数
%:用来表示任意多个字符,包含0个字符
_ : 用来表示任意单个字符
escape:用来转义特定字符
代表选择的是两个表的交差部分,只取得键值一致的。
语法:SELECT 列名1,列名2... FROM 表1 INNER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;
代表选择的是前面一个表的全部。左连接是以左表为标准,只查询在左边表中存在的数据。
语法:SELECT 列名1 FROM 表1 LEFT OUTER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;
代表选择的是后面一个表的全部,右连接将会以右边作为基准,进行检索。
语法:SELECT 列名1 FROM 表1 RIGHT OUTER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;
自连接顾名思义就是自己跟自己连接,参与连接的表都是同一张表。(通过给表取别名虚拟出)
不适用任何匹配条件。生成笛卡尔积。
PS:除了COUNT()以外,聚合函数都会忽略NULL值。
count(1) and count(*):count(1)和count(*)基本没有差别。
count(1) and count(字段) :count(1) 会统计表中的所有的记录数,包含字段为null 的记录。而count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。即不统计字段为null 的记录。
count(*) 和 count(1)和count(列名)区别
执行效果上: count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计。
执行效率上: 列名为主键,count(列名)会比count(1)快 列名不为主键,count(1)会比count(列名)快 如果表多个列并且没有主键,则 count(1) 的执行效率优于 count(*) 如果有主键,则 select count(主键)的执行效率是最优的 如果表只有一个字段,则 select count(*)最优。
1、IF(expr,v1,v2)
判断,流程控制,当expr = true时返回 v1,当expr = false、null 时返回v2。
2、IFNULL(v1,v2)
判断是否为空,如果 v1 不为 NULL,则 IFNULL 函数返回 v1,否则返回 v2。
3、CASE:搜索语句
都看到这里了,创作不易,大家点个赞再走啦!!- ̗̀(๑ᵔ⌔ᵔ๑)