原创

sql语句下的那些坑(mysql与mybatis环境)

一.mysql中的关键字

       首先要注意在表格命名的时候,不要命名mysql中的关键字,本人也是当时不知道哪些是关键字,导致在后续操作sql语句的时候一直报错,没有找到原因,比如我使用的dec,year_month这些都是关键字,具体的请查看这个表格  Mysql关键字

 二.mysql中的别名

2.1 mysql表别名

SQL 表别名
    在 SQL 语句中,可以为表名称及字段(列)名称指定别名(Alias),别名是 SQL 标准语法,几乎所有的数据库系统都支持。通过关键字 AS 来指定

表别名语法:

SELECT column AS column_alias FROM table

    上述 SQL 执行后的效果,给人感觉是对 table_alias 表进行查询,但实际上对单表做简单的别名查询通常是无意义的。一般是对一个表要当作多个表来操作,或者是对多个表进行操作时,才设置表别名。

下面是一个简单的多表操作的例子:

文章表article

用户表 user

当查询一篇文章的时候,一般会同时将对应的文章作者查询出来,通常的 SQL 语句为:

SELECT article.title,article.content,user.username FROM article, user WHERE article.aid=1 AND article.uid=user.uid

设置表别名后:

SELECT a.title,a.content,u.username FROM article AS a, user AS u where a.aid=1 and a.uid=u.uid

上述两条 SQL 语句查询结果是一样的:

可以看出,使用表别名查询,可以使 SQL 变得简洁而更易书写和阅读,尤其在 SQL 比较复杂的情况下。除了使用别名来简化 SQL 外,有些时候例如一个表做自身关联时,必须要使用别名来当作两个表进行关联操作

2.2 mysql字段别名

SQL 字段别名
同本文前文讲述的表别名一样,SQL(MySQL) 也支持对表的字段(列)设置别名。
字段别名语法:

SELECT column AS column_alias FROM table

字段别名使用例子:
字段别名一个明显的效果是可以自定义查询数据返回的字段名。
比如user表(userid,username,password.status,email)

SELECT username AS name,email FROM user

返回查询结果如下:

当然如此简单的定义字段的别名是没有太大实际意义的,字段别名更多的意义是解决字段名的重复,如一个表字段被查询两次或更多次时:

SELECT username AS name,username,email FROM user

或者两个及更多表进行查询,有相同的返回字段时:

comments表(id,title,uid)

user(id,username)

上面两个表都定义了 id字段且都需要返回该字段数据时,就需要定义字段别名(至少定义一个):

select c.*,u.id as uid,u.username from user u,comments c where c.userid=u.id

有些时候我们在sql中执行是没问题的,列冲突也不会有问题,但是在mybatis中就不同了,必须要定义不同的列名,不然会出错,错误信息是不明确的列

可以看到在关联中将tag表的id映射成了tid,这样查询的时候记得这样查

select a.*,t.id as tid,t.name from article a,tag t where a.tagid=t.id

以上就是一些小的细节需要注意的,以免犯错

正文到此结束
Loading...