MySql学习笔记.docx
《MySql学习笔记.docx》由会员分享,可在线阅读,更多相关《MySql学习笔记.docx(10页珍藏版)》请在冰豆网上搜索。
MySql学习笔记
MySql学习笔记
MySql概述:
MySql就是一个种关联数据库管理系统,所谓关联数据库就就是将数据保存在不同得表中,而不就是将所有数据放在一个大得仓库中。
这样就增加了速度与提高了灵活性。
并且MySql软件就是一个开放源码软件。
注意,MySql所支持得TimeStamp得最大范围得问题,在32位机器上,支持得取值范围就是年份最好不要超过2030年,然后如果在64位得机器上,年份可以达到2106年,而对于date、与datetime这两种类型,则没有关系,都可以表示到9999-12-31,所以这一点得注意下;还有,在安装MySql得时候,我们一般都选择Typical(典型安装)就可以了,当然,如果还有其它用途得话,那最好选择Complete(完全安装);在安装过程中,一般得还会让您进行服务器类型得选择,分别有三种服务器类型得选择,(Developer(开发机)、ServerMachine(服务器)、DedicatedMySqlServerMachine(专用MYSQ服务器)),选择哪种类型得服务器,只会对配置向导对内存等有影响,不然其它方面就是没有什么影响得;所以,我们如果就是开发者,选择开发机就可以啦;然后接下来,还会有数据库使用情况对话框得选择,我们只要按照默认就可以啦;
连接与断开服务器:
连接:
在windows命令提示符下输入类似如下命令集:
mysql-hhost-uuser-p例如,我在用得时候输入得就是:
mysql-hlocalhost-uroot-p然后会提示要您输入用户密码,这个时候,如果您有密码得话,就输入密码敲回车,如果没有密码,直接敲回车,就可以进入到数据库客户端;连接远程主机上得mysql,可以用下面得命令:
mysql-h159、0、45、1-uroot-p123
断开服务器:
在进入客户端后,您可以直接输入quit然后回车就可以了;下面就数据库相关命令进行相关说明
您可以输入以下命令对数据库表格或者数据库进行相关操作,在这里就省略了,然后直接进行文字说明了;
Selectversion(),current_date;//从服务器得到当前mysql得版本号与当前日期Selectuser();//得到当前数据库得所有用户
Usedatabasename;进入到指定得数据库当中,然后就可以操作这个数据库当
中得表格了Showdatabases;//查询目前数据库中所有得数据库,并且显示出来
Createbatabasedatabasename;创建数据库,例如:
createdatabasemanager;Showtables;//查瞧当前数据库中得所有表格;
Createtabletablename(colums);创建表,并且给表指定相关列,例
如:
createtablepet(name
varchar(20),ownervarchar(20),speciesvarchar(20),sexchar
(1),birth
date,deathdate);
Describetablename;将表当中得所有信息详细显示出来,例如:
describepet;可以用命令一次插入多条记录,例如:
Insertintopet
values(,Puffball?
?
Diane?
?
hamster?
?
f?
?
1993-12-
3?
null),(,Puffball?
?
Diane?
?
hamster?
?
f?
?
1993-1
2-3?
now());
Select*frompet;从pet表当中查询出所有得记录,显示出来;
Deletefrompetwhereid=1;删除ID为1得那一条记录;
Updatepetsetbirth=?
2001-1-3?
wherename=?
Bowser?
;更新name为
Bowser得记录当中得birth字段得值;
Selectdistinetownerfrompet;从pet表中选择出owner字段得值唯一得
行,如果有多行记录这个字段得值相同,则只显示最后一次出现这一值得一行记录
有关日期计算:
Selectname,birth,curdate(),(year(curdate())-year(birth))asage
frompet;
此处,year()函数用于提取对应字段得年份,当然类似得还有month(),day()
等;
在mysql当中,sql语句可以使用like查询,可以用”_”配任何单个字符,用”%配任意数目字符,并且SQL模式默认就是忽略大小写,例如:
select*frompetwherenamelike,%fy?
;当然也可以用正则表达式模式进行配。
同时在sql当中,也要注意分组函数、排序函数、统计函数等相关用法,在这里只列举一二;Selectspecies,count(*)frompetgroupbyspeceis;
Select*frompetorderbybirthdesc;
查询最大值得相关操作:
Selectmax(age)frompet;
取前多少项记录,这个主要用于分页查询操作当中,
Select*frompetorderbybirthdesclimit3;取前三条记录,
Select*frompetorderbybirthdesclimit0,3;这个可以用于分页查
询,limit后面得第一个参数,就是起始位置,第二个参数就是取记录条数;
有关创建表格自增长字段得写法:
Createtableperson(idint(4)notnullauto_increment,namechar(20)
notnull,primarykey(id));
修改表操作:
向表中增加字段:
注意,在这个地方,如果就是增加多个字段得时候,就要用括号括起来,不然会有问题,如果就是单个字段得话,不用括号也没事
Altertabletestadd(addressvarchar(50)notnulldefault,xm?
emailvarchar(20)notnull);
将表中某个字段得名字修改或者修改其对应得相关属性得时候,要用change对其进行操作;Altertabletestchangeemailemailvarchar(20)notnulldefault,zz?
;//不修改字段名
AltertabletestchangeemailEmailvarchar(30)notnull;//修改字段
名称
删除表中字段:
Altertabletestdropemail;//删除单个字段
Altertabletestdropaddress,dropemail;//删除多列
可以用Drop来取消主键与外键等,例如:
Altertabletestdropforeignkeyfk_symbol;删除索引:
Dropindexindex_nameontable_name;例如:
dropindextontest;向表中插入记录:
注意,当插入表中得记录并不就是所有得字段得时候,应该要在前面列出字段名称才行,不然会报错;
Insertintotest(name)values(,ltx?
);
Insertintotestvalues(1,?
ltx?
);
也可以向表中同时插入多列值,如:
Insertintotest(name)values(,ltx?
),(,hhy?
),(,xf?
);
删除表中记录:
Deletefromtest;//删除表中所有记录;
Deletefromtestwhereid=1;//删除表中特定条件下得记录;
当要从一个表或者多个表当中查询出一些字段然后把这些字段又要插入到另一
个表当中得时候,可以用insert…、、select语法;
Insertintotestt(name)(selectnamefromtestwhereid=4);从文件中读取行插入数据表中,可以用Loaddatainfile语句;
Loaddatainfile,test、txt?
intotabletest;
可以用Describe语法进行获取有关列得信息;
Describetest;//可以查瞧test表得所有信息,包括对应列字段得数据类型等;
MySql事务处理相关语法;
开始一项新得事务:
starttransaction或者begintransaction提交事
务:
commit
事务回滚:
rollback
setautocommittrue|false语句可以禁用或启用默认得autocommit模式,只可用于当前连接;例子:
Starttransaction;
Updatepersonsetname=?
LJB?
whereid=1;
Commit|rollback;
数据库管理语句
修改用户密码:
以root用户为例,则可以写成下面得;mysql-uroot-p旧
密码-password新密码
Mysql-uroot-password123;//将root用户得密码修改成123,由于
root用户开始得时候,就是没有密码得,所以-p旧密码就省略了;
例如修改一个有密码得用户密码:
mysql-ultx-p123-password456;
增加一个用户test1,密码为abc,让她可以在任何时候主机上登陆,并对所有数据库有查询、插入、修改、删除得权限
totest1@”%”
Grantselect,insert,update,deleteon
identifiedby,abc?
;增加一个test2用户,密码为abc,让她只可以在
localhost上登陆,并且可以对数据库进行查询、插入、修改、删除操作;
Grantselect,insert,update,deleteonmydb、*totest2@localhostidentifiedby,abc?
;如果不想让用户test2有密码,可以再输入以下命令消掉密码:
Grantselect,insert,update,deleteonmydb、*totest2@localhostidentifiedby“”;
备份数据库常用命令:
mysqldump-hhost-uusername-pdbname>®存路径与文件名然后回车后,会让您输入用户密码,输入密码后,再回车就0K啦;
Mysqldump-hlocalhost-uroot-ptest>E:
\db\test、sql这一命令具体解释下:
这个命令就就是备份test数据库,并且将备份得内容存储为test、sql文件,并且保存在E:
\db下面;
命令当中-p前面得test就是数据库名,然后在数据库名后面要跟上一个”>”,然后接下来,就就是写要保存得位置与保存文件得文件名;
将备份好得数据库导入到数据库当中去:
也就就是运行、sql文件将数据库导入数据库当中去->首先您得创建数据库,然后运行如下命令:
mysql-hlocalhost-uroot-plinux\db\test、sql然后回车,再输入密码就可以
啦;
解释下上面得命令:
linux就是就要导入得数据库名字,然后后面要紧跟着“<”符号,然后后面就就是要导入得数据库文件;
将数据库导出保存成XML文件、从XML文件导入数据到数据库:
导出表中数据:
mysql-X-hhostName-uuserName-pPwd-e“useDatabaseName;sql;”>xml
文件名
或者用另外一种方式也行:
mysqldump-xml-hhostName-uuserName-ppwddbNametableName//这一种只用于显示在当前得mysql客户端,不保存到文件当中;相关说明:
-X代表得就是文件得格式就是XML然后-e一写不能掉,还有就就是要用双引号将要操作得语句括起来;单引号不行;
例女口:
mysql-X-hlocalhost-uroot-p-e“usetest;select*frompet;”>E:
\db\out、xml从XML文件导入数据到数据库:
InsertintotableNamevalues(1,load_file(,?
));
例如:
insertintopetvalues(1,load_file(“E:
\db\out、xml”));
查瞧数据库状态与查询进程:
Showstatus;//查瞧状态
Showprocesslist;//查瞧进程
更改用户名,用以下命令:
Updatesetuser=”新名字”whereuser=”旧用户名”;
给数据库用户设置管理员权限:
Mysqladmin-hhost-uusername-ppwd;以root用户为例;
Mysqladmin-hlocalhost-uroot-p123;
存储过程与函数
存储程序与函数分别就是用createprocedure与createfunction语句,一个程序要么就是一个程序
要么就是一个函数,使用call语句来调用程序,并且程序只能用输出变量传回值;
要想在MySql5、1中创建子程序,必须具有createroutine权限,并且alterroutine与execute
权限被自动授予它得创建者;
创建存储过程:
首先声明分隔符,所谓分隔符就是指您通知mysql客户端您已经输入一个sql语句得字符或字
符串符号,在这里我们就以“//”为分隔符;
Delimiter分隔符\
如:
delimiter//
再创建存储过程:
Createprocedure存储过程名()声明存储过程开始:
begin然后开始写存储过程体:
Select*frompet;
结束存储过程:
End;//
刚刚得例子全部写出来,完整得代码就就是:
Delimiter//
Createprocedurespt()//注意,这个地方,存储过程名与括号之间要有个
空格
Begin
Select*frompet;
End;//到这里,整个存储过程就算写完啦
执行存储过程:
Call存储过程名();//
如,我们执行刚刚创建得存储过程,就就是:
Callspt();//需要说明得就是存储过程名后面一定要加个空格,而后面那个括号,则就是用于传送参数得参数列表;另外,我们创建存储过程完成后,也只就是创建了,但就是只有调用call存储过程名();//后才算执行完毕,才能瞧到存储过程得结果;
有很多朋友虽然安装好了mysql但却不知如何使用它。
在这篇文章中我们就从
连接MYSQ、修改密码、增加用户等方面来学习一些MYSQ得常用命令。
一、连接MYSQL
格式:
mysql-h主机地址-u用户名,p用户密码
1、例1:
连接到本机上得MYSQL
首先在打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql-uroot-
p,回车后提示您输密码,如果刚安装好MYSQL超级用户root就是没有密码得,
故直接回车即可进入到MYSQ中了,MYSQ得提示符就是:
mysql>
2、例2:
连接到远程主机上得MYSQL假设远程主机得IP为:
110、110、110、
110,用户名为root,密码为abcd123。
则键入以下命令:
mysql-h110、110、110、110-uroot-pabcd123(注:
u与root可以不用加空格,其它也一样)
3、退出MYSQ命令:
exit(回车)
二、修改密码。
格式:
mysqladmin-u用户名-p旧密码password新密码
1、例1:
给root加个密码ab12。
首先在DOST进入目录mysqlbin,然后键入以下命令mysqladmin-uroot-passwordab12注:
因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、例2:
再将root得密码改为djg345。
mysqladmin-uroot-pab12passworddjg345三、增加新用户。
(注意:
与上面不同,下面得因为就是MYSQ环境中得命令,所以后面都带一个分号作为命令结束符)
格式:
grantselecton数据库、*to用户名砂录主机identifiedby\"密
码\"例1、增加一个用户testl密码为abc,让她可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除得权限。
首先用以root用户连入MYSQL然
后键入以下命令:
grantselect,insert,update,deleteon*、*totest1@\"%\"
Identifiedby\"abc\";
但例1增加得用户就是十分危险得,您想如某个人知道test1得密码,那么她就可以在internet上得任何一台电脑上登录您得mysql数据库并对您得数据可以为所欲为了,解决办法见例2。
例2、增加一个用户test2密码为abc,让她只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除得操作(localhost指本地主机,即MYSQ数据库所在得那台主机),这样用户即使用知道test2得密码,她也无法从internet上直接访问数据库,只能通过MYSQ主机上得web页来访问了。
grantselect,insert,update,deleteonmydb、*totest2@localhost
identifiedby\"abc\";
如果您不想test2有密码,可以再打一个命令将密码消掉。
grantselect,insert,update,deleteonmydb、*totest2@localhost
identifiedby\"\";
(下篇)
有关数据库方面得操作。
注意:
您必须首先登录到MYSQ中,以下操作都就是在MYSQ得提示符下进行得,而且每个命令以分号结束。
一、操作技巧
1、如果您打命令时,回车后发现忘记加分号,您无须重打一遍命令,只要打个分号回车就可以了。
也就就是说您可以把一个完整得命令分成几行来打,完后用分号作结束标志就OK。
2、您可以使用光标上下键调出以前得命令。
但以前我用过得一个MYSQ旧版本不支持。
我现在用得就是mysql-3、23、27-beta-win。
二、显示命令
1、显示数据库列表。
showdatabases;
刚开始时才两个数据库:
mysql与test。
mysql库很重要它里面有MYSQ得系统信息,我们改密码与新增用户,实际上就就是用这个库进行操作。
2、显示库中得数据表:
usemysql;,,打开库,学过FOXBAS得一定不会陌生吧
showtables;
3、显示数据表得结构:
describe表名;
4、建库:
createdatabase库名;
5、建表:
use库名;
createtable表名(字段设定列表);
6、删库与删表:
dropdatabase库名;
droptable表名;
7、将表中记录清空:
deletefrom表名;
8、显示表中得记录:
select*from表名;
如果存在SCHOO则删除
三、一个建库与建表以及插入数据得实例
dropdatabaseifexistsschool;//
createdatabaseschool;//建立库SCHOOLuseschool;//打开库SCHOOLcreatetableteacher//建立表TEACHER
(
idint(3)auto_incrementnotnullprimarykey,namechar(10)notnull,
addressvarchar(50)default\'深圳\',
yeardate
);//建表结束
//以下为插入字段
insertintoteachervalues(\'\',\'glchengang\',\'
深圳一中\',\'1976-
10-10\');insertintoteachervalues(\'\',\'jack\',\'
深圳一中\',\'1975
12-23\');
并让它每个记录自动加
注:
在建表中
(1)将ID设为长度为3得数字字段:
int(3)
:
auto_increment并不能为空:
notnull而且让她成为主字段primarykey
(2)
将NAM设为长度为10得字符字段(3)将ADDRES设为长度50得字符字段,而且缺省值为深圳。
varchar与char有什么区别呢,只有等以后得文章再说了。
(4)将YEARS为
日期字段。
如果您在mysql提示符键入上面得命令也可以,但不方便调试。
您可以将以上命令原样写入一个文本文件中假设为school、sql,然后复制到下,
并在DOS犬态进入目录WmysqlWbin,然后键入以下命令:
mysql-uroot-p密码\\school、sql
如果成功,空出一行无任何显示;如有错误,会有提示。
(以上命令已经调试,您只要将//得注释去掉即可使用)。
四、将文本数据转到数据库中
1、文本数据应符合得格式:
字段数据之间用tab键隔开,null值用\\n来代替、例:
3rose深圳二中1976-10-10
4mike深圳一中1975-12-23
2、数据传入命令loaddatalocalinfile\"文件名\"intotable表名;
注意:
您最好将文件复制到\\mysql\\bin目录下,并且要先用use命令打表所在得库。
五、备份数据库:
(命