MySQL如何在命令行操作表数据

60次阅读
没有评论

共计 6062 个字符,预计需要花费 16 分钟才能阅读完成。

这篇文章主要介绍了 MySQL 如何在命令行操作表数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

 
1. 与界面操作相比,通过 SQL 语句操作更为灵活,功能更为强大。
 
  为了让客服端能识别汉字:
 
set character_set_client=gb2312;
 
为了让结果不出现乱码:
 
set character_set_results=gb2312;
  www.2cto.com  
2.       插入记录命令
 
    一旦创建了数据库和表,下一步就是向表里插入数据。通过 insert 或 replace 语句可以向表中插入一行或多行数据。(replace 语句的用法和 insert 基本相同,使用 replace 可以在插入数据之前将与新纪录冲突的旧记录删除,从而使新纪录正常插入)
 
insert into 表名(字段名 1,字段名 2.。。。)
 
values(值 1,值 2.。。。);
 
例如:
 
Insert into xs(学号, 姓名, 专业名, 总学分, 照片, 备注)values(081101 , 王林 , 计算机 ,50,null,null);
 
或者:(如果提供的值的个数和顺序与表中字段一致,可以省略字段名)
 
insert into xs values(081101 , 王林 , 计算机 ,50,null,null);
 
或者:(如果只给表中的部分字段插入值时,要指明字段名)
 
insert into xs(学号, 姓名, 专业名, 出生日期, 总学分)
 
values(081101 , 王林 , 计算机 , 1990-02-10 ,50);
 
如果只给表的部分列插入数据,需要指定这些列。对于没有指出的列,它们的值根据列默认值或有关属性来确定,MySQL 处理的原则是:
 
3.  insert 语法格式:
 
Insert [low_priority |delayed | high_priority] [ignore]
 
     [into] 表名 [(字段名,…)]  www.2cto.com  
 
     values ({expr | default},…),(…),…
 
     | SET col_name={expr| default}, …
 
     [on duplicate keyupdate=expr, …]
 
(1)具有 identity 属性的列,系统生成序号值来唯一标志列。
 
(2)具有默认值的列,其值为默认值。
 
(3)没有默认值的列,若允许为空值,则其值为空值;若不允许为空值,则出错。
 
(4)类型为 timestamp 的列,系统自动赋值。
 
values 子句:包含各列需要插入的数据清单,数据的顺序要与列的顺序相对应。若表名后不给出列名,则在 values 子句中要给出每一列(除 identity 和 timestamp 类型的列)的值,如果列值为空,则值必须置为 null,否则会出错。values 子句中的值:
 
(1)expr:可以是一个常量、变量或一个表达式,也可以是空值 null,其值的数据类型要与列的数据类型一致。例如,列的数据类型为 int,插入的数据是 lsquo;aaa rsquo; 就会出错。当数据为字符型时要用单引号括起。
 
(2)default:指定为该列的默认值。前提是该列原先已经指定了默认值。如果列清单和 values 清单都为空,则 insert 会创建一行,每个列都设置成默认值。
 
Inert 语句支持下列修饰符: www.2cto.com  
 
low_priority:可以使用在 insert、delete 和 update 等操作中,当原有客户端正在读取数据时,延迟操作的执行,直到没有其他客户端从表中读取为止。
 
delayed:若使用此关键字,则服务器会把待插入的行放到一个缓冲器中,而发送 insert delayed 语句的客户端会继续运行。如果表正在被使用,则服务器会保留这些行。当表空闲时,服务器开始插入行,并定期检查是否有新的读取请求(仅适用于 myisam、memory 和 archive 表)。
 
High_priority:可以使用在 selectT 和 insert 操作中,使操作优先执行。
 
Ignore:使用此关键字,在执行语句时出现的错误就会被当做警告处理。
 
onduplicate key update hellip;:使用此选项插入行后,若导致 uniqe key 或 primary key 出现重复值,则根据 update 后的语句修改旧行(使用此选项时 delayed 被忽略)。
 
set 子句:set 子句用于给列指定值,使用 set 子句时表名的后面省略列名。要插入数据的列名在 set 子句中指定,col_name 为指定列名,等号后面为指定数据,未指定的列,列值指定为默认值。
 
4.   使用 insert 语句可以向表中插入一行数据,也可以插入多行数据,插入的行可以给出每列的值,也可只给出部分列的值,还可以向表中插入其他表的数据。
 
使用 insert into hellip;select hellip;,可以快速地从一个或多个表中向一个表插入多个行。语法格式如下:
 
Insert [low_priority |delayed | high_priority] [ignore]
 
     [into] 表名 [(字段名,…)]
 
    select …
 
[on duplicate key update=expr, …]
 
Select 语句中返回的是一个查询到的结果集,insert 语句将这个结果集插入到指定表中,但结果集在每行数据的字段数、字段的数据类型要与被操作的表完全一致。
 
    MySQL 还支持图片的存储,图片一般可以以路径的形式来存储,即插入图片可以采用直接插入图片的存储路径。当然也可以直接插入图片本身,只要用 load_file 函数即可。
 
例如:
 
Insert into XS  values(081102 , 程明 , 计算机 , 1, 1991-02-01 ,50, D:\IMAGE\picture.jpg , null);
 
下列语句是直接存储图片本身:
 
Insert into XS
 
    values(081102 , 程明 , 计算机 , 1, 1991-02-01 ,50, load_file( D:\IMAGE\picture.jpg), null);
 
    在表建完后设置主键,duplicateentry lsquo; 学号 rsquo;for key 1;
 
5. 删除记录:  www.2cto.com  
 
delete from 表名   // 删除表中的所有记录,此表变为了空表
 
delete from 表名 where 条件   // 删除表中符合条件的记录
 
例如:delete from xs where 学号 = 081102
 
drop table xs ; // 删除整张表,结构和记录
 
truncate table 表名   // 快速删除表中的所有记录
 
从单个表中删除,语法格式:
 
Delete [low_priority] [quick] [ignore] from 表名
 
 [where where_definition]  [orderby…] [limit row_count]
 
说明:
 
● quick 修饰符:可以加快部分种类的删除操作的速度。
 
● from 子句:用于说明从何处删除数据,后跟要删除数据的表名。
 
● where 子句:where_definition 中的内容为指定的删除条件。如果省略 where 子句则删除该表的所有行,where 子句后面详细介绍
 
●order by 子句:各行按照子句中指定的顺序进行删除,此子句只在与 limit 联用时才起作用。
 
●limit 子句:用于告知服务器在控制命令被返回到客户端前被删除的行的最大值。
 
6.   从多个表中删除行,语法格式:
 
delete [low_priority] [quick] [ignore] 表名[.*] [, 表名 [.*] …]  from table_references  [wherewhere_definition]
 
或:
 
delete [low_priority] [quick] [ignore]
 
   from  tbl_name[.*] [, tbl_name[.*] …]
 
   Using  table_references   [where where_definition]
 
说明:对于第一种语法,只删除列于 from 子句之前的表中对应的行。对于第二种语法,只删除列于 from 子句之中(在 using 子句之前)的表中对应的行。作用是,可以同时删除多个表中的行,并使用其他的表进行搜索。
 
例子:
 
假设有 3 个表 t1、t2、t3,它们都含有 id 列。要删除 t1 中 id 值等于 t2 的 id 值的所有行和 t2 中 id 值等于 t3 的 id 值的所有行,使用如下语句:
 
delete   t1, t2
 
     from  t1, t2, t3
 
     where  t1.id=t2.id and t2.id=t3.id;
 
或: www.2cto.com  
 
Delete from t1, t2 
 
     using t1, t2, t3
 
     where  t1.id=t2.id and  t2.id=t3.id;
 
7.   使用 truncate table 语句将删除指定表中的所有数据,因此也称其为清除表数据语句。
 
语法格式:
 
truncate table 表名;
 
说明:由于 TRUNCATETABLE 语句将删除表中的所有数据,且无法恢复,因此使用时必须十分小心。
 
truncate table 在功能上与不带 where 子句的 delete 语句相同,二者均删除表中的全部行。但 truncate table 比 delete 速度快,且使用的系统和事务日志资源少。delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项。而 truncate table 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。使用 truncate table,auto_increment 计数器被重新设置为该列的初始值。
 
注意:对于参与了索引和视图的表,不能使用 truncate table 删除数据,而应使用 delete 语句。
 
8.       修改记录(更新记录)
 
    要修改表中的一行数据,可以使用 update 语句,update 可以用来修改一个表,也可以修改多个表。简要格式:
 
update 表名
 
set 字段名 1 = 值 1 [, 字段名 2 = 值 2.。。。]
 
where 条件
 
修改单个表,语法格式:
 
update[low_priority] [ignore] 表名
 
   set col_name1=expr1 [, col_name2=expr2 …]
 
   [where where_definition]
 
   [order by …]  [limit row_count]
 
说明: 
 
 set 子句:根据 where 子句中指定的条件对符合条件的数据行进行修改。若语句中不设定 where 子句,则更新所有行。col_name1、col_name2 hellip; 为要修改列值的列名,expr1、expr2 hellip; 可以是常量、变量或表达式。可以同时修改所在数据行的多个列值,中间用逗号隔开。
 
9.   修改多个表,语法格式:
 
update [low_priority] [ignore] table_references
 
   set col_name1=expr1 [, col_name2=expr2 …]
 
   [where where_definition]
 
说明:table_references 中包含了多个表的联合,各表之间用逗号隔开。
 
10. 按 SQL 包的格式导进来:source SQL 包路径;
 
显示表的记录:select * from 表名; www.2cto.com  
 
插入记录时,除了数值类型不用加引号,其他类型都要加单引号(比如:char、date 等)
 
11.       show 语句
 
show tables 或 show tables from 库名:显示当前数据库中所有表的名称。
 
show databases:显示 MySQL 中所有数据库的名称。
 
show columns from 表名 from 库名或 show columnsfrom 库名. 表名:显示表中列的名称。
 
show  grants for user_name:显示一个用户的权限,显示结果类似于 grant 命令。
 
show index from table_name:显示表的索引。
 
show  staus:显示一些系统特定资源的信息,例如,正在运行的线程数量。
 
show variables:显示系统变量的名称和值。
 
show  processlist:显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有 process 权限,就可以查看所有人的进程,包括密码。
 
show table status:显示当前使用或者指定的 database 中的每个表的信息。信息包括表类型和表的最新更新时间。
 
show privileges:显示服务器所支持的不同权限。
 
show create database 库名:显示创建某一个数据库的 create database 语句。
 
show create table 表名:显示创建一个表的 create table 语句。
 
show events:显示所有事件的列表。
 
show innoDB status:显示 InnoDB 存储引擎的状态。
 
show logs:显示 BDB 存储引擎的日志。
 
show warnings:显示最后一个执行的语句所产生的错误、警告和通知。
 
show errors:只显示最后一个执行语句所产生的错误。
 
show [storage] engines:显示安装后的可用存储引擎和默认引擎。
 
show procedure status:显示数据库中所有存储过程基本信息,包括所属数据库、存储过程名称、创建时间等。
 
show create procedure sp_name:显示某一个存储过程的详细信息。
 
12. describe 语句(即 desc)
 
describe 语句用于显示表中各列的信息,结果等于 showcolumns from 语句。
 
语法格式:
 
{describe | desc} tb1_name [col_name |wild]
 
说明:
 
desc 是 describe 的简写,二者用法相同。
  www.2cto.com  
col_name 可以是一个列名称,或一个包含 lsquo;% rsquo; 和 lsquo;_ rsquo; 的通配符的字符串,用于获得对于带有与字符串相匹配的名称的各列的输出。没有必要在引号中包含字符串,除非其中包含空格或其他特殊字符。
 
例如:
 
显示学生表:desc|describe xs;
 
      显示学生表学号列:  desc xs 学号;
 
注意:用图形界面时,输入数据的时候要防止出现不必要的空格,否则检索数据时可能会出现。
 

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“MySQL 如何在命令行操作表数据”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计6062字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)