MySQL有很多的可视化管理工具,比如“mysql-workbench”和“sequel-pro-”。现在我写MySQL的终端命令操作的文章,是想强化一下自己对于MySQL的理解,总会比使用图形化的理解透彻,因为我本来就比较喜欢写代码。同时写出来这些文章,是想要给大家当个参考,希望也能对大家有所帮助,有所提升,这就是我为什么要写终端操作MySQL的文章了。
注意:MySQL数据库命令不区分大小写。但在MAC的终端,如果你想使用tab自动补全命令,那么你就必须使用大写,这样MAC的终端才会帮你补全命令,否则你按N遍tab都不会有响应。
1、数据库(database)管理
1.1create创建数据库
1.2show查看所有数据库
1.3alter修改数据库
1.4use使用数据库
1.5查看当前使用的数据库
1.6drop删除数据库
2、数据表(table)管理
2.1 create 创建表
2.2 show显示表
2.3desc查看表结构
2.4alter修改表结构(增、删、改)
2.4.1insert在表中添加列(字段)
2.4.2alter修改表(列)字段
2.4.3delete删除表(列)字段
2.4.4rename重命名表名
2.5create利用已有数据创建新表
3、数据的操作及管理
3.1增加数据(增)
3.2删除数据(删)
3.3修改数据(改)
3.4查询数据(查)
4、管理视图
1、数据库(database)管理
1.1create创建数据库
createdatabasefirstDB;
1.2show查看所有数据库
mysql>showdatabases; +--------------------+ |Database| +--------------------+ |information_schema| |firstDB| |mysql| |performance_schema| +--------------------+ 4rowsinset(0.00sec)
1.3alter修改数据库
alter命令修改数据库编码:
默认创建的数据库默认不支持中文字符,如果我们需要它支持中文字符,则将它的编码设置为utf8格式:
mysql>ALTERDATABASEtestDBCHARACTERSETUTF8; QueryOK,1rowaffected(0.00sec)
1.4use使用数据库
mysql>usefirstDB; Databasechanged
1.5查看当前使用的数据库
mysql>selectdatabase(); +------------+ |database()| +------------+ |firstdb| +------------+ 1rowinset(0.00sec)
1.6drop删除数据库
mysql>dropdatabasefirstDB; QueryOK,0rowsaffected(0.00sec)
2、数据表(table)管理
我们首先创建一个数据库,提供我们往后的使用:
mysql>createdatabasetestDB; QueryOK,1rowaffected(0.00sec)
创建后记得用use命令进入(使用)数据库,不然后面的操作都会不成功的。
2.1create创建表
mysql>createtablePEOPLE( ->IDintAUTO_INCREMENTPRIMARYKEY, ->NAMEvarchar(20)notnull, ->AGEintnotnull, ->BIRTHDAYdatetime); QueryOK,0rowsaffected(0.01sec)
2.2show显示表
显示当前数据库所有的数据表
mysql>showtables; +------------------+ |Tables_in_testdb| +------------------+ |PEOPLE| +------------------+ 1rowinset(0.00sec)
2.3desc查看表结构
mysql>descPEOPLE ->; +----------+-------------+------+-----+---------+----------------+ |Field|Type|Null|Key|Default|Extra| +----------+-------------+------+-----+---------+----------------+ |ID|int(11)|NO|PRI|NULL|auto_increment| |NAME|varchar(20)|NO||NULL|| |AGE|int(11)|NO||NULL|| |BIRTHDAY|datetime|YES||NULL|| +----------+-------------+------+-----+---------+----------------+ 4rowsinset(0.01sec)
2.4alter修改表结构(增、删、改)
默认创建的表不支持中文字符,所以需将表编码设置为utf8:
mysql>ALTERTABLEKEYCHAINCONVERTTOCHARACTERSETUTF8; QueryOK,1rowaffected(0.02sec) Records:1Duplicates:0Warnings:0
2.4.1insert在表中添加列(字段)
mysql>altertablePEOPLEaddstarBOOL; QueryOK,0rowsaffected(0.02sec) Records:0Duplicates:0Warnings:0
提示:在MySQL里,布尔类型会自动转换为tinyint(1)类型。
我们不妨使用desc去查看一下PEOPLE表结构:
mysql>descPEOPLE; +----------+-------------+------+-----+---------+----------------+ |Field|Type|Null|Key|Default|Extra| +----------+-------------+------+-----+---------+----------------+ |ID|int(11)|NO|PRI|NULL|auto_increment| |NAME|varchar(20)|NO||NULL|| |AGE|int(11)|NO||NULL|| |BIRTHDAY|datetime|YES||NULL|| |star|tinyint(1)|YES||NULL|| +----------+-------------+------+-----+---------+----------------+ 5rowsinset(0.00sec)
现在,你该相信我了吧?
2.4.2alter修改表(列)字段
mysql>altertablePEOPLEMODIFYstarint; QueryOK,0rowsaffected(0.01sec) Records:0Duplicates:0Warnings:0
也可以指定int(n)的长度,比如int(2)。
我们再次使用desc查看PEOPLE表结构:
mysql>descPEOPLE; +----------+-------------+------+-----+---------+----------------+ |Field|Type|Null|Key|Default|Extra| +----------+-------------+------+-----+---------+----------------+ |ID|int(11)|NO|PRI|NULL|auto_increment| |NAME|varchar(20)|NO||NULL|| |AGE|int(11)|NO||NULL|| |BIRTHDAY|datetime|YES||NULL|| |star|int(11)|YES||NULL|| +----------+-------------+------+-----+---------+----------------+ 5rowsinset(0.00sec)
2.4.3delete删除表(列)字段
mysql>altertablePEOPLEDROPcolumnstar; QueryOK,0rowsaffected(0.02sec) Records:0Duplicates:0Warnings:0
删除后,再次查看PEOPLE表结构:
mysql>descPEOPLE; +----------+-------------+------+-----+---------+----------------+ |Field|Type|Null|Key|Default|Extra| +----------+-------------+------+-----+---------+----------------+ |ID|int(11)|NO|PRI|NULL|auto_increment| |NAME|varchar(20)|NO||NULL|| |AGE|int(11)|NO||NULL|| |BIRTHDAY|datetime|YES||NULL|| +----------+-------------+------+-----+---------+----------------+ 4rowsinset(0.00sec)
删除字段成功,现在我们已经不能看到star的字段了。
2.4.4rename重命名表名
mysql>RENAMETABLEPEOPLETONEW_PEOPLE; QueryOK,0rowsaffected(0.00sec)
2.4.5nullornotnull
修改表字段允许为空或不允许为空:
mysql>ALTERTABLEPEOPLEMODIFYAGEINT(3)NULL; QueryOK,0rowsaffected(0.01sec) Records:0Duplicates:0Warnings:0
把PEOPLE表的AGE字段设置成“允许为空”,即插入记录时这个字段可以不录入。否则相反。
它的格式为:ALTERTABLE<TALBE_NAME>MODIFY<CLOUMN><NULL’OR’NOTNULL>
2.5create利用已有数据创建新表
mysql>createtablenewTableselect*fromPEOPLE; QueryOK,0rowsaffected(0.01sec) Records:0Duplicates:0Warnings:0
我们查看一下目前数据库存在的表:
mysql>showtables; +------------------+ |Tables_in_testdb| +------------------+ |PEOPLE| |newTable| +------------------+ 2rowsinset(0.00sec)
3、数据的操作及管理
数据表的基本操作,包含增、删、改、查数据。
以下命令均在PEOPLE表上操作。
3.1增加数据(增)
PEOPLE表目前是没有数据的,它是空的数据表,我们现在先添加一些数据。
insertinto命令添加数据:
mysql>insertintoPEOPLEVALUES(null,'Anny',22,'1992-05-22'); QueryOK,1rowaffected(0.00sec)
使用select命令查看表(会在后面介绍),现在我们查看PEOPLE数据表的数据:
mysql>select*fromPEOPLE; +----+------+-----+---------------------+ |ID|NAME|AGE|BIRTHDAY| +----+------+-----+---------------------+ |1|Anny|22|1992-05-2200:00:00| +----+------+-----+---------------------+ 1rowinset(0.00sec)
数据表现在有一条数据。
我们多添加几条数据,如:
mysql>select*fromPEOPLE; +----+--------+-----+---------------------+ |ID|NAME|AGE|BIRTHDAY| +----+--------+-----+---------------------+ |1|Anny|22|1992-05-2200:00:00| |2|Garvey|23|1991-05-2200:00:00| |3|Lisa|25|1989-05-2200:00:00| |4|Nick|24|1990-05-2200:00:00| |5|Rick|24|1991-05-2200:00:00| +----+--------+-----+---------------------+ 5rowsinset(0.00sec)
3.2删除数据(删)
delete命令删除数据:
mysql>deletefromPEOPLEwherename='Lisa'; QueryOK,1rowaffected(0.01sec)
再次查询PEOPLE表:
mysql>select*fromPEOPLE; +----+--------+-----+---------------------+ |ID|NAME|AGE|BIRTHDAY| +----+--------+-----+---------------------+ |1|Anny|22|1992-05-2200:00:00| |2|Garvey|23|1991-05-2200:00:00| |4|Nick|24|1990-05-2200:00:00| |5|Rick|24|1991-05-2200:00:00| +----+--------+-----+---------------------+ 4rowsinset(0.00sec)
已经看不到名为“Lisa”的数据了。
3.3修改数据(改)
update命令修改数据:
mysql>updatePEOPLEsetname='Calvin'wherename='Garvey'; QueryOK,1rowaffected(0.00sec) Rowsmatched:1Changed:1Warnings:0
查询PEOPLE表内容:
mysql>select*fromPEOPLE; +----+--------+-----+---------------------+ |ID|NAME|AGE|BIRTHDAY| +----+--------+-----+---------------------+ |1|Anny|22|1992-05-2200:00:00| |2|Calvin|23|1991-05-2200:00:00| |4|Nick|24|1990-05-2200:00:00| |5|Rick|24|1991-05-2200:00:00| +----+--------+-----+---------------------+ 4rowsinset(0.00sec)
名为“Garvey”的记录已经修改为“Calvin”。
3.4查询数据(查)
select命令查询数据,最简单的就是查询表的所有数据,也就是我们最初使用到的那条命令:
mysql>select*fromPEOPLE; +----+--------+-----+---------------------+ |ID|NAME|AGE|BIRTHDAY| +----+--------+-----+---------------------+ |1|Anny|22|1992-05-2200:00:00| |2|Calvin|23|1991-05-2200:00:00| |4|Nick|24|1990-05-2200:00:00| |5|Rick|24|1991-05-2200:00:00| +----+--------+-----+---------------------+ 4rowsinset(0.00sec)
格式:select*from<表名>,*代表所有字段。
查询数据时也可指定显示的(列)字段:
mysql>selectNAME,AGE,BIRTHDAYfromPEOPLE; +--------+-----+---------------------+ |NAME|AGE|BIRTHDAY| +--------+-----+---------------------+ |Anny|22|1992-05-2200:00:00| |Calvin|23|1991-05-2200:00:00| |Nick|24|1990-05-2200:00:00| |Rick|24|1991-05-2200:00:00| +--------+-----+---------------------+ 4rowsinset(0.00sec)
格式:select<字段名,字段名,…>from<表名>。
select查询命令还有很多的高级用法,比如用来查找不重复(distinct)的数据,使数据按条件排序(orderby),按查询条件显示数据(where)等等。这些都会在下一篇文章作重点介绍,请大家继续留意我的博客,谢谢。
4、管理视图
创建视图
视图是从数据库里导出一个或多个表的虚拟表,是用来方便用户对数据的操作。
mysql>CREATEVIEWPEOPLE_VIEW( ->NAME,AGE) ->ASSELECTNAME,AGEFROMPEOPLE;
创建成功后查看视图。
PEOPLEPEOPLE.AGEPEOPLE.BIRTHDAYPEOPLE.IDPEOPLE.NAME mysql>SELECT*FROMPEOPLE_VIEW ->; +--------+-----+ |NAME|AGE| +--------+-----+ |Anny|22| |Calvin|23| |Nick|24| |Rick|24| +--------+-----+ 4rowsinset(0.00sec)
我们也可以使用DESC命令查看视图的结构。
mysql>DESCPEOPLE_VIEW; +-------+---------+------+-----+---------+-------+ |Field|Type|Null|Key|Default|Extra| +-------+---------+------+-----+---------+-------+ |ID|int(11)|NO||0|| +-------+---------+------+-----+---------+-------+ 1rowinset(0.01sec)
替换视图
创建或替换原有视图。
mysql>CREATEORREPLACEVIEWPEOPLE_VIEW(PEOPLE_ID,PEOPLE_NAME,PEOPLE_AGE)ASSELECTID,NAME,AGEFROMPEOPLE; QueryOK,0rowsaffected(0.00sec)
创建或替换后查看视图。
mysql>SELECT*FROMPEOPLE_VIEW; +-----------+-------------+------------+ |PEOPLE_ID|PEOPLE_NAME|PEOPLE_AGE| +-----------+-------------+------------+ |1|Anny|22| |2|Calvin|23| |4|Nick|24| |5|Rick|24| +-----------+-------------+------------+ 4rowsinset(0.00sec)
操作视图
当视图数据有变化时(增、删、改),真实的表数据也会随着改变。也就是说,对视图的操作就是对表的数据,所以我们可以把视图当作表。
例:往视图插入一条数据。
mysql>INSERTINTOPEOPLE_VIEWVALUES(NULL,'Kerry','33'); QueryOK,1rowaffected(0.00sec)
插入数据成功后查看视图。
mysql>SELECT*FROMPEOPLE_VIEW; +-----------+-------------+------------+ |PEOPLE_ID|PEOPLE_NAME|PEOPLE_AGE| +-----------+-------------+------------+ |1|Anny|22| |2|Calvin|23| |4|Nick|24| |5|Rick|24| |6|Kerry|33| +-----------+-------------+------------+ 5rowsinset(0.00sec)
可以在视图上看到我们刚刚插入的数据,现在我们就来验证一下真实的表是否也会作出变化。
mysql>SELECT*FROMPEOPLE; +----+--------+-----+---------------------+ |ID|NAME|AGE|BIRTHDAY| +----+--------+-----+---------------------+ |1|Anny|22|1992-05-2200:00:00| |2|Calvin|23|1991-05-2200:00:00| |4|Nick|24|1990-05-2200:00:00| |5|Rick|24|1991-05-2200:00:00| |6|Kerry|33|NULL| +----+--------+-----+---------------------+ 5rowsinset(0.00sec)
可见,真实的表数据也已经有所改变,刚刚往视图里插入的那一条数据存在于真实表中,真理便是:对视图的操作就是对表的数据。
删除视图
mysql>DROPVIEWPEOPLE_VIEW; QueryOK,0rowsaffected(0.00sec)
到这文章就结束了,希望对大家有帮助。
您可能感兴趣的文章:MySQL中一些常用的数据表操作语句笔记MySQL中复制数据表中的数据到新表中的操作教程mysql数据表中查找重复记录mysql导入导出数据库、数据表的方法MySQL数据表字段内容的批量修改、清空、复制等更新命令MySQL快速复制数据库数据表的方法MySQL数据库查看数据表占用空间大小和记录数的方法mysql中数据库与数据表编码格式的查看、创建及修改mysql修复数据表的命令方法Mysql数据表分区技术PARTITION浅析MySQL数据表基本操作实例详解
JS上传图片前实现图片预览效果的方法
JS控制弹出新页面窗口位置和大小的方法
上述就是数据库技术:MySQL之终端Terminal(dos界面)管理数据库、数据表、数据的基本操作分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/dtteaching/911959.html