MySQL入门指南:删改查

数据操作语言(DML)

数据插入(增加数据)

形式一
insert into 表名(字段1,字段2,···) values(值 a1,值 a2,···),(值 b1,值 b2,···),···;
形式二
insert into 表名1(字段1,字段2,···) select 字段1,字段2,··· from 表名2;
形式三
//每个字段一次只能插入一个字段
insert into 表名1 set 字段名1=值1,字段名=值2,···;
形式四:适用于从本地文件中读取并生成表
load data infile ‘文件完整名(含路径)’  into  table  表名;
注意
  1. 形式1和形式2每个字段可以一次插入多条数据
//形式1范例
inset into tab5 (f1,f2,f4,id2) values (1.23,12.3,'adasd1',100),
(1.33,13.3,'ada2sd1',101),(1.43,14.3,'adas3d1',1);
  1. 值得形式,数字直接写,字符串时间加单引号,但如果是函数值,不能加引号
  2. 不管哪种形式,都要理解为:插入数据的单位是"行"
  3. 有的字段不需要插入数据,此时插入时不要写该字段名:例如auto_increment,timestamp。

数据删除

形式
delete from 表名 [where条件] [order排序] [limit限定];
注意
  1. 通常,删除应该以行为单位进行
  2. 删除语句中,where条件不写将删除表中所有数据
  3. order排序和limit限定应用中通常不需要
    order用于设定删除数据的先后数据
    limit用于限定在设定的顺序情况下删除制定的某些行

类似删除语句truncate

形式
truncate [table] 表名;用于直接删除整个表(结构)并重新创建该表。
说明
  1. 该语法删除整个表
  2. 该语法会重新创建该表
  3. 跟delete语句不带where条件的区别:
    主要影响的是auto_increment这种类型的字段值:truncate序号会重新计算,delete则继续按原来的序号增长

数据修改

形式
update 表名 set 字段名1=值表达式1,字段名2=值表达式2,....[where条件] [order排序] [limit限定];
注意

同数据说明注意

复制表

形式一
//这种方法,表复制的比较完整
//复制结构
create table tab2 like tab1;
//复制数据
insert into tab2 select * from tab1;
形式二
//同时复制结构和数据,但这种形式可能会丢失一些机构信息,例如:索引,约束,自增长属性
creat table tab2 select * from tab1;

数据查询语言(DQL)

基本查询

语法形式
select[all|distinct] 字段或字段表达式列表[from 子句][where 子句][group by 子句][having 子句][order by 子句][limit 子句]

select 语句作用是从"数据源"中,找出想要的数据,并作为该语句的结果返回,所谓数据源就是数据库中的表。

  • [all|distinct]:用于设定所select出来的数据是否允许出现重复行
    all:允许出现重复行,默认值
    distinct:不允许出现重复行
  • from子句:数据从那个表里面查
  • where子句:相当于php或js中的if语句,结果为布尔值,本质就是为select设定一个if条件,通常和字段联合使用
where true,where 1,where 1=1 都表示true
where false,where 1=2 表示false

where中的运算符:算数运算符(+ - * / %),比较运算符(> = >= <= <>),扩展(== !=),逻辑运算符(and,or,not)
在MySql中的布尔值只是int类型非0和0的别名
在MySql中空为null,非空为not null
where子句中的between···and···语句相当于字段名>=值1 and 字段名<=值2
where子句中的in(值1,值2,值3···)语句相当于字段名=值1or值2or值3
where子句中的like语句:字段名 like '要查找的字符',主要用于对字符类型的字段进行字符匹配查找,有两个特殊含义字符是"%"和"",分别代表任意多个的任意字符和1个任意字符,如果要查找%或则用\转义。
where子句出现时必须出现from子句

  • group by分组子句:group by 字段1 排序方式1,字段2 排序方式2,··· ,分组后得到的数据是组数据,而不是单行数据,按照某个字段进行分组,其他字段如果不一样,将会自动取第一个。
  • having子句:概念跟where子句完全一样。have是只针对groupby之后的"组"数据进行条件判断。select count(*) as f1,max(f1) as f2 from tab1 group by f3 having f1>5 and f2<1000

你可能感兴趣的:(MySQL入门指南:删改查)