资源描述
MySql学习笔记
MySql概述:MySql是一种种关联数据库管理系统,所谓关联数据库就是将数据保存在不同表中,而不是将所有数据放在一种大仓库中。这样就增长了速度与提高了灵活性。并且MySql软件是一种开放源码软件。
注意,MySql所支持TimeStamp最大范畴问题,在32位机器上,支持取值范畴是年份最佳不要超过2030年,然后如果在64位机器上,年份可以达到21,而对于date、与datetime这两种类型,则没关于系,都可以表达到9999-12-31,因此这一点得注意下;尚有,在安装MySql时候,咱们普通都选取Typical(典型安装)就可以了,固然,如果尚有其他用途话,那最佳选取Complete(完全安装);在安装过程中,普通还会让你进行服务器类型选取,分别有三种服务器类型选取,(Developer(开发机)、Server Machine(服务器)、Dedicated MySql Server Machine(专用MYSQL服务器)),选取哪种类型服务器,只会对配备向导对内存等有影响,否则其他方面是没有什么影响;因此,咱们如果是开发者,选取开发机就可以啦;然后接下来,还会有数据库使用状况对话框选取,咱们只要按照默认就可以啦;
连接与断开服务器:
连接:在windows命令提示符下输入类似如下命令集:mysql –h host –u user –p 例如,我在用时候输入是:mysql –h localhost –u root –p
然后会提示要你输入顾客密码,这个时候,如果你有密码话,就输入密码敲回车,如果没有密码,直接敲回车,就可以进入到数据库客户端;连接远程主机上mysql,可以用下面命令:mysql –h 159.0.45.1 –u root –p 123
断开服务器:在进入客户端后,你可以直接输入quit然后回车就可以了;
下面就数据库有关命令进行有关阐明
你可以输入如下命令对数据库表格或者数据库进行有关操作,在这里就省略了,然后直接进行文字阐明了;
Select version(),current_date;//从服务器得到当前mysql版本号与当前日期 Select user();//得到当前数据库所有顾客
Use databasename;进入到指定数据库当中,然后就可以操作这个数据库当中表格了 Show databases;//查询当前数据库中所有数据库,并且显示出来;
Create batabase databasename;创立数据库,例如:create database manager;Show tables;//查看当前数据库中所有表格;
Create table tablename(colums);创立表,并且给表指定有关列,例如:create table pet(name
varchar(20),owner varchar(20),species varchar(20),sex char(1),birth date,death date);
Describe tablename;将表当中所有信息详细显示出来,例如:describe pet;可以用命令一次插入多条记录,例如:
Insert into pet
values(„Puffball?,?Diane?,?hamster?,?f?,?1993-12-3?,null),( „Puffball?,?Diane?,?hamster?,?f?,?1993-1
2-3?,now());
Select * from pet;从pet表当中查询出所有记录,显示出来;
Delete from pet where id=1;删除ID为1那一条记录;
Update pet set birth=?-1-3?where name=?Bowser?;更新name为Bowser记录当中birth字段值;
Select distinct owner from pet;从pet表中选取出owner字段值唯一行,如果有多行记录这个字段值相似,则只显示最后一次浮现这一值一行记录;
关于日期计算:
Select name,birth,curdate(),(year(curdate())-year(birth)) as age from pet;
此处,year()函数用于提取相应字段年份,固然类似尚有month(),day()等;
在mysql当中,sql语句可以使用like查询,可以用”_”配任何单个字符,用”%”配任意数目字符,并且SQL模式默认是忽视大小写,例如:select * from pet where name like „%fy?;固然也可以用正则表达式模式进行配。
同步在sql当中,也要注意分组函数、排序函数、记录函数等有关用法,在这里只列举一二;Select species,count(*) from pet group by speceis;
Select * from pet order by birth desc;
查询最大值有关操作:
Select max(age) from pet;
取前多少项记录,这个重要用于分页查询操作当中,
Select * from pet order by birth desc limit 3;取前三条记录,
Select * from pet order by birth desc limit 0,3;这个可以用于分页查询,limit背面第一种参数,是起始位置,第二个参数是取记录条数;
关于创立表格自增长字段写法:
Create table person(id int(4) not null auto_increment,name char(20) not null,primary key (id));
修改表操作:
向表中增长字段:注意,在这个地方,如果是增长各种字段时候,就要用括号括起来,否则会有问题,如果是单个字段话,不用括号也没事;
Alter table test add(address varchar(50) not null default „xm?,email varchar(20) not null);
将表中某个字段名字修改或者修改其相应有关属性时候,要用change对其进行操作;Alter table test change email email varchar(20) not null default „zz?;//不修改字段名
Alter table test change email Email varchar(30) not null;//修改字段名称
删除表中字段:
Alter table test drop email;//删除单个字段
Alter table test drop address,drop email;//删除多列
可以用Drop来取消主键与外键等,例如:
Alter table test drop foreign key fk_symbol;删除索引:
Drop index index_name on table_name;例如:drop index t on test;
向表中插入记录:注意,当插入表中记录并不是所有字段时候,应当要在前面列出字段名称才行,否则会报错;
Insert into test(name) values(„ltx?);
Insert into test values(1,?ltx?);
也可以向表中同步插入多列值,如:
Insert into test(name) values(„ltx?),(„hhy?),(„xf?);
删除表中记录:
Delete from test;//删除表中所有记录;
Delete from test where id=1;//删除表中特定条件下记录;
当要从一种表或者各种表当中查询出某些字段然后把这些字段又要插入到另一种表当中时候,可以用insert …..select语法;
Insert into testt(name) (select name from test where id=4);
从文献中读取行插入数据表中,可以用Load data infile语句;
Load data infile „test.txt?into table test;
可以用Describe语法进行获取关于列信息;
Describe test;//可以查看test表所有信息,涉及相应列字段数据类型等;
MySql事务解决有关语法;
开始一项新事务:start transaction或者begin transaction 提交事务:commit
事务回滚:rollback
set autocommit true|false 语句可以禁用或启用默认autocommit模式,只可用于当前连接;例子:
Start transaction;
Update person set name=?LJB?where id=1;
Commit | rollback;
数据库管理语句
修改顾客密码:以root顾客为例,则可以写成下面;mysql –u root –p 旧密码 –password 新密码
Mysql –u root –password 123;//将root顾客密码修改成123,由于root顾客开始时候,是没有密码,因此-p旧密码就省略了;
例如修改一种有密码顾客密码:mysql –u ltx –p 123 –password 456;
增长一种顾客test1,密码为abc,让她可以在任何时候主机上登陆,并对所有数据库有查询、插入、修改、删除权限。
Grant select,insert,update,delete on *.* to test1@”%” identified by „abc?;增长一种test2顾客,密码为abc,让她只可以在localhost上登陆,并且可以对数据库进行查询、插入、修改、删除操作;
Grant select,insert,update,delete on mydb.* to test2@localhost identified by „abc?;如果不想让顾客test2有密码,可以再输入如下命令消掉密码:
Grant select,insert,update,delete on mydb.* to test2@localhost identified by “”;
备份数据库惯用命令:mysqldump –h host –u username –p dbname>保存途径与文献名 然后回车后,会让你输入顾客密码,输入密码后,再回车就OK啦;
Mysqldump –hlocalhost –uroot –p test >E:\db\test.sql
这一命令详细解释下:
这个命令就是备份test数据库,并且将备份内容存储为test.sql文献,并且保存在E:\db下面;
命令当中-p 前面test是数据库名,然后在数据库名背面要跟上一种”>”,然后接下来,就是写要保存位置与保存文献文献名;
将备份好数据库导入到数据库当中去:也就是运营.sql文献将数据库导入数据库当中去-> 一方面你得创立数据库,然后运营如下命令:mysql –hlocalhost –uroot –p linux<E:\db\test.sql然后回车,再输入密码就可以啦;
解释下上面命令:linux是就要导入数据库名字,然后背面要紧跟着“<”符号,然后背面就是要导入数据库文献;
将数据库导出保存成XML文献、从XML文献导入数据到数据库:
导出表中数据:mysql –X –h hostName –u userName –p Pwd –e “use DatabaseName;sql;” >xml
文献名
或者用此外一种方式也行:mysqldump –xml –h hostName –u userName –p pwd dbName tableName //这一种只用于显示在当前mysql客户端,不保存到文献当中;有关阐明:-X代表是文献格式是XML,然后-e一写不能掉,尚有就是要用双引号将要操作语句括起来;单引号不行;
例如:mysql –X –hlocalhost –uroot –p –e “use test;select * from pet;”>E:\db\out.xml 从XML文献导入数据到数据库:
Insert into tableName values(1,load_file(„filepath?));
例如:insert into pet values(1,load_file(“E:\db\out.xml”));
查看数据库状态与查询进程:
Show status;//查看状态
Show processlist;//查看进程
更改顾客名,用如下命令:
Update set user=”新名字” where user=”旧顾客名”;
给数据库顾客设立管理员权限:
Mysqladmin –h host –u username –p pwd;以root顾客为例;
Mysqladmin –h localhost –u root –p 123;
存储过程与函数
存储程序和函数分别是用create procedure和create function语句,一种程序要么是一种程序
要么是一种函数,使用call语句来调用程序,并且程序只能用输出变量传回值;
要想在MySql5.1中创立子程序,必要具备create routine权限,并且alter routine和execute
权限被自动授予它创立者;
创立存储过程:
一方面声明分隔符,所谓分隔符是指你告知mysql客户端你已经输入一种sql语句字符或字
符串符号,在这里咱们就以“//”为分隔符;
Delimiter 分隔符\
如:delimiter //
再创立存储过程:
Create procedure 存储过程名 ( )
声明存储过程开始:
begin
然后开始写存储过程体:
Select * from pet;
结束存储过程:
End;//
刚刚例子所有写出来,完整代码就是:Delimiter //
Create procedure spt () //注意,这个地方,存储过程名与括号之间要有个空格
Begin
Select * from pet;
End;//到这里,整个存储过程就算写完啦
执行存储过程:
Call 存储过程名 ();//
如,咱们执行刚刚创立存储过程,就是:
Call spt ();//
需要阐明是存储过程名背面一定要加个空格,而背面那个括号,则是用于传送参数参数列表;此外,咱们创立存储过程完毕后,也只是创立了,但是只有调用call 存储过程名 ();//后才算执行完毕,才干看到存储过程成果;
有诸多朋友虽然安装好了mysql但却不知如何使用它。在这篇文章中咱们就从连接MYSQL、修改密码、增长顾客等方面来学习某些MYSQL惯用命令。
一、连接MYSQL。
格式:mysql -h主机地址 -u顾客名 ,p顾客密码
1、例1:连接到本机上MYSQL。
一方面在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级顾客root是没有密码,故直接回车即可进入到MYSQL中了,MYSQL提示符是:mysql>
2、例2:连接到远程主机上MYSQL。假设远程主机IP为:110.110.110.110,顾客名为root,密码为abcd123。则键入如下命令:
mysql -h110.110.110.110 -uroot -pabcd123 (注:u与root可以不用加空格,其他也同样)
3、退出MYSQL命令:exit (回车)
二、修改密码。
格式:mysqladmin -u顾客名 -p旧密码 password 新密码
1、例1:给root加个密码ab12。一方面在DOS下进入目录mysqlbin,然后键入如下命令 mysqladmin -uroot -password ab12 注:由于开始时root没有密码,因此-p旧密码一项就可以省略了。
2、例2:再将root密码改为djg345。
mysqladmin -uroot -pab12 password djg345 三、增长新顾客。(注意:和上面不同,下面由于是MYSQL环境中命令,所后来面都带一种分号作为命令结束符)
格式:grant select on 数据库.* to 顾客名@登录主机 identified by \"密码\" 例1、增长一种顾客test1密码为abc,让她可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除权限。一方面用以root顾客连入MYSQL,然后键入如下命令:grant select,insert,update,delete on *.* to test1@\"%\" Identified by \"abc\";
但例1增长顾客是十分危险,你想如某个人懂得test1密码,那么她就可以在internet上任何一台电脑上登录你mysql数据库并对你数据可觉得所欲为了,解决办法见例2。
例2、增长一种顾客test2密码为abc,让她只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除操作(localhost指本地主机,即MYSQL数据库所在那台主机),这样顾客虽然用懂得test2密码,她也无法从internet上直接访问数据库,只能通过MYSQL主机上web页来访问了。
grant select,insert,update,delete on mydb.* to test2@localhost identified by \"abc\";
如果你不想test2有密码,可以再打一种命令将密码消掉。
grant select,insert,update,delete on mydb.* to test2@localhost identified by \"\";
(下篇)
在上篇咱们讲了登录、增长顾客、密码更改等问题。下篇咱们来看看MYSQL中关于数据库方面操作。注意:你必要一方面登录到MYSQL中,如下操作都是在MYSQL提示符下进行,并且每个命令以分号结束。
一、操作技巧
1、如果你打命令时,回车后发现忘掉加分号,你不必重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一种完整命令提成几行来打,完后用分号作结束标志就OK。 2、你可以使用光标上下键调出此前命令。但此前我用过一种MYSQL旧版本不支持。我当前用是mysql-3.23.27-beta-win。
二、显示命令
1、显示数据库列表。
show databases;
刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL系统信息,咱们改密码和新增顾客,事实上就是用这个库进行操作。
2、显示库中数据表:
use mysql;,,打开库,学过FOXBASE一定不会陌生吧
show tables;
3、显示数据表构造:
describe 表名;
4、建库:
create database 库名;
5、建表:
use 库名;
create table 表名 (字段设定列表);
6、删库和删表:
drop database 库名;
drop table 表名;
7、将表中记录清空:
delete from 表名;
8、显示表中记录:
select * from 表名;
三、一种建库和建表以及插入数据实例
drop database if exists school;//如果存在SCHOOL则删除
create database school;//建立库SCHOOL
use school;//打开库SCHOOL
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default \'深圳\',
year date
);//建表结束
//如下为插入字段
insert into teacher values(\'\',\'glchengang\',\'深圳一中\',\'1976-10-10\');insert into teacher values(\'\',\'jack\',\'深圳一中\',\'1975-12-23\');
注:在建表中(1)将ID设为长度为3数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null并且让她成为主字段primary key (2)将NAME设为长度为10字符字段(3)将ADDRESS设为长度50字符字段,并且缺省值为深圳。
varchar和char有什么区别呢,只有等后来文章再说了。 (4)将YEAR设为日期字段。 如果你在mysql提示符键入上面命令也可以,但不以便调试。你可以将以上命令原样写入一种文本文献中假设为school.sql,然后复制到c:\\下,并在DOS状态进入目录\\mysql\\bin,然后键入如下命令:
mysql -uroot -p密码 < c:\\school.sql
如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//注释去掉即可使用)。
四、将文本数据转到数据库中
1、文本数据应符合格式:字段数据之间用tab键隔开,null值用\\n来代替. 例:
3 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23
2、数据传入命令 load data local infile \"文献名\" into table 表名;
注意:你最佳将文献复制到\\mysql\\bin目录下,并且要先用use命令打表所在库 。
五、备份数据库:(命令在DOS\\mysql\\bin目录下执行)
mysqldump --opt school>school.bbb 注释:将数据库school备份到school.bbb文献,school.bbb是一种文本文献,文献名任取,打开看看你会有新发现。
后记:其实MYSQL对数据库操作与其他SQL类数据库大同小异,您最佳找本将SQL书看看。
我在这里只简介某些基本,其实我也就只懂这些了,呵呵。最佳MYSQL教程还是“晏子“译
“MYSQL中文参照手册“不但免费每个有关网站均有下载,并且它是最权威。可惜不是
象\"PHP4中文手册\"那样是chm格式,在查找函数命令时候不太以便。
展开阅读全文