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

几个常见的MySQL语法

2016-07-16 21:20 369 查看


为了方便对自己知识的一个梳理,也方便一些入门MySQL 的同学学习,写了这篇博文。


Select语句的一般语法

1.SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式> ]...

2.FROM <表名或视图名> [,<表名或视图名> ]...

3.[ WHERE <行条件表达式> ]

4.[ GROUP BY <列名1> ,[列名2][,...][HAVING组条件表达式] ]

5.[ ORDER BY <列名1> ,[ASC|DESC][,...] ];

上面5个句子书写时按顺序,尽量一个句子一行,但在机器内部执行时的顺序是2-3-4-1-5,

即先确定从哪个数据源查找,

然后确定过滤条件,

若有分组则对过滤后的记录进行分组,若分组有限制条件则对分组进一布限制,

然后将符合条件的列查询出来,

最后对结果进行排序。

select name as '名字',password as '密码' form user;select * from message where id between 2 and 6;select * from message where title like '%留言_';  //%匹配任意个字符,_匹配一个字符select * from message where uid in (2,3,4); //删除2、3、4共3条数据


连接查询

[<表名1>.][<列名1>] <比较运算符> [<表名2>.][<列名2>]

[<表名1>.][<列名1>] BETWEEN [<表名2>.][<列名2>] AND [<表名2>.][<列名3>]

select * from user,msg where user.id=msg.uid;select m.id,m.title '标题',m.ip,u.username '名字' from message as m,user as u where m.uid=u.id;


子查询

一个SELECT-FROM-WHERE语句成为一个查询块。

将一个查询块嵌套到另外一个查询块的WHERE子句或HAVING短句条件中的查询成为子查询或嵌套查询,它允许我们根据另一个查询的结果检索数据。

子查询的方法是由里向外处理,即每个子查询在其上一级查询之前查询,子查询的结果用于建立其副查询的查询条件。

select *from messagewhere id in (

    select id

        from users

        where username='admin'

    );


集合查询

集合的并操作:使用UNION运算符经多个SELECT查询结果合并起来,形成一个完整的查询结果,系统合并时会自动去掉重复的元组。

注意:前后SELECT语句查询的列数要相同。


数据更新

1. 插入数据

1. 插入单个元组:

INSERT INTO <表名> [(<属性列1>[,<属性列2>...])]

VALUES (<常量1>[,<常量2>]...);

2. 通过子查询向表中插入多条数据

INSERT INTO <表名> [(<属性列1>[,<属性列2>...])]

SELECT [(<属性列1>[,<属性列2>...])]

FROM <表名>

[WHERE 子句]

[GROUP BY 子句]

[ORDER BY 子句];

3. 通过SELECT INTO语句创建新表并插入多条数据

SELECT <列名1>,<列名2>,...<表达式1> as <别名1>,...INTO <表名>

FROM <表名1>,<表名2>,...

[WHERE 条件表达式]

[GROUP BY 子句]

[ORDER BY 子句];

2. 修改数据

UPDATE <表名>

SET <列名1> = <表达式1> [,<列名2> = <表达式2>]...

[WHERE <条件>];

3. 删除数据

DELETE

FROM <表名>

[WHERE <条件>]


SQL的数据控制功能

授权语句

GRENT <权限1>,[,<权限2>]...  

[ON <对象名>]  

TO <用户1>[,<用户2>],  

[WITH GRANT OPTION];

创建用户blog,设密码为666666,并将数据库db_blog的所有权限赋给他

grant all privileges on db_blog.* to blog@localhost identified by '666666';


order by和limit

select * from message order by uid desc;select * from message order by uid desc limit 5; //默认从0开始,查询5条数据

select * from message order by uid desc limit 2,4;  //从第2条开始查询4条数据


统计函数

count()

sum()

avg()

max()

min()

 

 

原文来自:简书/reber
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: