|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
即使对于MySQL的商业化的企业版来说,也没有高昂的许可证成本,当你将其与像甲骨文和微软之类的大型专有商业数据库比较的话。因为老手进门php+MySQL手艺,一定对Mysql操纵存有疑问。
只管PHPMyadmin办理数据库对老手来讲也无妨为一种很好的体例。但更多的实践利用还要靠人人对Myql语句格局
的精晓和纯熟的操纵。
为了便利老手尽快进门,把握Mysql的奇妙。鄙人费了一个星期工夫的调试和收拾,终究脱稿了这份对照完美的进
门级操纵实例的指南。但愿能给新进门的伴侣扬帆指路,送一满帆的顺风。
Mysql4.1.10低级解读
※※※※※※※※※※※※※※Mysql低级解读(所用版本:4.1.10)※※※※※※※※※※※※※※
安装注重事项
在安装的过程当中,请记好您的暗码,这是未来登录mysql的钥匙。
=======================无==敌==分==割==线=======================
1、Mysql数据库服务器登录
登录mysql必要切换到dos下的mysql的bin目次,举行以下操纵:
语法格局:mysql-hhost_name-uuser_name-ppassWord(本机的话-h和host_name可省)
----------------------我------------割--------------------------
MyExperience:
C:PRogramfilesmysqlmysqlserver4.1bin>mysql-uroot-p
Enterpassword:******
先输出用户名和暗码上岸请求(加上-p),回车后等呈现"Enterpassword:",再输出暗码回车,如许就能够
乐成上岸mysql,不然将会上岸失利。
----------------------我------------割--------------------------
上岸乐成后会显现以下信息:
WelcometotheMySQLmonitor.Commandsendwith;org.
YourMySQLconnectionidis1toserverversion:4.1.10-nt
Typehelp;orhforhelp.Typectoclearthebuffer.
mysql>
标识"mysql>",当你看到这个呈现在窗口的最右边的顶格时,这就是告知你,你能够输出命令举行操纵了。
mysql>s检察版本信息
mysql>qormysql>quit加入mysql数据库服务器
mysql>hormysql>help检察匡助(其他的数据库服务器相干命令)
=======================无==敌==分==割==线=======================
2、数据库操纵
所要注重的是,一切举例的显现了局,均为上面操纵步骤按按次举行的了局。
----------------------我------------割--------------------------
2.1查询语句
2.1.1检察Mysql数据库的版本号和服务器确当前日期
mysql>selectversion(),current_date;(操纵体例一)
mysql>selectversion()
->,current_date;(操纵体例二)
※:操纵语句间用","离隔,用";"来暗示操纵停止,操纵语句输出过程当中,换行不影响操纵历程。
2.1.2检察服务器中的一切数据库
mysql>showdatabases;
----------------------我------------割--------------------------
2.2创立数据库
2.2.1创立数据库(固然,数据库名"asb"不克不及是已存在的)
mysql>createdatabaseasb;
2.2.2选用数据库,使其成为以后操纵的数据库
mysql>useasb;
乐成选中后会有以下显现:
Databasechanged
乃至能够在窗口命令上岸mysql数据库的时分间接选中要操纵的数据库(固然条件是asb数据库存在)
bin>mysqlasb-uuesername-p
Enterpassword:******
2.2.3检察以后所操纵的数据库称号
mysql>selectdatabase();
运转后了局以下:
+------------+
|database()|
+------------+
|asb|
+------------+
1rowinset(0.00sec)
----------------------我------------割--------------------------
2.3创立表
2.3.1用"createtable"创立表(确认是要在以后数据库中创立,不是的话就先用use选中要创立表的谁人数据库)
mysql>createtableemp(emp_idvarchar(6)
->,emp_namevarchar(10)
->,emp_ageint
->,emp-salint
->,emp_birdate
->,emp_sexvarchar(5)
->);
2.3.2检察以后数据库中的表(能够查验上例的"emp"表是不是乐成创建)
mysql>showtables;
假如是乐成将是以下显现:
+---------------+
|Tables_in_asb|
+---------------+
|emp|
+---------------+
1rowinset(0.00sec)
2.3.3检察数据表的布局
mysql>describeemp;
运转后了局会如以下显现:
+----------+-------------+------+-----+---------+-------+
|Field|Type|Null|Key|Default|Extra|
+----------+-------------+------+-----+---------+-------+
|emp_id|varchar(6)|YES||NULL||
|emp_name|varchar(10)|YES||NULL||
|emp_age|int(11)|YES||NULL||
|emp_sal|int(11)|YES||NULL||
|emp_bir|date|YES||NULL||
|emp_sex|varchar(5)|YES||NULL||
+----------+-------------+------+-----+---------+-------+
----------------------我------------割--------------------------
2.4拔出数据
2.4.1利用INSERT语句举行拔出纪录操纵(数据库表中每行就是一个纪录,拔出纪录实践上就是向表中拔出一行)
格局:INSERTINTOtable_name(数据表名)VALUES(值1,值2,值3...);
在VALUES关头字后括号中的数值和字符段,必需和你所建的表所界说的字段数据范例必需分歧!
mysql>insertintoempvalues
->(100005,啸天,27,3000,1979-07-10,male);
拔出乐成后会有以下信息显现:
QueryOK,1rowaffected(0.03sec)
2.4.2检察表中的数据(能够断定数据是不是已乐成拔出)
mysql>select*fromemp;
乐成拔出后的数据显现以下:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100005|啸天|27|3000|1979-07-10|male|
+--------+----------+---------+---------+------------+---------+
1rowinset(0.00sec)
一次性拔出多行的格局:INSERTINTOtable_name(数据表名)VALUES(值1,值2,值3...),(值1,值2,值3...);
mysql>insertintoempvalues
->(100001,红枫,29,8000,1977-01-01,male),
->(100002,丽鹃,27,7000,1979-12-31,fmale);
能够检察拔出后的数据了局:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100005|啸天|27|3000|1979-07-10|male|
|100004|红枫|29|8000|1977-01-01|male|
|100002|丽鹃|27|7000|1979-12-31|fmale|
+--------+----------+---------+---------+------------+---------+
3rowsinset(0.00sec)
----------------------我------------割--------------------------
2.5修正数据
2.5.1利用UPDATE语句来更新表中的数据
mysql>updateempsetemp_id=100001whereemp_name=红枫;
修正了局显现以下:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100005|啸天|27|3000|1979-07-10|male|
|100001|红枫|29|8000|1977-01-01|male|
|100002|丽鹃|27|7000|1979-12-31|fmale|
+--------+----------+---------+---------+------------+---------+
3rowsinset(0.00sec)
假如该语句没有前面的where限定,将会对表中一切的纪录都举行修正。
如,给全体人加薪1000,能够以下修正:
mysql>updateempsetemp_sal=emp_sal+1000;
修正了局显现以下:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100005|啸天|27|4000|1979-07-10|male|
|100001|红枫|29|9000|1977-01-01|male|
|100002|丽鹃|27|8000|1979-12-31|fmale|
+--------+----------+---------+---------+------------+---------+
3rowsinset(0.00sec)
----------------------我------------割--------------------------
2.6初级查询办法
2.6.1纪录查询
查询emp表中,emp_name为啸天的全体信息
mysql>select*fromempwhereemp_name=啸天;
查询了局显现以下:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100005|啸天|27|4000|1979-07-10|male|
+--------+----------+---------+---------+------------+---------+
1rowinset(0.00sec)
查询emp表中,emp_sal,人为在5000以上的全体信息
mysql>select*fromempwhereemp_sal>5000;
查询了局显现以下:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100001|红枫|29|9000|1977-01-01|male|
|100002|丽鹃|27|8000|1979-12-31|fmale|
+--------+----------+---------+---------+------------+---------+
2rowsinset(0.00sec)
查询emp表中在1978年1月1日以后出身的
mysql>select*fromempwhereemp_bir>1978-01-01;
查询了局显现以下:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100005|啸天|27|4000|1979-07-10|male|
|100002|丽鹃|27|8000|1979-12-31|fmale|
+--------+----------+---------+---------+------------+---------+
2rowsinset(0.00sec)
查询emp表中在1979年12月1日之前出身,人为在5000以上的
mysql>select*fromempwhereemp_bir<1979-12-01andemp_sal>5000;
查询了局显现以下:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100001|红枫|29|9000|1977-01-01|male|
+--------+----------+---------+---------+------------+---------+
1rowinset(0.00sec)
2.6.2字段查询
CEO检察员工人为情形
mysql>selectemp_name,emp_salfromemp;
查询了局显现以下:
+----------+---------+
|emp_name|emp_sal|
+----------+---------+
|啸天|4000|
|红枫|9000|
|丽鹃|8000|
+----------+---------+
3rowsinset(0.00sec)
检察1978年后出身的人的姓名、人为和性别
mysql>selectemp_name,emp_sal,emp_sexfromempwhereemp_bir>"1977-12-31";
查询了局显现以下:
+----------+---------+---------+
|emp_name|emp_sal|emp_sex|
+----------+---------+---------+
|啸天|4000|male|
|丽鹃|8000|fmale|
+----------+---------+---------+
2rowsinset(0.00sec)
2.6.3查询了局排序
用ORDERBY语句对emp表中一切员工人为上下按次查询了局(默许是从低到高――升序)
mysql>select*fromemporderbyemp_sal;
查询了局显现以下:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100005|啸天|27|4000|1979-07-10|male|
|100002|丽鹃|27|8000|1979-12-31|fmale|
|100001|红枫|29|9000|1977-01-01|male|
+--------+----------+---------+---------+------------+---------+
3rowsinset(0.00sec)
用DESC关头字来举行从高到低排序――降序
mysql>select*fromemporderbyemp_saldesc;
查询了局显现以下:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100001|红枫|29|9000|1977-01-01|male|
|100002|丽鹃|27|8000|1979-12-31|fmale|
|100005|啸天|27|4000|1979-07-10|male|
+--------+----------+---------+---------+------------+---------+
3rowsinset(0.00sec)
2.6.4查询了局数目的限定
用LIMIT检察emp表中人为支出排名前两个员工的材料:
mysql>select*fromemporderbyemp_saldesclimit2;
查询了局显现以下:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100001|红枫|29|9000|1977-01-01|male|
|100002|丽鹃|27|8000|1979-12-31|fmale|
+--------+----------+---------+---------+------------+---------+
2rowsinset(0.00sec)
检察人为排名第2到第3的员人为料:
mysql>select*fromemporderbyemp_saldesclimit1,2;
查询了局显现以下:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100002|丽鹃|27|8000|1979-12-31|fmale|
|100005|啸天|27|4000|1979-07-10|male|
+--------+----------+---------+---------+------------+---------+
2rowsinset(0.01sec)
利用rand()抽样查询拜访,随机抽取2个员工,检察其材料
mysql>select*fromemporderbyrand()limit2;
如以下了局:(随机的)
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100005|啸天|27|4000|1979-07-10|male|
|100001|红枫|29|9000|1977-01-01|male|
+--------+----------+---------+---------+------------+---------+
2rowsinset(0.01sec)
2.6.5查询了局的字段团结和从头定名
mysql>selectconcat(emp_id,"",emp_name)fromemp;
查询了局:
+------------------------------+
|concat(emp_id,"",emp_name)|
+------------------------------+
|100005啸天|
|100001红枫|
|100002丽鹃|
+------------------------------+
3rowsinset(0.00sec)
用AS关头字从头给输入了局定名题目
mysql>selectconcat(emp_id,"",emp_name)asinfofromemp;
查询了局以下显现:
+----------------+
|info|
+----------------+
|100005啸天|
|100001红枫|
|100002丽鹃|
+----------------+
3rowsinset(0.00sec)
2.6.6日期查询的相干运算
能够经由过程YEAR()、MONTH()、DAYOFMONTH()函数来提取日期的构成元素
查询7月份出身的员人为料:
mysql>select*fromempwheremonth(emp_bir)=7;
查询了局显现以下:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100005|啸天|27|4000|1979-07-10|male|
+--------+----------+---------+---------+------------+---------+
1rowinset(0.00sec)
能够使用英文月份来查询:
mysql>select*fromempwheremonthname(emp_bir)="January";
查询了局显现以下:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100001|红枫|29|9000|1977-01-01|male|
+--------+----------+---------+---------+------------+---------+
1rowinset(0.00sec)
使用TO_DAYS()函数能够查询出职工们从出身到如今所司理的工夫,单元是天数
mysql>selectto_days(current_date)-to_days(emp_bir)aslivingdaysfromemp;
查询后了局以下:
+------------+
|livingdays|
+------------+
|9425|
|10345|
|9251|
+------------+
3rowsinset(0.00sec)
盘算从如今入手下手履历100天后的日期
mysql>selectdate_add(now(),interval100day);
查询了局以下:
+----------------------------------+
|date_add(now(),interval100day)|
+----------------------------------+
|2005-08-0713:56:58|
+----------------------------------+
1rowinset(0.00sec)
盘算从如今入手下手履历100天后的日期
mysql>selectdate_sub(now(),interval100day);
查询了局以下:
+----------------------------------+
|date_sub(now(),interval100day)|
+----------------------------------+
|2005-01-1914:00:20|
+----------------------------------+
1rowinset(0.00sec)
2.6.7数据统计
利用COUNT()函数盘算表中的数据数量(好比emp表中的员工数量)
mysql>selectcount(*)fromemp;
查询了局以下:
+----------+
|count(*)|
+----------+
|3|
+----------+
1rowinset(0.01sec)
统计人为上5000的数量
mysql>selectcount(*)fromempwhereemp_sal>5000;
查询了局以下:
+----------+
|count(*)|
+----------+
|2|
+----------+
1rowinset(0.00sec)
统计男女职工数量:(GROUPBY语句分类)
mysql>selectemp_sex,count(*)fromempgroupbyemp_sex;
查询了局以下:
+---------+----------+
|emp_sex|count(*)|
+---------+----------+
|fmale|1|
|male|2|
+---------+----------+
2rowsinset(0.01sec)
利用数据统计函数(MIN(),MAX(),SUM(),AVG())
mysql>select
->min(emp_sal)asmin_salary,
->max(emp_sal)asmax_salary,
->sum(emp_sal)assum_salary,
->avg(emp_sal)asavg_salary,
->count(*)asemployee_num
->fromemp;
查询了局以下:
+------------+------------+------------+------------+--------------+
|min_salary|max_salary|sum_salary|avg_salary|employee_num|
+------------+------------+------------+------------+--------------+
|4000|9000|21000|7000.0000|3|
+------------+------------+------------+------------+--------------+
1rowinset(0.00sec)
2.6.8从多个数据表中检索信息
依据后面的办法,分离举行以下操纵:
1).在数据库asb中创建一个新表dept,表中有两项元素:
dept_id-->varchar(6)
dept_name-->varchar(10)
2).在表emp中拔出以下一行新纪录:
+--------+----------+---------+---------+------------+---------+
|emp_id|emp_name|emp_age|emp_sal|emp_bir|emp_sex|
+--------+----------+---------+---------+------------+---------+
|100003|小红|30|8000|1976-11-11|fmale|
+--------+----------+---------+---------+------------+---------+
3).在新表dept中,输出以下纪录
+---------+-----------+
|dept_id|dept_name|
+---------+-----------+
|100005|MTD|
|100001|MTD|
|100002|MTD|
|100003|HR|
+---------+-----------+
查询emp和dept这两个表中,员工的姓名和部门信息
mysql>selectemp.emp_name,dept.dept_namefromemp,dept
->whereemp.emp_id=dept.dept_id;
查询了局以下:
+----------+-----------+
|emp_name|dept_name|
+----------+-----------+
|啸天|MTD|
|红枫|MTD|
|丽鹃|MTD|
|小红|HR|
+----------+-----------+
4rowsinset(0.00sec)
多表查询时注重:
1).FROM子句必需给出所查询的表的全体称号
2).选择字段时分说明其所属表的称号(如emp表中的emp_id要暗示为emp.emp_id)
3).在Where子句中必需指明查询的前提(如,emp.emp_id和dept.dept_id是不异意义的元素)
----------------------我------------割--------------------------
2.7删除表双数据
2.7.1利用DELETE语句删除表单中的数据纪录
小红不在了哦,得删了吧
mysql>deletefromempwhereemp_name=小红;
实行乐成后会以下显现:
QueryOK,1rowaffected(0.06sec)
省略where是删除全体表中的纪录
2.7.2利用DRO删除表
(先任意创建一个数据库dt,并建张一时表fuck)
mysql>droptablefuck;
2.7.3利用DRO删除数据库
mysql>dropdatabasedt;
----------------------我------------割--------------------------
2.8改动数据表的布局
先创建一个新表id(内带一个属性id_namevarchar(6)),输出一行数据(xgw)
2.8.1对表从头定名
altertable数据表名renameas数据表的新名字;
把表id更名成name
mysql>altertableidrenameasname;
2.8.2给数据表增添一个字段
altertable数据表名add字段称号字段范例;
在悔改名的新表name中增添一个字段(idint(6))
mysql>altertablenameaddidint(6);
增添乐成后有以下显现:
QueryOK,1rowaffected(0.26sec)
Records:1Duplicates:0Warnings:0
2.8.3变动已创建的字段范例
altertable数据表名modify字段称号字段范例;
把name表中id属性的范例改成10个长度的字符范例
mysql>altertablenamemodifyidvarchar(10);
altertalbe语句另有良多功效,详细可查阅MySQL的手艺手册。
(thequestions,callmeanytime!E-mail:tt981@netease.com)
※※※※※※※※※※※※※※Mysql低级解读(所用版本:4.1.10)※※※※※※※※※※※※※※
CopyRightByFengLin,2005-4-29
DBaaS系统其实具有更大的市场机遇:像其他云服务一样,DBaaS意味着更短的销售周期,更少的启动费用,持续不断的收入,也意味着比之前更多的客户。 |
|