mysql查询语句的用法_mysql查询语句学习

1.关于distinct的使用

查询名字不重复的语句:

select distinct name from table

但是我们要把id字段信息也取到

select distinct name,id from table

这样查询的结果是把id和name值同时重复的去掉,和只查询名字不重复的意愿违背,怎么解决呢?解决方法如下:

select *, count(distinct name) from table group by name

2.关于join的使用

join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

JOIN: 如果表中有至少一个匹配,则返回行

LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

FULL JOIN: 只要其中一个表中存在匹配,就返回行

SQL INNER JOIN 关键字

在表中存在至少一个匹配时,INNER JOIN 关键字返回行。

INNER JOIN 关键字语法

SELECT column_name(s)

FROM table_name1

INNER JOIN table_name2

ON table_name1.column_name=table_name2.column_name

注释:INNER JOIN 与 JOIN 是相同的。

SQL LEFT JOIN 关键字

LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

LEFT JOIN 关键字语法

SELECT column_name(s)

FROM table_name1

LEFT JOIN table_name2

ON table_name1.column_name=table_name2.column_name

SQL RIGHT JOIN 关键字

RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

RIGHT JOIN 关键字语法

SELECT column_name(s)

FROM table_name1

RIGHT JOIN table_name2

ON table_name1.column_name=table_name2.column_name

注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。

SQL FULL JOIN 关键字

只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。

FULL JOIN 关键字语法

SELECT column_name(s)

FROM table_name1

FULL JOIN table_name2

ON table_name1.column_name=table_name2.column_name

注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。

3.mysqlDate函数

4.mysql IFNULL()和COALESCE()函数

把值为NUll的设置为:0

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))

FROM Products

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))

FROM Products

5.mysql GROUP_CONCAT()函数

group_concat()函数可以用来拼接字符串

group_concat(str)默认以逗号拼接

group_concat(str SEPARATOR'_')下划线拼接

SELECT GROUP_CONCAT(IFNULL(city,'城市未定义') SEPARATOR'_') as citys FROM persons

6.CONCAT()和CONCAT_WS()函数

concat()函数 直接拼接 有一个是NULL结果就为NULL

concat_ws() 以特定符合隔开 ,而且第一是特定符号,有NULL值不影响拼接结果

SELECT CONCAT('My', 'QL',NULL);

SELECT CONCAT_WS(',','乐自游',NULL,'杭州旅游')

7.having的使用

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

SELECT city, sum(age) FROM persons WHERE city='杭州' or city='苏州' GROUP BY city HAVING SUM(age)<40

8.mid的使用

MID 函数用于从文本字段中提取字符。

我们拥有下面这个 "Persons" 表:

Id

LastName

FirstName

Address

City

1

Adams

John

Oxford Street

London

2

Bush

George

Fifth Avenue

New York

3

Carter

Thomas

Changan Street

Beijing

现在,我们希望从 "City" 列中提取前 3 个字符。

我们使用如下 SQL 语句:

SELECT MID(City,1,3) as SmallCity FROM Persons

结果集类似这样:

SmallCity

Lon

New

Bei

9.DATE_FORMAT()函数的使用

DATE_FORMA T(date, format) 根据格式串format 格式化日期或日期和时间值date,返回结果串。

可用DATE_FORMAT( ) 来格式化DATE 或DATETIME 值,以便得到所希望的格式。根据format字符串格式化date值:

%S, %s 两位数字形式的秒( 00,01, . . ., 59)

%i 两位数字形式的分( 00,01, . . ., 59)

%H 两位数字形式的小时,24 小时(00,01, . . ., 23)

%h, %I 两位数字形式的小时,12 小时(01,02, . . ., 12)

%k 数字形式的小时,24 小时(0,1, . . ., 23)

%l 数字形式的小时,12 小时(1, 2, . . ., 12)

%T 24 小时的时间形式(h h : m m : s s)

%r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)

%p AM 或P M

%W 一周中每一天的名称( S u n d a y, Monday, . . ., Saturday)

%a 一周中每一天名称的缩写( Sun, Mon, . . ., Sat)

%d 两位数字表示月中的天数( 00, 01, . . ., 31)

%e 数字形式表示月中的天数( 1, 2, . . ., 31)

%D 英文后缀表示月中的天数( 1st, 2nd, 3rd, . . .)

%w 以数字形式表示周中的天数( 0 = S u n d a y, 1=Monday, . . ., 6=Saturday)

%j 以三位数字表示年中的天数( 001, 002, . . ., 366)

% U 周(0, 1, 52),其中Sunday 为周中的第一天

%u 周(0, 1, 52),其中Monday 为周中的第一天

%M 月名(J a n u a r y, February, . . ., December)

%b 缩写的月名( J a n u a r y, February, . . ., December)

%m 两位数字表示的月份( 01, 02, . . ., 12)

%c 数字表示的月份( 1, 2, . . ., 12)

%Y 四位数字表示的年份

%y 两位数字表示的年份

%% 直接值“%”

如:

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %r') as PerDate FROM persons

结果如下:

PerDate

2012-04-13 11:44:08 AM

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2012-04-05 11:13

浏览 1189

分类:数据库

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值