千家信息网

MySQL该如何操作数据表中的记录

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,下文主要给大家带来MySQL该如何操作数据表中的记录,希望这些内容能够带给大家实际用处,这也是我编辑MySQL该如何操作数据表中的记录这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。1.插入记
千家信息网最后更新 2025年02月01日MySQL该如何操作数据表中的记录

下文主要给大家带来MySQL该如何操作数据表中的记录,希望这些内容能够带给大家实际用处,这也是我编辑MySQL该如何操作数据表中的记录这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。

1.插入记录 INSERT

INSERT [INTO] tbl_name [(col_name,...)] {VAULES|VALUE} ({expr|DEFAULT},...),(...),...

例,插入单条记录:

mysql> USE testDatabase changedmysql> CREATE TABLE users(    -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,    -> username VARCHAR(20) NOT NULL,    -> password VARCHAR(32) NOT NULL,    -> age TINYINT UNSIGNED NOT NULL DEFAULT 10,    -> sex BOOLEAN    -> );mysql> INSERT users VALUES(NULL,'Tom','asd123',24,1);mysql> SELECT * FROM users;+----+----------+----------+-----+------+| id | username | password | age | sex  |+----+----------+----------+-----+------+|  1 | Tom      | asd123   |  24 |    1 |+----+----------+----------+-----+------+

插入多条记录:

mysql> INSERT users VALUES(DEFAULT,'John','asd123',24,1),    -> (NULL,'Huang','daddd',25,1);mysql> SELECT * FROM users;                           +----+----------+----------+-----+------+| id | username | password | age | sex  |+----+----------+----------+-----+------+|  1 | Tom      | asd123   |  24 |    1 ||  2 | John     | asd123   |  24 |    1 ||  3 | Huang    | daddd    |  25 |    1 |+----+----------+----------+-----+------+

插入数学表达式:

mysql> INSERT users VALUES(NULL,'John','asd123',3*7-5,1);mysql> SELECT * FROM users;+----+----------+----------+-----+------+| id | username | password | age | sex  |+----+----------+----------+-----+------+|  1 | Tom      | asd123   |  24 |    1 ||  2 | John     | asd123   |  24 |    1 ||  3 | Huang    | daddd    |  25 |    1 ||  4 | John     | asd123   |  16 |    1 |+----+----------+----------+-----+------+

插入md5的哈希密码:

mysql> INSERT users VALUES(NULL,'John',md5('123'),DEFAULT,0);mysql> SELECT * FROM users;+----+----------+----------------------------------+-----+------+| id | username | password                         | age | sex  |+----+----------+----------------------------------+-----+------+|  1 | Tom      | asd123                           |  24 |    1 ||  2 | John     | asd123                           |  24 |    1 ||  3 | Huang    | daddd                            |  25 |    1 ||  4 | John     | asd123                           |  16 |    1 ||  5 | John     | 202cb962ac59075b964b07152d234b70 |  10 |    0 |+----+----------+----------------------------------+-----+------+

2.插入记录 INSERT SET-SELECT

(与第一种方式的区别是 可以使用子查询,不可以同时插入多条记录)

INSERT [INTO] tbl_name SET col_name={expr|DEFAULT},...

例:

mysql> INSERT users SET username='Ben',password=md5('345');mysql> SELECT * FROM users;+----+----------------------+----------------------------------+-----+------+| id | username             | password                         | age | sex  |+----+----------------------+----------------------------------+-----+------+|  1 | Tom                  | asd123                           |  24 |    1 ||  2 | John                 | asd123                           |  24 |    1 ||  3 | Huang                | daddd                            |  25 |    1 ||  4 | John                 | asd123                           |  16 |    1 ||  5 | John                 | 202cb962ac59075b964b07152d234b70 |  10 |    0 ||  6 | Ben                  | d81f9c1be2e08964bf9f24b15f0e4900 |  10 | NULL |+----+----------------------+----------------------------------+-----+------+

3.更新记录 UPDATE

单表更新

UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT} [,col_name2={expr2|DEFAULT}]... [WHERE where_condition]
  • 例,将所有记录的年龄加5:

mysql> UPDATE users SET age = age+5;mysql> SELECT * FROM users;                                +----+----------------------+----------------------------------+-----+------+| id | username             | password                         | age | sex  |+----+----------------------+----------------------------------+-----+------+|  1 | Tom                  | asd123                           |  29 |    1 ||  2 | John                 | asd123                           |  29 |    1 ||  3 | Huang                | daddd                            |  30 |    1 ||  4 | John                 | asd123                           |  21 |    1 ||  5 | John                 | 202cb962ac59075b964b07152d234b70 |  15 |    0 ||  6 | Ben                  | d81f9c1be2e08964bf9f24b15f0e4900 |  15 | NULL |+----+----------------------+----------------------------------+-----+------+
  • 将Tom的年龄加10岁:

mysql> UPDATE users SET age = age+10 WHERE id=1;mysql> SELECT * FROM users WHERE id=1;+----+----------+----------+-----+------+| id | username | password | age | sex  |+----+----------+----------+-----+------+|  1 | Tom      | asd123   |  39 |    1 |+----+----------+----------+-----+------+
  • 将id为偶数的年龄加10岁:

mysql> UPDATE users SET age = age+10 WHERE id % 2 = 0;mysql> select * from users;                           +----+----------------------+----------------------------------+-----+------+| id | username             | password                         | age | sex  |+----+----------------------+----------------------------------+-----+------+|  1 | Tom                  | asd123                           |  39 |    1 ||  2 | John                 | asd123                           |  39 |    1 ||  3 | Huang                | daddd                            |  30 |    1 ||  4 | John                 | asd123                           |  31 |    1 ||  5 | John                 | 202cb962ac59075b964b07152d234b70 |  15 |    0 |+----+----------------------+----------------------------------+-----+------+
  • 修改所有记录的sex为0:

mysql> UPDATE users SET sex = 0;mysql> select * from users;    +----+----------------------+----------------------------------+-----+------+| id | username             | password                         | age | sex  |+----+----------------------+----------------------------------+-----+------+|  1 | Tom                  | asd123                           |  39 |    0 ||  2 | John                 | asd123                           |  39 |    0 ||  3 | Huang                | daddd                            |  30 |    0 ||  4 | John                 | asd123                           |  31 |    0 ||  5 | John                 | 202cb962ac59075b964b07152d234b70 |  15 |    0 ||  7 | Ben                  | d81f9c1be2e08964bf9f24b15f0e4900 |  15 |    0 |+----+----------------------+----------------------------------+-----+------+

4.删除记录 DELETE

单表删除 (若不添加WHERE则删除【全部记录】)

DELETE FROM tbl_name [WHERE where_condition]
  • 例,删除id=7的记录:

mysql> DELETE FROM users WHERE id = 7;mysql> select * from users;           +----+----------+----------------------------------+-----+------+| id | username | password                         | age | sex  |+----+----------+----------------------------------+-----+------+|  1 | Tom      | asd123                           |  39 |    0 ||  2 | John     | asd123                           |  39 |    0 ||  3 | Huang    | daddd                            |  30 |    0 ||  4 | John     | asd123                           |  31 |    0 ||  5 | John     | 202cb962ac59075b964b07152d234b70 |  15 |    0 |+----+----------+----------------------------------+-----+------+

5.查找记录 SELECT

SELECT select_expr [,select_expr...][  FROM tbl_references  [WHERE where_condition]  [GROUP BY {col_name | position} [ASC | DESC],...]  [HAVING where_condition]  [ORDER BY {col_name | expo | position}  [ASC | DESC],...]  [LIMIT {[offset,] row_count | row_count OFFSET offset}]]

查询表达式(select_expr)

1. 每一个表达式表示想要的一列,必须有至少一个

2. 多个列之间以英文逗号分隔

3. 星号(*)表示所有列;tbl_name.*可以表示命名表的所有列

4. 查询表达式可以使用[AS]alias_name为其赋予别名

5. 别名可用于GROUP BY,ORDER BY或HAVING子句

SELECT查询表达式字段出现的顺序将影响结果集字段出现的顺序

字段的别名也会影响以后的结果集 , 在以后的PHP中有重要作用

例,只查询users表中 id 和 username 两列:

mysql> SELECT id,username FROM users;+----+----------+| id | username |+----+----------+|  1 | Tom      ||  2 | John     ||  3 | Huang    ||  4 | John     ||  5 | John     |+----+----------+

查询users表中 id 和 username 两列,分别用userid,uname作为别名:

mysql> SELECT id AS userid ,username AS uname FROM users;                         +--------+-------+| userid | uname |+--------+-------+|      1 | Tom   ||      2 | John  ||      3 | Huang ||      4 | John  ||      5 | John  |+--------+-------+

6.where语句进行条件查询

  • 条件表达式(WHERE)

  • 对记录进行过滤,如果没有指定WHERE子句,则显示所有记录

  • 在WHERE表达式中,可以使用MySQL支持的函数或运算符

7.group by语句对查询结果分组

group by

查询结果分组

[GROUP BY {col_name | position} [ASC | DESC],...]

可以制定列的列名和列的位置。

asc生序,desc降序,多个分组中间用逗号区分。

例,查询users表,按照性别分组:

mysql> SELECT sex FROM users GROUP BY sex;+------+| sex  |+------+|    0 |+------+

8.having语句设置分组条件

分组条件(HAVING)

[HAVING where_condition]

其中,where_condition要么是聚合函数(max,min,avg,count,sum),要么其中的字段必须是SELECT中的一个查询字段,否则会报错]

例,查询users表中sex分组,条件为age>20(这种方法需要查询字段也添加age字段):

mysql> SELECT sex,age FROM users GROUP BY sex having age > 20; +------+-----+| sex  | age |+------+-----+|    0 |  39 |+------+-----+

查询users表中sex分组,条件为id >=2 :

mysql> SELECT sex FROM users GROUP BY sex HAVING count(id) >= 2;    +------+| sex  |+------+|    0 |+------+

9.order by语句对查询结果排序

对查询结果进行排序(ORDER BY)

[ORDER BY {col_name | expr | position} [ASC | DESC],...]

可以按照多个列排序

例,查询users表,按年龄从小到大排列:

mysql> SELECT * FROM users ORDER BY age ASC; +----+----------+----------------------------------+-----+------+| id | username | password                         | age | sex  |+----+----------+----------------------------------+-----+------+|  8 | Hui      | 9e1e06ec8e02f0a0074f2fcc6b26303b |   8 |    1 ||  5 | John     | 202cb962ac59075b964b07152d234b70 |  15 |    0 || 10 | Luyuan   | 9e1e06ec8e02f0a0074f2fcc6b26303b |  21 |    1 ||  9 | Dui      | 9e1e06ec8e02f0a0074f2fcc6b26303b |  27 |    1 ||  3 | Huang    | daddd                            |  30 |    0 || 12 | Murouan  | 9e1e06ec8e02f0a0074f2fcc6b26303b |  31 |    1 || 11 | Oduyuan  | 9e1e06ec8e02f0a0074f2fcc6b26303b |  31 |    1 || 13 | Spqoan   | 9e1e06ec8e02f0a0074f2fcc6b26303b |  31 |    1 ||  4 | John     | asd123                           |  31 |    0 ||  2 | John     | asd123                           |  39 |    0 ||  1 | Tom      | asd123                           |  39 |    0 |+----+----------+----------------------------------+-----+------+

查询users表,第一顺序按年龄从小到大排列,第二顺序按id从小到大排列:

mysql> SELECT * FROM users ORDER BY age,id ASC;+----+----------+----------------------------------+-----+------+| id | username | password                         | age | sex  |+----+----------+----------------------------------+-----+------+|  8 | Hui      | 9e1e06ec8e02f0a0074f2fcc6b26303b |   8 |    1 ||  5 | John     | 202cb962ac59075b964b07152d234b70 |  15 |    0 || 10 | Luyuan   | 9e1e06ec8e02f0a0074f2fcc6b26303b |  21 |    1 ||  9 | Dui      | 9e1e06ec8e02f0a0074f2fcc6b26303b |  27 |    1 ||  3 | Huang    | daddd                            |  30 |    0 ||  4 | John     | asd123                           |  31 |    0 || 11 | Oduyuan  | 9e1e06ec8e02f0a0074f2fcc6b26303b |  31 |    1 || 12 | Murouan  | 9e1e06ec8e02f0a0074f2fcc6b26303b |  31 |    1 || 13 | Spqoan   | 9e1e06ec8e02f0a0074f2fcc6b26303b |  31 |    1 ||  1 | Tom      | asd123                           |  39 |    0 ||  2 | John     | asd123                           |  39 |    0 |+----+----------+----------------------------------+-----+------+

10.LIMIT语句限制查询数量

LIMIT 限制查询结果返回的数量

[LIMIT{[offset,]row_count|row_count OFFSET offset}]
SELECT * from users  #返回所有的结果 SELECT * from users limit 2  #返回所有的结果集中前两条
mysql> SELECT * FROM users LIMIT 2;+----+----------+----------+-----+------+| id | username | password | age | sex  |+----+----------+----------+-----+------+|  1 | Tom      | asd123   |  39 |    0 ||  2 | John     | asd123   |  39 |    0 |+----+----------+----------+-----+------+
SELECT * FROM users LIMIT 2,2;  #要查询结果集中第3条和第4条记录。mysql中的记录是从0开始的,共几条。
mysql> SELECT * FROM users LIMIT 2,2;+----+----------+----------+-----+------+| id | username | password | age | sex  |+----+----------+----------+-----+------+|  3 | Huang    | daddd    |  30 |    0 ||  4 | John     | asd123   |  31 |    0 |+----+----------+----------+-----+------+

总结

记录操作: INSERT , UPDATE , DELETE , SELECT

1.insert的三种

insert [into]  表名 [(列名,列名)]{values|value} ({(表达式|default},())insert [into]  表名 set 列名={(表达式|default},。。insert [into]  表名 [(列名,列名)] SELECT..

2.UPDATE

(1)单表更新

UPDATE [LOW_PRIORITY][IGNORE] table_reference SET col_name1={expr1|DEFAULT},[col_name2={expr2|DEFAULT}]...[WHERE where_condition]

多表更新

3.DELETE : 删除数据

(1)单表删除

DELETE FROM tbl_name [WHERE where_condition}

4.SELECT: //查询

SELECT select_expr [,select expr2...] #只查找某一个函数或表达式[FROM table_references #查询表名[WHERE where_conditon]  #查询条件[GROUP BY {col_name|position} [ASC|DESC],...] #按某个字段进行分组,相同的只显示第一个[HAVING where_conditon] #分组时,给出显示条件[ORDER BY {col_name|expr|position} [ASC|DESC],...] #排序[LIMIT {[offset,]row_count|row_count OFFSET offset}] #限制返回数量]

SELECT

FROM 表的参照

WHERE 条件

GROUP BY 对记录结果进行分组

HAVING 对分组条件的设定

结合内容,将查找的结果存储在指定的数据表:

mysql> CREATE TABLE test(    -> id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,    -> username VARCHAR(20) NOT NULL    -> );
mysql> INSERT test(username) SELECT username FROM users WHERE age >= 25;mysql> SELECT * FROM test;                                   +----+----------+| id | username |+----+----------+|  1 | Tom      ||  2 | John     ||  3 | Huang    ||  4 | John     ||  5 | Dui      ||  6 | Oduyuan  ||  7 | Murouan  ||  8 | Spqoan   |+----+----------+ 

对于以上关于MySQL该如何操作数据表中的记录,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。

0