MySQL命令(针对shell命令行)下篇

来源:互联网 发布:理光打印机监控软件 编辑:程序博客网 时间:2024/06/07 10:28

mysql中的命令(应用于shell命令行)(下)

*对特定数据库下的table中的数据排序:->select field1,field2,…fieldN
->from table_name1,table_name2,…table_nameN
->order by field1,[field2…] [asc [desc]]
/*还是举个例子,假设现在有一个名为results的table中的数据如下:
+———–+——————–+——–+————-+
| code | name | credit | achievement |
+———–+——————–+——–+————-+
| U14G71004 | 体育 | 1 | 92 |
| U34G1101 | 大学生心理健康教育 | 2 | 86 |
| U31G71001 | 学科专业认知 | 0.5 | 92 |
| U13G11013 | 形势政治 | 2 | 87 |
| U11G11026 | 线性代数 | 2.5 | 81 |
| U6G202139 | 英语 | 3.5 | 70 |
| U11G11023 | 高等数学 | 6 | 73 |
+———–+——————–+——–+————-+
code是课程编码,credit为学分,achievement为成绩
现在想根据学分的大小排出各学科的顺序,实例如下:
->select name from results order by credit;
asc是正序,desc是逆序,默认是正序,若想逆序,可以在后面加上desc:
->select name from results order by credit desc;
*/

*对特定数据库下的table中的数据分组:->select column_name,function(column_name)
->from table_name1
->where column_name operator value
->group by column_name;
/*
如下面一组名为signin的table数据,我们想依据name对数据分类,并统计name出现的次数:
+—-+——–+———————+——–+
| id | name | date | singin |
+—-+——–+———————+——–+
| 1 | 小明 | 2016-04-22 15:25:33 | 1 |
| 2 | 小王 | 2016-04-20 15:25:47 | 3 |
| 3 | 小丽 | 2016-04-19 15:26:02 | 2 |
| 4 | 小王 | 2016-04-07 15:26:14 | 4 |
| 5 | 小明 | 2016-04-11 15:26:40 | 4 |
| 6 | 小明 | 2016-04-04 15:26:54 | 2 |
+—-+——–+———————+——–+
实例如下:
->select name COUNT(*) from signin group by name;
输出如下:
+——–+———-+
| name | COUNT(*) |
+——–+———-+
| 小丽 | 1 |
| 小明 | 3 |
| 小王 | 2 |
+——–+———-+
如果想要,再次统计这三个人每人登陆的总次数,可以加上WITH ROLLUP。实例如下:
->SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
输出如下:
+——–+————–+
| name | singin_count |
+——–+————–+
| 小丽 | 2 |
| 小明 | 7 |
| 小王 | 7 |
| NULL | 16 |
+——–+————–+
其中COUNT()和SUM()为function函数,MySQL的内置函数。
*/

*连接多个table中的数据(INNER JOIN):->select a.column_name1,a.column_name2,…a.column_nameN,b.column_name1,b.column_name2,…b.column_nameN
->from table_name1 a inner join table_name2 b [WHERE Clause];
/*还是举例说明,这里有两个表,如下:
第一张表名为table1,
+—————–+—————-+
| w3cschool_author | w3cschool_count |
+—————–+—————-+
| mahran | 20 |
| mahnaz | NULL |
| Jen | NULL |
| Gill | 20 |
| John Poul | 1 |
| Sanjay | 1 |
+—————–+—————-+
第二张表名为table2,
+————-+—————-+—————–+—————–+
| w3cschool_id | w3cschool_title | w3cschool_author | submission_date |
+————-+—————-+—————–+—————–+
| 1 | Learn PHP | John Poul | 2007-05-24 |
| 2 | Learn MySQL | Abdul S | 2007-05-24 |
| 3 | JAVA Tutorial | Sanjay | 2007-05-06 |
+————-+—————-+—————–+—————–+
实例如下:
->select a.w3cschool_id,a.w3cschool_author,b.w3cschool_count
->from table2 a inner join table1 b
->where a.w3cschool_author=b.w3cschool_author;
//这个命令的意思是显示出table1和table2中author相同的table2的id和table1中的count。
输出如下:
+———–+—————+————–+
| w3cschool_id | w3cschool_author | w3cschool_count |
+———–+—————+————–+
| 1 | John Poul | 1 |
| 3 | Sanjay | 1 |
+———–+—————+————–+
*/

alter相关命令
*修改一张表的表名:->alter table table_old_name rename to table_new_name;
*删除已创建的表中的字段(这里表示的是列,即按列删除):->alter table table_name drop column_name;
*创建新列column:->alter table table_name add column_name column_type [FIRST] or [AFTER column_name];
/*
最后的[FIRST] or [AFTER column_name]可要可不要,first就是放在最前面,after 就是在之后的意思。
注意:这样添加的列的默认值为NULL,可以在命令后面加上default value 来设置默认值。
*/
*修改table中字段的类型:
->alter table table_name modify column_name column_type;//使用MODIFY
*同时修改table中字段的类型和名称:
->alter table table_name change column_old_name column_new_name column_type;

差不多了,我的两篇博客(上下篇)总结了MySQL中常用的命令,希望对学习MySQL的童鞋有用。
想了解更多关于MySQL请看我的同类别的相关博客。

原创粉丝点击