常用mysql命令.docx
《常用mysql命令.docx》由会员分享,可在线阅读,更多相关《常用mysql命令.docx(31页珍藏版)》请在冰点文库上搜索。
![常用mysql命令.docx](https://file1.bingdoc.com/fileroot1/2023-5/18/53936186-b9e2-453f-80a0-f9dbe6970ca1/53936186-b9e2-453f-80a0-f9dbe6970ca11.gif)
常用mysql命令
一.安装与配置MYSQL
二.常用mysql命令行命令
1.mysql的启动与停止
启动MYSQL服务netstartmysql
停止MYSQL服务netstopmysql
2.netstat–na|findstr3306查看被监听的端口,findstr用于查找后面的端口是否存在
3.在命令行中登陆MYSQL控制台,即使用MYSQLCOMMENDLINETOOL
语法格式mysql–user=root–password=123456db_name
或mysql–uroot–p123456db_name
4.进入MYSQL命令行工具后,使用status;或\s查看运行环境信息
5.切换连接数据库的语法:
usenew_dbname;
6.显示所有数据库:
showdatabases;
7.显示数据库中的所有表:
showtables;
8.显示某个表创建时的全部信息:
showcreatetabletable_name;
9.查看表的具体属性信息及表中各字段的描述
Describetable_name;缩写形式:
desctable_name;
三.MySql中的SQL语句
1.数据库创建:
Createdatabasedb_name;
数据库删除:
Dropdatabasedb_name;删除时可先判断是否存在,写成:
dropdatabaseifexitsdb_name
2.建表:
创建数据表的语法:
createtabletable_name(字段1数据类型,字段2数据类型);
例:
createtablemytable(idint,usernamechar(20));
删表:
droptabletable_name;例:
droptablemytable;
8.添加数据:
Insertinto表名[(字段1,字段2,….)]values(值1,值2,…..);
如果向表中的每个字段都插入一个值,那么前面[]括号内字段名可写也可不写
例:
insertintomytable(id,username)values(1,’zhangsan’);
9.查询:
查询所有数据:
select*fromtable_name;
查询指定字段的数据:
select字段1,字段2fromtable_name;
例:
selectid,usernamefrommytablewhereid=1orderbydesc;多表查询语句------------参照第17条实例
10.更新指定数据,更新某一个字段的数据(注意,不是更新字段的名字)
Updatetable_nameset字段名=’新值’[,字段2=’新值’,…..][whereid=id_num][orderby字段顺序]
例:
updatemytablesetusername=’lisi’whereid=1;
Order语句是查询的顺序,如:
orderbyiddesc(或asc),顺序有两种:
desc倒序(100—1,即从最新数据往后查询),asc(从1-100),Where和order语句也可用于查询select与删除delete
11.删除表中的信息:
删除整个表中的信息:
deletefromtable_name;
删除表中指定条件的语句:
deletefromtable_namewhere条件语句;条件语句如:
id=3;
12.创建数据库用户
一次可以创建多个数据库用户如:
CREATEUSERusername1identifiedBY‘password’,username2IDENTIFIEDBY‘password’….
13.用户的权限控制:
grant
库,表级的权限控制:
将某个库中的某个表的控制权赋予某个用户
GrantallONdb_name.table_nameTOuser_name[indentifiedby‘password’];
14.表结构的修改
(1)增加一个字段格式:
altertabletable_nameaddcolumn(字段名字段类型);----此方法带括号
(2)指定字段插入的位置:
altertabletable_nameaddcolumn字段名字段类型after某字段;
删除一个字段:
altertabletable_namedrop字段名;
(3)修改字段名称/类型
altertabletable_namechange旧字段名新字段名新字段的类型;
(4)改表的名字
altertabletable_namerenametonew_table_name;
(5)一次性清空表中的所有数据
truncatetabletable_name;此方法也会使表中的取号器(ID)从1开始
15.增加主键,外键,约束,索引。
。
。
。
(使用方法见17实例)
①约束(主键Primarykey、唯一性Unique、非空NotNull)
②自动增张auto_increment
③外键Foreignkey-----与referencetable_name(col_name列名)配合使用,建表时单独使用
④删除多个表中有关联的数据----设置foreignkey为setnull---具体设置参考帮助文档
16.查看数据库当前引擎
SHOWCREATETABLEtable_name;
修改数据库引擎
ALTERTABLEtable_nameENGINE=MyISAM|InnoDB;
17.SQL语句运用实例:
--1建users表
createtableusers(idintprimarykeyauto_increment,nikenamevarchar(20)notnullunique,passwordvarchar(100)notnull,addressvarchar(200),reg_datetimestampnotnulldefaultCURRENT_TIMESTAMP);
--2建articles表,在建表时设置外键
createtablearticles(idintprimarykeyauto_increment,contentlongtextnotnull,useridint,constraintforeignkey(userid)referencesusers(id)ondeletesetnull);
-----------------------------------------------------------------------
--2.1建articles表,建表时不设置外键
createtablearticles(idintprimarykeyauto_increment,contentlongtextnotnull,useridint);
--2.2给articles表设置外键
altertablearticlesaddconstraintforeignkey(userid)referencesusers(id)ondeletesetnull;
------------------------------------------------------------------------
--3.向users表中插入数据,同时插入多条
insertintousers(id,nikename,password,address)values(1,'lyh1','1234',null),(10,'lyh22','4321','湖北武汉'),(null,'lyh333','5678','北京海淀');
--4.向article中插入三条数据
insertintoarticles(id,content,userid)values(2,'hahahahahaha',11),(null,'xixixixixix',10),(13,'aiaiaiaiaiaiaiaiaiaiaiaia',1),(14,'hohoahaoaoooooooooo',10);
--5.进行多表查询,选择users表中ID=10的用户发布的所有留言及该用户的所有信息
selectarticles.id,articles.content,users.*fromusers,articleswhereusers.id=10andarticles.userid=users.idorderbyarticles.iddesc;
--6.查看数据库引擎类型
showcreatetableusers;
--7.修改数据库引擎类型
altertableusersengine=MyISAM;---因为users表中ID被设置成外键,执行此句会出错
--8.同表查询,已知一个条件的情况下.查询ID号大于用户lyh1的ID号的所有用户
selecta.id,a.nikename,a.addressfromusersa,usersbwhereb.nikename='lyh1'anda.id>b.id;
------也可写成
selectid,nikename,addressfromuserswhereid>(selectidfromuserswherenikename='lyh1');
9.显示年龄比领导还大的员工:
selecta.namefromusersa,usersbwherea.managerid=b.idanda.age>b.age;
查询编号为2的发帖人:
先查articles表,得到发帖人的编号,再根据编号查users得到的用户名。
接着用关联查询.
select*fromarticles,users得到笛卡儿积,再加orderbyarticles.id以便观察
使用select*fromarticles,userswherearticles.id=2筛选出2号帖子与每个用户的组合记录
再使用select*fromarticles,userswherearticles.id=2andarticles.userid=users.id选出users.id等于2号帖的发帖人id的记录.
只取用户名:
selectuserwhereuser.id=(selectuseridfromarticleswherearticle.id=2)
找出年龄比小王还大的人:
假设小王是28岁,先想找出年龄大于28的人
select*fromuserswhereage>(selectagefromuserswherename='xiaowang');
*****要查询的记录需要参照表里面的其他记录:
selecta.namefromusersa,usersbwhereb.name='xiaowang'anda.age>b.age
表里的每个用户都想pk一下.selecta.nickname,b.nicknamefromusersa,usersbwherea.id>b.id;
更保险的语句:
selecta.nickname,b.nicknamefrom(select*fromusersorderbyid)a,(se
lect*fromusersorderbyid)bwherea.id>b.id;
再查询某个人发的所有帖子.
selectb.*fromarticlesa,articlesbwherea.id=2anda.userid=b.userid
说明:
表之间存在着关系,ER概念的解释,用access中的示例数据库演示表之间的关系.只有innodb引擎才支持foreignkey,mysql的任何引擎目前都不支持check约束。
四、字符集出现错误解决办法
出现的问题:
mysql>updateusers
->setusername='关羽'
->whereuserid=2;
ERROR1366(HY000):
Incorrectstringvalue:
'\xB9\xD8\xD3\xF0'forcolumn'usern
ame'atrow1
向表中插入中文字符时,出现错误。
mysql>select*fromusers;
+--------+----------+
|userid|username|
+--------+----------+
|2|?
?
?
?
|
|3|?
?
?
?
|
|4|?
í?
ù|
+--------+----------+
3rowsinset(0.00sec)
表中的中文字符位乱码。
解决办法:
使用命令:
mysql>status;
--------------
mysqlVer14.12Distrib5.0.45,forWin32(ia32)
Connectionid:
8
Currentdatabase:
test
Currentuser:
root@localhost
SSL:
Notinuse
Usingdelimiter:
;
Serverversion:
5.0.45-community-ntMySQLCommunityEdition(GPL)
Protocolversion:
10
Connection:
localhostviaTCP/IP
Servercharacterset:
latin1
Dbcharacterset:
latin1
Clientcharacterset:
gbk
Conn.characterset:
gbk
TCPport:
3306
Uptime:
7hours39min19sec
Threads:
2Questions:
174Slowqueries:
0Opens:
57Flushtables:
1Openta
bles:
1Queriespersecondavg:
0.006
--------------
查看mysql发现Servercharacterset,Dbcharacterset的字符集设成了latin1,所以出现中文乱码。
mysql>showtables;
+----------------+
|Tables_in_test|
+----------------+
|users|
+----------------+
1rowinset(0.00sec)
更改表的字符集。
mysql>altertableuserscharactersetGBK;
QueryOK,3rowsaffected(0.08sec)
Records:
3Duplicates:
0Warnings:
0
查看表的结构:
mysql>showcreateusers;
ERROR1064(42000):
YouhaveanerrorinyourSQLsyntax;checkthemanualthat
correspondstoyourMySQLserverversionfortherightsyntaxtousenear'users
'atline1
mysql>showcreatetableusers;
+-------+-----------------------------------------------------------------------
------------------------------------------------------------------------------+
|Table|CreateTable
|
+-------+-----------------------------------------------------------------------
------------------------------------------------------------------------------+
|users|CREATETABLE`users`(
`userid`int(11)defaultNULL,
`username`char(20)charactersetlatin1defaultNULL
)ENGINE=InnoDBDEFAULTCHARSET=gbk|
+-------+-----------------------------------------------------------------------
------------------------------------------------------------------------------+
1rowinset(0.00sec)
mysql>descusers;
+----------+----------+------+-----+---------+-------+
|Field|Type|Null|Key|Default|Extra|
+----------+----------+------+-----+---------+-------+
|userid|int(11)|YES||NULL||
|username|char(20)|YES||NULL||
+----------+----------+------+-----+---------+-------+
2rowsinset(0.02sec)
这时向表中插入中文然后有错误。
mysql>insertintousersvalues(88,'中文');
ERROR1366(HY000):
Incorrectstringvalue:
'\xD6\xD0\xCE\xC4'forcolumn'usern
ame'atrow1
mysql>insertintousersvalues(88,'中文');
ERROR1366(HY000):
Incorrectstringvalue:
'\xD6\xD0\xCE\xC4'forcolumn'usern
ame'atrow1
还要更改users表的username的字符集。
mysql>altertableusersmodifyusernamechar(20)charactersetgbk;
ERROR1366(HY000):
Incorrectstringvalue:
'\xC0\xEE\xCB\xC4'forcolumn'usern
ame'atrow1
mysql>altertableusersmodifyusernamechar(20)charactersetgbk;
ERROR1366(HY000):
Incorrectstringvalue:
'\xC0\xEE\xCB\xC4'forcolumn'usern
ame'atrow1
因为表中已经有数据,所以更改username字符集的操作没有成***
清空users表中的数据
mysql>truncatetableusers;
QueryOK,3rowsaffected(0.01sec)
从新更改user表中username的字符集
mysql>altertableusersmodifyusernamechar(20)charactersetgbk;
QueryOK,0rowsaffected(0.06sec)
Records:
0Duplicates:
0Warnings:
0
这时再插入中文字符,插入成***。
mysql>insertintousersvalues(88,'中文');
QueryOK,1rowaffected(0.01sec)
mysql>select*fromusers;
+--------+----------+
|userid|username|
+--------+----------+
|88|中文|
+--------+----------+
1rowinset(0.00sec)
mysql>
[编辑本段]
MySQL的基本命令
[]中的内容为可选项
--创建数据库
mysql>createdatabase数据库名称
--创建表
mysql>createtable表名(
列的名字(id)类型(int(4))primarykey(定义主键)auto_increment(描述自增),
……,
);
--查看所有数据库
mysql>showdatabases数据库名称;
--使用某个数据库
mysql>usedatabase数据库名称;
--查看所使用数据库下所有的表
mysql>showtables;
--显示表的属性结构
mysql>desc表名;
--选择表中数据的显示
--*代表选择所有列,
mysql>select*from表名whereid=?
[andname=?
][orname=?
];
mysql>selectid,namefrom表名orderby某一列的名称desc(降序,asc为升序)
--删除表中的数据
mysql>deletefromtablewhereid=?
[orname=?
(andname=?
)];
--删除表
mysql>droptable;
--删除