MySQL数据库 —— 表的增删改查(CRUD)

目录

1. 增加

2. 修改

3. 删除

4. 查询

4.1 简单查询

4.2 where子句

4.3 order by子句

4.4 limit分页 

5. 聚合函数

5.1 count

5.2 sum

5.3 avg

5.4 max/min

6. group by子句


表的CRUD(Create,Retrieve,Update,Delete),即增删改查。

1. 增加

  • 语法

      隐含列插入,给表中的所有字段添加数据

insert into table_name values (value [,value...]);

    指定列插入,只给表的某几个字段赋值,需要指定字段名

insert into table_name[(column[,column...])] values (value [,value...]);

    逐条插入

insert into table_name[(column[,column...])] values (value [,value...]);

   批量插入

insert into table_name[(column[,column...])] values (value [,value...]),(value [,value...]),(value [,value...]);
  • 注意:
    • 插入的数据应与字段的数据类型相同
    • 数据的大小应在规定的范围内
    • 在values中列出的数据位置必须与被加入的列位置相对应
    • 字符和日期类型应该包含在单引号中
    • 插入空值,不指定或指定为 null
  • 当插入时,主键出现冲突可以利用更新操作更改主键对应的其他数据。(找相同,先插后删)
insert into 表名(字段列表) values(值列表) on duplicate key update 字段=新值; 

  • 若主键没有冲突,直接插入数据
replace into 表名(包含字段) values(值列表);

2. 修改

  • 语法
update tbl_name set col_name1=expr1, [, col_name2=expr2 ...] [where conditon] [limit n];
  • 注意
    • update 语法可以用新值更新原有表中的各列值
    • set子句指示要修改的列和要新赋的值 
    • where子句指定应更新哪些行。如果没有where子句,则更新所有行。
    • where子句后面指定limit,更新符合条件的限制数量的行。

3. 删除

  • 语法
delete from  table_name [where condition];

truncate table table_name;
  • delete、truncate和drop删除整表的区别 
    • delete只删除表中数据,表的结构保留,不释放空间;truncate清空数据、释放空间;drop删除内容和定义,释放空间
    • delete可以rollback,truncate不可以rollback
    • delete属于DML,truncate和drop属于DDL
    • delete后空间不变,truncate后空间回到初始化时,drop后所有空间被释放
    • 速度:drop > truncate > delete
    • delete返回被删除的记录数,而truncate返回0
    • 清空表数据,建议使用truncate 
  • delete注意:
    • 只能删除一行数据,不能删除一列数据
  • 复制表数据 
create table new_table_name like exist_table_name; 
  • 复制表中数据
insert into new_table_name select * from exist_table_name;

4. 查询

  • 4.1 简单查询

  • 语法
select [distinct] *| {column1,column2,...} from tbl_name [where condition];
  • * 表示查询所有列 ,效率低
  • distinct 去除重复行

  • select语句中可以使用as起别名

  • 4.2 where子句

在select中使用where子句,进行查询过滤。where后不能用select语句后指定的别名

  • 4.3 order by子句

在select语句中使用order by子句排序查询结果

  • 语法

select column1,column2,... from table order by column  asc|desc,...;
  • 注意
    • order by 指定排序的列,排序的列可以使表中的列名,也可以是select语句后指定的别名
    • asc升序(默认),desc降序
    • order by 子句应该位于select语句的结尾
  • 4.4 limit分页 

  • 语法
select 字段 from  表名 where 条件 limit 起始位置 ,记录条数 
select 字段 from  表名 where 条件 limit 记录条数  offset 起始位置

5. 聚合函数

  • 5.1 count

返回某一列,行的总数

  • 语法
select count(*)|count(列名) from tbl_name where condition;
  • count(*)会统计一共的记录数,count(列名)会排除为null的情况

  • 5.2 sum

返回满足where条件的列中数据的和

sum仅对数值起作用,否则结果无意义。 

  • 语法:
select sum(列名) {,sum(列名)...} from tbl_name [where condition];
  • 5.3 avg

返回满足where条件的一列的平均值

  • 语法
select avg(列名) [,avg(列名),...] from tbl_name [where condition]; 
  • 5.4 max/min

返回满足where条件的一列的大/小值

  • 语法
select max/min(列名) from tbl_name [where condition] 

6. group by子句

在select中使用group by 子句可以对指定列进行分组查询

  • 语法
select column1, column2, .. from table group by column;
  • group by不能和where搭配使用,应该与having搭配


SQL查询中各个关键字的执行先后顺序

    from > on > join > where > group by > with > having > select > distinct > order by > limit

猜你喜欢

转载自blog.csdn.net/qq_42142477/article/details/88756209