mysql常用命令文档格式.docx
《mysql常用命令文档格式.docx》由会员分享,可在线阅读,更多相关《mysql常用命令文档格式.docx(11页珍藏版)》请在冰点文库上搜索。
![mysql常用命令文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/12/9c99c343-08c8-489b-b539-47470964067b/9c99c343-08c8-489b-b539-47470964067b1.gif)
'
linesterminatedby'
\n'
fromallcontigslimit100;
解释:
在linux系统下,将数据库raw中的allcontigs中的前100条数据备份到/tmp/dump.txt文件中(不知道问什么只能备份到/tmp目录下)。
首先在mysql>
useraw;
执行该命令。
fieldsterminatedby'
表示每个字段以\t作为分隔符,
optionallyenclosedby'
表示数字类型的数据不会被指定字符“包装”。
linesterminatedby'
表示每条记录以\n(换行)结束。
6.生成一张表的标准语法:
CREATETABLE`test`.`tst`(
`id`INT(10)NOTNULLAUTO_INCREMENTPRIMARYKEY,
`name`VARCHAR(20)CHARACTERSETutf8COLLATEutf8_unicode_ciNOTNULL
)ENGINE=MYISAM;
一、启动与退出
1、进入MySQL:
启动MySQLCommandLineClient(MySQL的DOS界面),直接输入安装时的密码即可。
此时的提示符是:
2、退出MySQL:
quit或exit
二、库操作
1、、创建数据库
命令:
createdatabase<
数据库名>
建立一个名为xhkdb的数据库
createdatabasexhkdb;
2、显示所有的数据库
showdatabases(注意:
最后有个s)
showdatabases;
3、删除数据库
dropdatabase<
删除名为xhkdb的数据库
dropdatabasexhkdb;
4、连接数据库
use<
如果xhkdb数据库存在,尝试存取它:
usexhkdb;
屏幕提示:
Databasechanged
5、当前选择(连接)的数据库
selectdatabase();
6、当前数据库包含的表信息:
showtables;
(注意:
三、表操作,操作之前应连接某个数据库
1、建表
createtable<
表名>
(<
字段名1>
<
类型1>
[,..<
字段名n>
类型n>
]);
createtableMyClass(
>
idint(4)notnullprimarykeyauto_increment,
namechar(20)notnull,
sexint(4)notnulldefault'
0'
degreedouble(16,2));
2、获取表结构
desc表名,或者showcolumnsfrom表名
DESCRIBE
MyClass
descMyClass;
showcolumnsfromMyClass;
3、删除表
droptable<
删除表名为MyClass的表
droptableMyClass;
4、插入数据
insertinto<
[(<
[,..<
字段名n>
])]values(值1)[,(值n)]
例如,往表MyClass中插入二条记录,这二条记录表示:
编号为1的名为Tom的成绩为96.45,编号为2的名为Joan的成绩为82.99,编号为3的名为Wang的成绩为96.5.
insertintoMyClassvalues(1,'
Tom'
96.45),(2,'
Joan'
82.99),(2,'
Wang'
96.59);
5、查询表中的数据
1)、查询所有行
select<
字段1,字段2,...>
from<
表名>
where<
表达式>
查看表MyClass中所有数据
select*fromMyClass;
2)、查询前几行数据
查看表MyClass中前2行数据
select*fromMyClassorderbyidlimit0,2;
6、删除表中数据
deletefrom表名where表达式
删除表MyClass中编号为1的记录
deletefromMyClasswhereid=1;
7、修改表中数据:
update表名set字段=新值,…where条件
updateMyClasssetname='
Mary'
whereid=1;
7、在表中增加字段:
altertable表名add字段类型其他;
在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0
altertableMyClassaddpasstestint(4)default'
8、更改表名:
renametable原表名to新表名;
在表MyClass名字更改为YouClass
renametableMyClasstoYouClass;
更新字段内容
update表名set字段名=新内容
update表名set字段名=replace(字段名,'
旧内容'
'
新内容'
);
文章前面加入4个空格
updatearticlesetcontent=concat('
'
content);
字段类型
1.INT[(M)]型:
正常大小整数类型
2.DOUBLE[(M,D)][ZEROFILL]型:
正常大小(双精密)浮点数字类型
3.DATE日期类型:
支持的范围是1000-01-01到9999-12-31。
MySQL以YYYY-MM-DD格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列
4.CHAR(M)型:
定长字符串类型,当存储时,总是是用空格填满右边到指定的长度
5.BLOBTEXT类型,最大长度为65535(2^16-1)个字符。
6.VARCHAR型:
变长字符串类型
5.导入数据库表
(1)创建.sql文件
(2)先产生一个库如auction.c:
mysqlbin>
mysqladmin-uroot-pcreatauction,会提示输入密码,然后成功创建。
(2)导入auction.sql文件
c:
mysql-uroot-pauction<
auction.sql。
通过以上操作,就可以创建了一个数据库auction以及其中的一个表auction。
6.修改数据库
(1)在mysql的表中增加字段:
altertabledbnameaddcolumnuseridint(11)notnullprimarykeyauto_increment;
这样,就在表dbname中添加了一个字段userid,类型为int(11)。
7.mysql数据库的授权
mysql>
grantselect,insert,delete,create,drop
on*.*(或test.*/user.*/..)
to用户名@localhost
identifiedby'
密码'
;
如:
新建一个用户帐号以便可以访问数据库,需要进行如下操作:
grantusage
->
ONtest.*
TOtestuser@localhost;
QueryOK,0rowsaffected(0.15sec)
此后就创建了一个新用户叫:
testuser,这个用户只能从localhost连接到数据库并可以连接到test数据库。
下一步,我们必须指定testuser这个用户可以执行哪些操作:
GRANTselect,insert,delete,update
QueryOK,0rowsaffected(0.00sec)
此操作使testuser能够在每一个test数据库中的表执行SELECT,INSERT和DELETE以及UPDATE查询操作。
现在我们结束操作并退出MySQL客户程序:
exit
——————————————————————————————————————————
启动:
netstartmySql;
进入:
mysql-uroot-p/mysql-hlocalhost-uroot-pdatabaseName;
列出数据库:
showdatabases;
选择数据库:
usedatabaseName;
列出表格:
showtables;
显示表格列的属性:
showcolumnsfromtableName;
建立数据库:
sourcefileName.txt;
匹配字符:
可以用通配符_代表任何一个字符,%代表任何字符串;
增加一个字段:
altertabletabelNameaddcolumnfieldNamedateType;
增加多个字段:
altertabletabelNameaddcolumnfieldName1dateType,addcolumnsfieldName2dateType;
多行命令输入:
注意不能将单词断开;
当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中;
增加一个管理员帐户:
grantallon*.*touser@localhostidentifiedby"
password"
;
每条语句输入完毕后要在末尾填加分号'
,或者填加'
\g'
也可以;
查询时间:
selectnow();
查询当前用户:
selectuser();
查询数据库版本:
selectversion();
查询当前使用的数据库:
selectdatabase();
1、删除student_course数据库中的students数据表:
rm-fstudent_course/students.*
2、备份数据库:
(将数据库test备份)
mysqldump-uroot-ptest>
c:
\test.txt
备份表格:
(备份test数据库下的mytable表格)
mysqldump-uroot-ptestmytable>
将备份数据导入到数据库:
(导回test数据库)
mysql-uroot-ptest<
3、创建临时表:
(建立临时表zengchao)
createtemporarytablezengchao(namevarchar(10));
4、创建表是先判断表是否存在
createtableifnotexistsstudents(……);
5、从已经有的表中复制表的结构
createtabletable2select*fromtable1where1<
1;
6、复制表
createtabletable2select*fromtable1;
7、对表重新命名
altertabletable1renameastable2;
8、修改列的类型
altertabletable1modifyidintunsigned;
//修改列id的类型为intunsigned
altertabletable1changeidsidintunsigned;
//修改列id的名字为sid,而且把属性修改为intunsigned
9、创建索引
altertabletable1addindexind_id(id);
createindexind_idontable1(id);
createuniqueindexind_idontable1(id);
//建立唯一性索引
10、删除索引
dropindexidx_idontable1;
altertabletable1dropindexind_id;
11、联合字符或者多个列(将列id与"
:
和列name和"
="
连接)
selectconcat(id,'
name,'
='
)fromstudents;
12、limit(选出10到20条)<
第一个记录集的编号是0>
select*fromstudentsorderbyidlimit9,10;
13、MySQL不支持的功能
事务,视图,外键和引用完整性,存储过程和触发器
14、MySQL会使用索引的操作符号
<
<
=,>
=,between,in,不带%或者_开头的like
15、使用索引的缺点
1)减慢增删改数据的速度;
2)占用磁盘空间;
3)增加查询优化器的负担;
当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加工作量,导致无法选择最优的查询方案;
16、分析索引效率
方法:
在一般的SQL语句前加上explain;
分析结果的含义:
1)table:
表名;
2)type:
连接的类型,(ALL/Range/Ref)。
其中ref是最理想的;
3)possible_keys:
查询可以利用的索引名;
4)key:
实际使用的索引;
5)key_len:
索引中被使用部分的长度(字节);
6)ref:
显示列名字或者"
const"
(不明白什么意思);
7)rows:
显示MySQL认为在找到正确结果之前必须扫描的行数;
8)extra:
MySQL的建议;
17、使用较短的定长列
1)尽可能使用较短的数据类型;
2)尽可能使用定长数据类型;
a)用char代替varchar,固定长度的数据处理比变长的快些;
b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能;
c)万一出现数据表崩溃,使用固定长度数据行的表更容易重新构造。
使用固定长度的数据行,每个记录的开始位置都是固定记录长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了;
d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大;
18、使用notnull和enum
尽量将列定义为notnull,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询;
如果一列只含有有限数目的特定值,如性别,是否有效或者入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来表示的;
19、使用optimizetable
对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询性能。
具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更为突出,因为其尺寸变化非常大。
可以通过使用optimizetable来整理碎片,保证数据库性能不下降,优化那些受碎片影响的数据表。
optimizetable可以用于MyISAM和BDB类型的数据表。
实际上任何碎片整理方法都是用mysqldump来转存数据表,然后使用转存后的文件并重新建数据表;
20、使用procedureanalyse()
可以使用procedureanalyse()显示最佳类型的建议,使用很简单,在select语句后面加上procedureanalyse()就可以了;
select*fromstudentsprocedureanalyse();
select*fromstudentsprocedureanalyse(16,256);
第二条语句要求procedureanalyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长;
21、使用查询缓存
1)查询缓存的工作方式:
第一次执行某条select语句时,服务器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中返回结果;
当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃。
2)配置缓存参数:
变量:
query_cache_type,查询缓存的操作模式。
有3中模式,0:
不缓存;
1:
缓存查询,除非与selectsql_no_cache开头;
2:
根据需要只缓存那些以selectsql_cache开头的查询;
query_cache_size:
设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。
22、调整硬件
1)在机器上装更多的内存;
2)增加更快的硬盘以减少I/O等待时间;
寻道时间是决定性能的主要因素,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快;
3)在不同的物理硬盘设备上重新分配磁盘活动;
如果可能,应将最繁忙的数据库存放在不同的物理设备上,这跟使用同一物理设备的不同分区是不同的,因为它们将争用相同的物理资源(磁头)。
————————————————————————————————————————————
1.连接数据库
格式:
mysql[-hhost_name][-uuser_name][-ppassword]
参数说明:
[-hhost_name]:
数据库主机的地址(主机名或ip地址),默认localhost.
[-uuser_name]:
登录unix/linux的用户名,当指定一个不存在的用户名时,mysql视其为guest用户,使用guest用户不需要口令.
[-ppassword]:
mysql用户登录的密码,系统初始root密码为空.
注意:
mysql的user和linux下的user相互独立,互不影响,一般linux用户最多8个字符,mysql最多16个。
同时,mysql有自己的口令加密系统。
2.修改密码:
⑴mysql>
usemysql;
mysql>
updateusersetpassword=password('
new_password'
)whereuser='
用户名'
flushprivileges;
使用flushprivileges命令使密码生效。
⑵mysql>
setpassword[foruser]=password('
[foruser]为空,默认更改当前用户的密码;
3.删除匿名用户
deletefromuserwhereuser='
4.增加一个用户
usedatabase_name;
grantallprivielegesondatabase_name.*touser_name@localhostidentifiedby'
说明:
创建用户名,同时赋予该用户名可以访问database_name数据库中说有表。
使用grant为一个不存在的用户授予某些权限时,mysql会首先自动创建给用户。
5.创建用户
insertintousersethost='
localhost'
user='
reloadpriv='
y'
process_priv='
6.给用户分配最小权限
grantselecton数据库名.表名to用户名