MySQL_数据库表记录的操作

版权声明:由于作者水平有限,文中难免有误,欢迎各位业界同仁斧正! https://blog.csdn.net/UserPython/article/details/82832492

单表数据记录的插入

插入数据

  • 在使用数据库之前,数据库表中必须有数据,我们需要使用INSERT语句向数据库表中插入数据

插入数据的方式

  • 插入完整的记录
  • 插入记录的一部分
  • 插入多条记录
  • 插入另一个查询的结果

为表的所有列插入数据

INSERT INTO table_name(column_list) VALUES (value_list);

  • 其中列清单column_list可以省略不写,但在插入值时,要按照列清单column_list的顺序一样

在这里插入图片描述

为表的指定列插入数据

  • 为表的指定列插入数据,就是在INSERT语句中只向部分列中插入值,而其他没有指定值得列所插入的数据为表定义时的默认值

在这里插入图片描述

同时插入多条记录

  • INSERT 语句可以同时向数据表中插入多条记录,插入时指定多个值列表,每个值列表之间用逗号隔开,基本语法格式如下:

INSERT INTO table_name(column_list) VALUES (values_list1), (values_list2), …, (value_listn);

在这里插入图片描述

将查询结果插入到表中

  • insert可以将select语句查询的结果插入到表中,语法如下:

INSERT INTO table_name1(column_list1) SELECT(column_list2) FROM table_name2 WHERE (condition);

在这里插入图片描述

设置自动编号

设置表的属性值自动增加,语法格式如下:

列名 数据类型 AUTO_INCREMENT

  • 注:AUTO_INCREMENT约束的字段可以是任何整数类型(tinyint, smallint, int等)

举例:
CREATE TABLE bookcategory(
  category_id int primary key auto_increment,
  category varchar(20) not null unique,
  parent_id int not null
);

  • 自增列的初始值默认是1,每添加一条记录,自动增长1
  • 在建表时可用“AUTO_INCREMENT=n” 选项来指定一个自增的初始值

在这里插入图片描述

指定一个自增长初始值

在这里插入图片描述

为已有的表添加自增列

CREATE TABLE bookcategory(
  category_id int primary key,
  category varchar(20) not null unique,
  parent_id int not null
);


  • alter table bookcatecategory modify category_id int auto_increment;

如果有外键链接,则需要删除链接再为表添加自增列,然后再恢复两表的外键关联
在这里插入图片描述
在这里插入图片描述

修改自增列的起始值

CREATE TABLE bookcategory(
  category_id int primary key auto_increment,
  category varchar(20) not null unique,
  parent_id int not null
);


  • alter table bookcategory auto_increment = n;
  • 修改后auto_increment列起始值从n开始

去掉自增列

alter table bookcategory modify category_id int;

单表数据记录的更新

  • MySQL中使用UPDATE语句更新表中的记录:
  • 更新特定的行
  • 更新所有的行
  • 语法格式:

UPDATE table_name
SET column_name1 = value1,
column_name2 = value2, … ,
column_namen = valuen
WHERE (condition);

  • 如果没有添加where条件,则更新所有行

在这里插入图片描述

单表记录的删除

  • 使用delete语句删除满足条件的记录,语法格式如下:

DELETE FROM table_name [WHERE (condition)];

  • 当添加where条件时,删除的是满足条件的记录,如果不添加where条件,删除的是所有的记录

在这里插入图片描述

  • 如果想删除表中的所有记录,还可以使用TRUNCATE TABLE语句,TRUNCATE将直接删除原来的表,再重新创建一个表,因为truncate删除的是表而不是记录,所以要比delete快,其语法结构为:

TRUNCATE TABLE table_name;

在这里插入图片描述

单表数据记录的查询

基本查询语句

  • MySQL从数据表中查询数据的基本语句为SELECT语句
  • 语法结构:

SELECT select_expr [, select_expr … ] //可以一列也可以多列
[
  FROM table_references //指定查询的数据表
  [WHERE condition] //需要满足的条件
  [GROUP BY {col_name | position} [ASC | DESC], … ] //对结果进行分组
  [HAVING where_condition] //对分组结果过滤,相当于二次分组
  [ORDER BY {col_name | expr | position} [ASC | DESC], … ] //对结果进行排序
  [LIMIT {[offset,] row_count | row_count OFFSET offset}] //限定数据行的行数
]

查询所有列

  • 在SELECT语句中使用星号“ * ”通配符查询所有列
  • 如:SELECT * FROM bookinfo;

  • 在SELECT语句中指定所有列
  • 如:SELECT book_id, book_category_id FROM bookinfo;

在这里插入图片描述

查询指定列

  • 查询单个列
  • 如:SELECT book_id FROM bookinfo;

  • 查询多个列
  • 如:SELECT book_id, book_category_id FROM bookinfo;
    在这里插入图片描述

查询指定记录

  • 在SELECT 语句中通过WHERE字句,对数据进行过滤,语法格式为:

SELECT columnName1, columnName2, , , columnNamen
FROM tbName
WHRER selectCondition;

在这里插入图片描述

查询结果不重复

  • 在SELECT 语句中可以使用DISTINCE关键字指示MySQL消除重复的记录值

SELECT DISTINCT columnName FROM tbName;

在这里插入图片描述

查询空值

  • 在SELECT 语句中使用IS NULL子句,可以查询某列内容为空记录
  • 如:SELECT * FROM readerinfo WHERE age IS NULL;
    在这里插入图片描述

对查询结果进行分组

  • 分组查询是对数据按照某个或多个列进行分组

[GROUP BY columnName] [HAVING <条件表达式>];

  • 查询结果分组

  • GROUP BY columnName

  • GROUP BY通常和聚合函数一起使用,例如:MAX(), MIN(), SUM(), AVG(), COUNT()

  • 例:

  • SELECT count(*) FROM readerinfo WHERE age= 20;

  • SELECT age, count(*) FROM readerinfo GROUP BY age;
    在这里插入图片描述

  • 使用HAVING过滤分组

[HAVING <条件表达式>]
HAVING 限定显示记录所需满足的条件,只有满足条件的分组才会被显示

  • 例:SELECT age FROM readerinfo GROUP BY age HAVING count(age) > 2;
    在这里插入图片描述

对查询结果排序

  • MySQL中可以通过ORDER BY 子句对查询的结果进行排序

ORDER columnName [ASC | DESC]

  • ASC : 升序
  • DESC :降序
  • 单列排序

  • 按照指定的某个列进行排序,默认升序

  • 例:SELECT * FROM readerinfo ORDER BY balance;
    在这里插入图片描述

  • 多列排序

  • 按照多个列进行排序,默认升序

  • 不指定升降序的情况下,多列排序是在单列排序中,对存在相同数值的区块再次排序

  • 例:SELECT * FROM readerinfo ORDER BY balance, age;
    在这里插入图片描述

  • 指定排序方向

  • 排序分为升序和降序,默认为升序

  • 升序:ASC

  • 降序:DESC

  • 例:SELECT * FROM readerinfo ORDER BY balance ASC, age DESC;
    在这里插入图片描述

用LIMIT限制查询结果的数量

  • LIMIT关键字可以返回指定位置的记录
  • 语法格式:LIMIT [位置偏移量, ] 行数
  • 说明:第一条记录的位置偏移量为0,第二条为1,,,,以此类推
  • 例:
  • 显示读者信息表的钱3行记录
  • SELECT * FROM readerinfo LIMIT 3;

  • 显示从第三条记录开始后的2条读者信息记录
  • SELECT * FORM readerinfo LIMIT 2, 2;
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/UserPython/article/details/82832492