MySql学习笔记.docx
- 文档编号:30685209
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:12
- 大小:21.11KB
MySql学习笔记.docx
《MySql学习笔记.docx》由会员分享,可在线阅读,更多相关《MySql学习笔记.docx(12页珍藏版)》请在冰豆网上搜索。
MySql学习笔记
MySql学习笔记
MySql概述:
MySql是一个种关联数据库管理系统,所谓关联数据库就是将数据保存在不同的表中,而不是将所有数据放在一个大的仓库中。
这样就增加了速度与提高了灵活性。
并且MySql软件是一个开放源码软件。
注意,MySql所支持的TimeStamp的最大范围的问题,在32位机器上,支持的取值范围是年份最好不要超过2030年,然后如果在64位的机器上,年份可以达到2106年,而对于date、与datetime这两种类型,则没有关系,都可以表示到9999-12-31,所以这一点得注意下;还有,在安装MySql的时候,我们一般都选择Typical(典型安装)就可以了,当然,如果还有其它用途的话,那最好选择Complete(完全安装);在安装过程中,一般的还会让你进行服务器类型的选择,分别有三种服务器类型的选择,(Developer(开发机)、ServerMachine(服务器)、DedicatedMySqlServerMachine(专用MYSQL服务器)),选择哪种类型的服务器,只会对配置向导对内存等有影响,不然其它方面是没有什么影响的;所以,我们如果是开发者,选择开发机就可以啦;然后接下来,还会有数据库使用情况对话框的选择,我们只要按照默认就可以啦;
连接与断开服务器:
连接:
在windows命令提示符下输入类似如下命令集:
mysql–hhost–uuser–p例如,我在用的时候输入的是:
mysql–hlocalhost–uroot–p
然后会提示要你输入用户密码,这个时候,如果你有密码的话,就输入密码敲回车,如果没有密码,直接敲回车,就可以进入到数据库客户端;连接远程主机上的mysql,可以用下面的命令:
mysql–h–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),birthdate,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字段的值;
Selectdistinctownerfrompet;从pet表中选择出owner字段的值唯一的行,如果有多行记录这个字段的值相同,则只显示最后一次出现这一值的一行记录;
有关日期计算:
Selectname,birth,curdate(),(year(curdate())-year(birth))asagefrompet;
此处,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,让他可以在任何时候主机上登陆,并对所有数据库有查询、插入、修改、删除的权限。
Grantselect,insert,update,deleteon*.*totest1@”%”identifiedby?
abc?
;增加一个test2用户,密码为abc,让他只可以在localhost上登陆,并且可以对数据库进行查询、插入、修改、删除操作;
Grantselect,insert,update,deleteonmydb.*totest2@localhostidentifiedby?
abc?
;如果不想让用户test2有密码,可以再输入以下命令消掉密码:
Grantselect,insert,update,deleteonmydb.*totest2@localhostidentifiedby“”;
备份数据库常用命令:
mysqldump–hhost–uusername–pdbname>保存路径与文件名然后回车后,会让你输入用户密码,输入密码后,再回车就OK啦;
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(? filepath? )); 例如: 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但却不知如何使用它。 在这篇文章中我们就从连接MYSQL、修改密码、增加用户等方面来学习一些MYSQL的常用命令。 一、连接MYSQL。 格式: mysql-h主机地址-u用户名,p用户密码 1、例1: 连接到本机上的MYSQL。 首先在打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql-uroot-p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql> mysql-uroot-pabcd123(注: u与root可以不用加空格,其它也一样) 3、退出MYSQL命令: exit(回车) 二、修改密码。 格式: mysqladmin-u用户名-p旧密码password新密码 1、例1: 给root加个密码ab12。 首先在DOS下进入目录mysqlbin,然后键入以下命令mysqladmin-uroot-passwordab12注: 因为开始时root没有密码,所以-p旧密码一项就可以省略了。 2、例2: 再将root的密码改为djg345。 mysqladmin-uroot-pab12passworddjg345三、增加新用户。 (注意: 和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符) 格式: grantselecton数据库.*to用户名@登录主机identifiedby\"密码\"例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。 首先用以root用户连入MYSQL,然后键入以下命令: grantselect,insert,update,deleteon*.*totest1@\"%\"Identifiedby\"abc\"; 但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。 例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。 grantselect,insert,update,deleteonmydb.*totest2@localhostidentifiedby\"abc\"; 如果你不想test2有密码,可以再打一个命令将密码消掉。 grantselect,insert,update,deleteonmydb.*totest2@localhostidentifiedby\"\"; (下篇) 在上篇我们讲了登录、增加用户、密码更改等问题。 下篇我们来看看MYSQL中有关数据库方面的操作。 注意: 你必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。 一、操作技巧 1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。 也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。 二、显示命令 1、显示数据库列表。 showdatabases; 刚开始时才两个数据库: mysql和test。 mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。 2、显示库中的数据表: usemysql;,,打开库,学过FOXBASE的一定不会陌生吧 showtables; 3、显示数据表的结构: describe表名; 4、建库: createdatabase库名; 5、建表: use库名; createtable表名(字段设定列表); 6、删库和删表: dropdatabase库名; droptable表名; 7、将表中记录清空: deletefrom表名; 8、显示表中的记录: select*from表名; 三、一个建库和建表以及插入数据的实例 dropdatabaseifexistsschool;//如果存在SCHOOL则删除 createdatabaseschool;//建立库SCHOOL useschool;//打开库SCHOOL createtableteacher//建立表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)将NAME设为长度为10的字符字段(3)将ADDRESS设为长度50的字符字段,而且缺省值为深圳。 varchar和char有什么区别呢,只有等以后的文章再说了。 (4)将YEAR设为日期字段。 如果你在mysql提示符键入上面的命令也可以,但不方便调试。 你可以将以上命令原样写入一个文本文件中假设为school.sql,然后复制到c: \\下,并在DOS状态进入目录\\mysql\\bin,然后键入以下命令: mysql-uroot-p密码 \\school.sql 如果成功,空出一行无任何显示;如有错误,会有提示。 (以上命令已经调试,你只要将//的注释去掉即可使用)。 四、将文本数据转到数据库中 1、文本数据应符合的格式: 字段数据之间用tab键隔开,null值用\\n来代替.例: 3rose深圳二中1976-10-10 4mike深圳一中1975-12-23 2、数据传入命令loaddatalocalinfile\"文件名\"intotable表名; 注意: 你最好将文件复制到\\mysql\\bin目录下,并且要先用use命令打表所在的库。 五、备份数据库: (命令在DOS的\\mysql\\bin目录下执行) mysqldump--optschool>school.bbb注释: 将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。 后记: 其实MYSQL的对数据库的操作与其它的SQL类数据库大同小异,您最好找本将SQL的书看看。 我在这里只介绍一些基本的,其实我也就只懂这些了,呵呵。 最好的MYSQL教程还是“晏子“译 的“MYSQL中文参考手册“不仅免费每个相关网站都有下载,而且它是最权威的。 可惜不是 象\"PHP4中文手册\"那样是chm的格式,在查找函数命令的时候不太方便。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySql 学习 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)