mysql的命令行语句,有需要的朋友可以参考下。
用SHOW显示已有的数据库USE db_name语句告诉MySQL使用db_name数据库作为随后的查询的缺省数据库。数据库保持到会话结束,或发出另外一个USE语句:
--------------------------------------------------------------------------------------
数据库操作
所要注意的是,所有举例的显示结果,均为下面操作步骤按顺序进行的结果。
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-01'andemp_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:[email protected])
版权声明:本文为博主原创文章,未经博主允许不得转载。