Linux MySQL --- 实用语句

1.1插入或替换

# 如果我们希望插入一条新记录(INSERT),但如果记录已经存在,就先删除原记录,再插入新记录。此时可以使用REPLACE语句,这样就不必先查询,再决定是否先删除再插入

MySQL [mysql_chuid]> select * from students;    # 查询表students中的信息

+----+-----------+------+

| id | name_list | sex  |

+----+-----------+------+

|  1 | chd       | man  |

|  3 | chuid     | man  |

|  5 | anivd     | man  |

|  6 | chen      | man  |

+----+-----------+------+

4 rows in set (0.00 sec)

MySQL [mysql_chuid]> replace into students (id,name_list,sex)values(8,'chuid','man');   # 替换原数据

Query OK, 2 rows affected (0.03 sec)

MySQL [mysql_chuid]> select * from students;

+----+-----------+------+

| id | name_list | sex  |

+----+-----------+------+

|  1 | chd       | man  |

|  5 | anivd     | man  |

|  6 | chen      | man  |

|  8 | chuid     | man  |

+----+-----------+------+

4 rows in set (0.00 sec)

MySQL [mysql_chuid]> replace into students (id,name_list,sex)values(4,'wang','man');   # 插入新数据

Query OK, 1 row affected (0.00 sec)

MySQL [mysql_chuid]> select * from students;

+----+-----------+------+

| id | name_list | sex  |

+----+-----------+------+

|  1 | chd       | man  |

|  4 | wang      | man  |

|  5 | anivd     | man  |

|  6 | chen      | man  |

|  8 | chuid     | man  |

+----+-----------+------+

5 rows in set (0.00 sec)

1.2插入或更新

INSERT INTO ... ON DUPLICATE KEY UPDATE ... 语句

# 如果我们希望插入一条新记录(INSERT),但如果记录已经存在,就更新该记录;若记录不存在,INSERT语句将插入新记录。

MySQL [mysql_chuid]> insert into students(id,name_list,sex)values(1,'chd','man')on duplicate key update name_list='chd',sex='man';

Query OK, 0 rows affected, 1 warning (0.04 sec)

MySQL [mysql_chuid]> select * from students;

+----+-----------+------+

| id | name_list | sex  |

+----+-----------+------+

|  1 | chd       | man  |

|  4 | wang      | man  |

|  5 | anivd     | man  |

|  6 | chen      | man  |

|  8 | chuid     | man  |

+----+-----------+------+

5 rows in set (0.00 sec)

**************************************************************************************************************

MySQL [mysql_chuid]> alter table students add height int(5) default '171';   # 增加表的字段(height)

Query OK, 0 rows affected (0.08 sec)

Records: 0  Duplicates: 0  Warnings: 0

MySQL [mysql_chuid]> alter table students add weight int(5) default '130';   # 增加表的字段(weight)

Query OK, 0 rows affected (0.23 sec)

Records: 0  Duplicates: 0  Warnings: 0

MySQL [mysql_chuid]> select * from students;

+----+-----------+------+--------+--------+

| id | name_list | sex  | weight | height |

+----+-----------+------+--------+--------+

|  1 | chd       | man  |    130 |    171 |

|  4 | wang      | man  |    130 |    171 |

|  5 | anivd     | man  |    130 |    171 |

|  6 | chen      | man  |    130 |    171 |

|  8 | chuid     | man  |    130 |    171 |

+----+-----------+------+--------+--------+

5 rows in set (0.00 sec)

MySQL [mysql_chuid]> insert into students(id,name_list,sex)values(2,'wang','man')on duplicate key update name_list='wang',sex='woman',weight=105,height=165;                   # 插入更新

Query OK, 2 rows affected, 1 warning (0.01 sec)

MySQL [mysql_chuid]> select * from students;

+----+-----------+-------+--------+--------+

| id | name_list | sex   | weight | height |

+----+-----------+-------+--------+--------+

|  1 | chd       | man   |    130 |    171 |

|  2 | wang      | woman |    105 |    165 |

|  5 | anivd     | man   |    130 |    171 |

|  6 | chen      | man   |    130 |    171 |

|  8 | chuid     | man   |    130 |    171 |

+----+-----------+-------+--------+--------+

5 rows in set (0.00 sec)

1.3 插入或忽略

INSERT IGNORE INTO ... 语句

# 插入一条新记录(INSERT),如果记录已经存在,就什么都不做直接忽略;若记录不存在,INSERT语句将插入新记录。

MySQL [mysql_chuid]> insert ignore into students(id,name_list,sex,weight,height)values(5,'anivd','man',130,171);

Query OK, 0 rows affected (0.00 sec)

 

MySQL [mysql_chuid]> select * from students;

+----+-----------+-------+--------+--------+

| id | name_list | sex   | weight | height |

+----+-----------+-------+--------+--------+

|  1 | chd       | man   |    130 |    171 |

|  2 | wang      | woman |    105 |    165 |

|  5 | anivd     | man   |    130 |    171 |

|  6 | chen      | man   |    130 |    171 |

|  8 | chuid     | man   |    130 |    171 |

+----+-----------+-------+--------+--------+

5 rows in set (0.00 sec)

MySQL [mysql_chuid]> insert ignore into students(id,name_list,sex,weight,height)values(7,'zhang','woman',98,162);

Query OK, 1 row affected (0.03 sec)

MySQL [mysql_chuid]> select * from students;

+----+-----------+-------+--------+--------+

| id | name_list | sex   | weight | height |

+----+-----------+-------+--------+--------+

|  1 | chd       | man   |    130 |    171 |

|  2 | wang      | woman |    105 |    165 |

|  5 | anivd     | man   |    130 |    171 |

|  6 | chen      | man   |    130 |    171 |

|  7 | zhang     | woman |     98 |    162 |

|  8 | chuid     | man   |    130 |    171 |

+----+-----------+-------+--------+--------+

6 rows in set (0.00 sec)

快照

# 如果想要对一个表进行快照,即复制一份当前表的数据到一个新表,可以结合CREATE TABLE和SELECT

MySQL [mysql_chuid]> select * from students;

+----+-----------+-------+--------+--------+

| id | name_list | sex   | weight | height |

+----+-----------+-------+--------+--------+

|  1 | chd       | man   |    130 |    171 |

|  2 | wang      | woman |    105 |    165 |

|  5 | anivd     | man   |    130 |    171 |

|  6 | chen      | man   |    130 |    171 |

|  7 | zhang     | woman |     98 |    162 |

|  8 | chuid     | man   |    130 |    171 |

+----+-----------+-------+--------+--------+

6 rows in set (0.00 sec)

MySQL [mysql_chuid]> create table students_1 select * from students where id=7;

Query OK, 1 row affected (0.12 sec)

Records: 1  Duplicates: 0  Warnings: 0

MySQL [mysql_chuid]> select * from students_1;

+----+-----------+-------+--------+--------+

| id | name_list | sex   | weight | height |

+----+-----------+-------+--------+--------+

|  7 | zhang     | woman |     98 |    162 |

+----+-----------+-------+--------+--------+

1 row in set (0.00 sec)

MySQL [mysql_chuid]> create table students_2 select * from students where id=1;

Query OK, 1 row affected (0.95 sec)

Records: 1  Duplicates: 0  Warnings: 0

MySQL [mysql_chuid]> select * from students_2;

+----+-----------+------+--------+--------+

| id | name_list | sex  | weight | height |

+----+-----------+------+--------+--------+

|  1 | chd       | man  |    130 |    171 |

+----+-----------+------+--------+--------+

1 row in set (0.00 sec)

克隆表

# 将数据表的数据记录生成到新的表中

CREATE TABLE <新表> LIKE <源表>

INSERT INTO  <新表> SELECT * FROM <源表>

MySQL [mysql_chuid]> show tables;

+-----------------------+

| Tables_in_mysql_chuid |

+-----------------------+

| students              |

| students_1            |

| students_2            |

+-----------------------+

3 rows in set (0.00 sec)

MySQL [mysql_chuid]> create table students_6 like students_2;

Query OK, 0 rows affected (0.11 sec)

MySQL [mysql_chuid]> desc students_6;

+-----------+-------------+------+-----+---------+-------+

| Field     | Type        | Null | Key | Default | Extra |

+-----------+-------------+------+-----+---------+-------+

| id        | int(5)      | NO   |     | 0       |       |

| name_list | varchar(10) | YES  |     | NULL    |       |

| sex       | char(6)     | YES  |     | man     |       |

| weight    | int(5)      | YES  |     | 130     |       |

| height    | int(5)      | YES  |     | 171     |       |

+-----------+-------------+------+-----+---------+-------+

5 rows in set (0.00 sec)

MySQL [mysql_chuid]> insert into students_6 select * from students_2;

Query OK, 1 row affected (0.00 sec)

Records: 1  Duplicates: 0  Warnings: 0

MySQL [mysql_chuid]> select * from students_6;

+----+-----------+------+--------+--------+

| id | name_list | sex  | weight | height |

+----+-----------+------+--------+--------+

|  1 | chd       | man  |    130 |    171 |

+----+-----------+------+--------+--------+

1 row in set (0.00 sec)

清空表

# 删除表内的所有数据

DELETE FROM <数据表>

TRUNCATE table <数据表>

MySQL [mysql_chuid]> select * from students_5;

+----+-----------+-------+--------+--------+

| id | name_list | sex   | weight | height |

+----+-----------+-------+--------+--------+

|  7 | zhang     | woman |     98 |    162 |

+----+-----------+-------+--------+--------+

1 row in set (0.00 sec)

MySQL [mysql_chuid]> delete from students_5;

Query OK, 1 row affected (0.02 sec)

MySQL [mysql_chuid]> select * from students_5;

Empty set (0.00 sec)

*****************************************************************************************************

# 清空表后,返回的结果内有删除的记录条目;delete工作时是一行一行的删除记录数据的,如果表中有自增长字段,使用delete from删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。

MySQL [mysql_chuid]> create table students_7 (id int primary key auto_increment,name varchar(20) not null,age char(2) not null unique key);

Query OK, 0 rows affected (0.08 sec)

# id int (整型)      # primary key (主键)     # auto_increment (从1开始自动递增)

MySQL [mysql_chuid]> show tables;

+-----------------------+

| Tables_in_mysql_chuid |

+-----------------------+

| students              |

| students_1            |

| students_2            |

| students_3            |

| students_5            |

| students_6            |

| students_7            |

+-----------------------+

7 rows in set (0.01 sec)

MySQL [mysql_chuid]> insert into students_7 (name,age) values ('chen','28');  # 插入数据

Query OK, 1 row affected (0.06 sec)

MySQL [mysql_chuid]> select * from students_7;    # 查询表内的数据

+----+------+-----+

| id | name | age |

+----+------+-----+

|  1 | chen | 28  |

+----+------+-----+

1 row in set (0.00 sec)

MySQL [mysql_chuid]> delete from students_7;   # 删除表内的数据

Query OK, 1 row affected (0.00 sec)

MySQL [mysql_chuid]> select * from students_7;

Empty set (0.00 sec)

MySQL [mysql_chuid]> insert into students_7 (name,age) values ('chuid','27');

Query OK, 1 row affected (0.00 sec)

MySQL [mysql_chuid]> select * from students_7;

+----+-------+-----+

| id | name  | age |

+----+-------+-----+

|  3 | chuid | 27  |

+----+-------+-----+

1 row in set (0.00 sec)

MySQL [mysql_chuid]> insert into students_7 (name,age) values ('chd','28');

Query OK, 1 row affected (0.00 sec)

MySQL [mysql_chuid]> select * from students_7;

+----+-------+-----+

| id | name  | age |

+----+-------+-----+

|  3 | chuid | 27  |

|  5 | chd   | 28  |

+----+-------+-----+

2 rows in set (0.00 sec)

****************************************************************************************************

# truncate清空表后,没有返回被删除的条目;truncate工作时是将表结构按原样重新建立,因此在速度上truncate会比delete清空表快,使用truncate清空表内数据后,ID会从1开始重新记录。

MySQL [mysql_chuid]> select * from students_7;

+----+-------+-----+

| id | name  | age |

+----+-------+-----+

|  3 | chuid | 27  |

|  5 | chd   | 28  |

+----+-------+-----+

2 rows in set (0.00 sec)

MySQL [mysql_chuid]> truncate table students_7;    # 清空表内的数据

Query OK, 0 rows affected (0.22 sec)

MySQL [mysql_chuid]> select * from students_7;

Empty set (0.00 sec)

MySQL [mysql_chuid]> insert into students_7 (name,age) values ('chd','25');

Query OK, 1 row affected (0.02 sec)

MySQL [mysql_chuid]> select * from students_7;   # ID从1开始

+----+------+-----+

| id | name | age |

+----+------+-----+

|  1 | chd  | 25  |

+----+------+-----+

1 row in set (0.00 sec)

创建临时表

# 临时表创建成功之后,使用show table命令看不到创建的临时表,临时表会在连接退出后被销毁,在退出连接之前可以执行增删改查等操作。

也可以使用drop table语句手动删除临时表

CREATE temporary table 表名 (字段1 数据类型,字段2 数据类型[,...][,primary key(主键名)]);

MySQL [mysql_chuid]> create temporary table students_9(id int(5),name char(10),sex char(6),height int(5),weight int(5),primary key(id));

Query OK, 0 rows affected (0.09 sec)

MySQL [mysql_chuid]> insert into students_9 values(1,'chuid','man',171,130);

Query OK, 1 row affected (0.01 sec)

MySQL [mysql_chuid]> select * from students_9;

+----+-------+------+--------+--------+

| id | name  | sex  | height | weight |

+----+-------+------+--------+--------+

|  1 | chuid | man  |    171 |    130 |

+----+-------+------+--------+--------+

1 row in set (0.00 sec)

MySQL [mysql_chuid]> show tables;

+-----------------------+

| Tables_in_mysql_chuid |

+-----------------------+

| students              |

| students_5            |

| students_6            |

| students_7            |

| students_8            |

+-----------------------+

8 rows in set (0.00 sec)

猜你喜欢

转载自blog.csdn.net/C_huid/article/details/115263020
今日推荐