您的位置:首页 > 数据库 > MySQL

(1)Mysql操作语句

2016-01-22 19:29 405 查看
简介:MySql包含三种类型的语句

DDL(Data Defination Language)

DCL(Data Control Language)

DML(Data Manipulation Language)

DDL语句

诸如ALter、Create、Drop等语句,是对数据库以及表的定义。着重介绍Alter语句。

增加字段:ALTER table tableName add 字段定义 after 字段 (first)

修改字段定义:使用modify、change关键字,但是modify关键字不能改名,change可以改名。

Alter table tableName change 旧字段 新字段;

更改表名:Alter table tableName rename 新表名

DML语句

DML语句是指对数据库中的数据进行操作。包括对数据的增、删、改、查。

增加:INSERT 删除:DELETE 改:UPDATE 查:SELECT

一:增加:INSERT

标准用法:INSERT INTO tablename (field1,field2…) VALUES(value1,value2,…);

简略用法:INSERT INTO tablename VALUES (value1,value2,…) 但是,value的值要和field的值一一对应。

含有空字段、非空但有默认值的字段、自增字段,可以不出现field。

但是使用简略写法的时候,空字段、非空但有默认值的字段、自增字段,要有相应的value出现。所以,最好是使用标准用法。

二:删除:DELETE

1:删除表内容全部 DELETE FROM tablename

2:单表删除内容 DELETE FROM tablename WHERE …

3:多表删除内容 DELETE tablename1,tablename2 FROM tablename1,tablename2 WHERE…

三:更新:UPDATE

1:单表更新:UPDATE FROM tablename SET field=XXX WHERE …

2:多表更新:UPDATE tablename1,tablename2 SET tablename1.field=xxx,tablename2.field=xxx where …

四:查询:SELECT

1:查询所有的记录:SELECT * FROM tablename

2:查询不重复记录:SELECT distinct name FROM tablename 查询不重复的记录,使用关键字distinct

3:条件查询:SELECT * FROM tablename WHERE (id=1)… 除了=,可以使用>、<、>=、<=、!=等比较运算符。多个条件之间可以使用or、and等逻辑运算符。

4:排序:SELECT * FROM tablename WHERE … ORDER BY field1,,field2 [DESC,ASC]默认是自增,即ASC。按多个字段排序,如果field1相同,则按照field2排序。

5:限制:SELECT * FROM tablename WHERE … LIMIT offset_start,row_count offset_start 默认的起始偏移为0,即第1条记录。

6:聚合:SELECT [field1,field2] fun_name FROM tablename [WHERE] [GROUP BY] [HAVING where_condition]

fun_name表示要做到聚合操作:sum()求和、count(*)记录总数、max()最大值、min()最小值。

HAVING 表示对结果再过滤

GROUP BY 表示要进行分类聚合的字段 比如按照name统计人口数量,则GROUP BY name

with rollup 表示对统计的结果再汇总

mysql> select content,count(10) from content group by content;

+———+———–+

| content | count(10) |

+———+———–+

| thank | 1 |

| xiexie | 2 |

+———+———–+

2 rows in set (0.00 sec)

统计内容总数大于1的内容

mysql> select content,count(10) from content group by contenthaving count(10)>1;

+———+———–+

| content | count(10) |

+———+———–+

| xiexie | 2 |

+———+———–+

1 row in set (0.00 sec)

对统计的结果再汇总

mysql> select content,count(10) from content group by contentwith rollup;

+———+———–+

| content | count(10) |

+———+———–+

| thank | 1 |

| xiexie | 2 |

| NULL | 3 |

+———+———–+

对id求和

mysql> select content,sum(id) from content GROUP BY content;

+———+———+

| content | sum(id) |

+———+———+

| thank | 35 |

| xiexie | 67 |

+———+———+

2 rows in set (0.00 sec)

7:表连接

①:内连接:仅仅选出两张表中互相匹配的记录

②:外连接:会选出其他不匹配的记录

内连接:

mysql> select name,content from user,content where content.id=user.id;

+——-+———+

| name | content |

+——-+———+

| david | xiexie |

+——-+———+

1 row in set (0.00 sec)

外连接:分为左连接、右连接

左连接:包含所有左表中的记录,以及右表中没有与他匹配的记录;

右连接:包含所有右表中的记录,以及左表中没有与他匹配的记录。

右连接:mysql> select name,content from user right join content on user.id=content.id;

+——-+———+

| name | content |

+——-+———+

| david | xiexie |

| NULL | xiexie |

| NULL | thank |

+——-+———+

3 rows in set (0.00 sec)

8:子查询

某些情况下,当查询时,需要的条件是另外一个SELECT语句的结果,这个时候,要用到子查询。

关键字:IN、NOT IN、=、!=、exists、not exists等。

mysql> select * from content where id IN (select id from user);

+—-+———+

| id | content |

+—-+———+

| 33 | xiexie |

| 34 | xiexie |

+—-+———+

2 rows in set (0.00 sec)

9:记录联合

UNION,会去除联合后的重复结果。UNION ALL 不会去除重复结果。

mysql> select id from user union all select id from content;

+—-+

| id |

+—-+

| 33 |

| 34 |

| 33 |

| 34 |

| 35 |

+—-+

5 rows in set (0.00 sec)

mysql> select id from user union select id from content;

+—-+

| id |

+—-+

| 33 |

| 34 |

| 35 |

+—-+

3 rows in set (0.00 sec)

DCL语句

对数据库用户赋予权限

grant insert,select on database.* to ‘user’@’localhost’

收回用户权限

revoke insert on database.* from ‘user’@’localhost’
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 数据库