mysql的命令行语句

来源:互联网 时间:1970-01-01

mysql的命令行语句,有需要的朋友可以参考下。

用SHOW显示已有的数据库


句法:SHOW DATABASES [LIKE wild]


如果使用LIKE wild部分,wild字符串可以是一个使用SQL的“%”和“_”通配符的字符串。


功能:SHOW DATABASES列出在MySQL服务器主机上的数据库。


你可以尝试下面举例,观察输出结果,例如:


mysql>show databases;


+----------+


| Database |


+----------+


| first |


| mysql |


| mytest |


| test |


| test1 |


+----------+


mysql>show databases like ‘my%’;


+----------------+


| Database (my%) |


+----------------+


| mysql |


| mytest |


+----------------+

用Create Dabase 创建数据库


句法:CREATE DATABASE db_name


功能:CREATE DATABASE用给定的名字创建一个数据库。


如果数据库已经存在,发生一个错误。


在MySQL中的数据库实现成包含对应数据库中表的文件的目录。因为数据库在初始创建时没有任何表,CREATE DATABASE语句只是在MySQL数据目录下面创建一个目录。


例如:


mysql>create database myfirst;


然后利用show databases观察效果。


用DROP DATABASE删除数据库


句法:DROP DATABASE [IF EXISTS] db_name


功能:DROP DATABASE删除数据库中的所有表和数据库。要小心地使用这个命令!


DROP DATABASE返回从数据库目录被删除的文件的数目。通常,这3倍于表的数量,因为每张表对应于一个“.MYD”文件、一个“.MYI”文件和一个“.frm”文件。


在MySQL 3.22或以后版本中,你可以使用关键词IF EXISTS阻止一个错误的发生,如果数据库不存在。


用USE选用数据库


句法:USE db_name


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])

版权声明:本文为博主原创文章,未经博主允许不得转载。



相关阅读:
Top