mysql小记

一、琐记
1.as 作为从数据库中获取数据对应的字段重新命名;、
2.as 后边不能跟sql语法中的函数名和关键字等,如果非要用请在关键字加上单引号。

二、多表联合查询
1.连接
1)完全连接-没有where语句和on语句。(笛卡尔积、交叉连接(无on和where的交叉连接又叫笛卡尔积)),关键字:CROSS JOIN。产生的结果集大小为N*M大小。

    select * from a cross join b;
    select * from a join b;
    select * from a,b;

实质含义:其返回的结果是两个表的乘积。交叉连接返回左表中的所有行,左表中的每一行与右表中的所有行组合

2)内连接(inner join),又叫等值连接。
inner join(等值连接): 只返回两个表中联结字段相等(所以又叫等值连接)的行。
inner join不以任何数据为基础。

3)左连接(left join)
返回包括左表中的所有记录和右表中联结字段相等的记录。
left join以左表的数据为基础。

4)右连接(right join)
返回包括右表中的所有记录和左表中联结字段相等的记录。
right join以右表的数据为基础。

三、例子
例子:


a表 id name b表 id job parent_id
1 张3 1 23 1
2 李四 2 34 2
3 王武 3 34 4
a.id同parent_id 存在关系


1) 内连接
select a.,b. from a inner join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2

2)左连接
select a.,b. from a left join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
3 王武 null

3) 右连接
select a.,b. from a right join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
null 3 34 4

4) 完全连接
select a.,b. from a full join b on a.id=b.parent_id

结果是
1 张3 1 23 1
2 李四 2 34 2
null    3 34 4
3 王武 null

四:union
1)定义:UNION 操作符用于合并两个或多个 SELECT 语句的结果集,即结果集的合并(并集)。
2)注意:

a)UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
b)默认地,UNION 操作符选取不同的值,即UNION是去了重的。如果允许重复的值,请使用 UNION ALL。
c)UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名
d)UNION 指令的目的是将两个 SQL 语句的结果合并(--结果合并--)起来。从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料。union只是将两个结果联结起来一起显示,并不是联结两个表………… 

五、distinct
1)SELECT DISTINCT 语句
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。词 DISTINCT 用于返回唯一不同的值。

六、SQL数据类型
1.字符串数据类型:(都必须在单引号内。)
1)定长字符串和不定长字符串
示例:定长:char,不定长:vachar或者text;
2.数值数据类型:有BIT,TINYINT(1个字节,0-255),SAMLLINT(2个字节,)INT(4个字节),FLOAT,DECIMAL,
3.日期和时间数据类型:
1) DATE 日期值;
2)DATETIME(TIMESTAMP) 日期时间值
3)SAMLLDATETIME
4) TIME
4.二进制数据类型

例子:
– select CONCAT(LastName,FirstName) as Name,City,Address from persons where LastName = ‘xiao’ and FirstName = ‘ming’;
– SELECT DISTINCT LastName,FirstName from persons;
– SELECT * from persons ORDER By LastName,FirstName,City ASC;

– SELECT * FROM Persons WHERE City=’Beijing’
– update persons set Address = ‘Xuanwumen Bill’ where Address = ‘Xuanwumen Gates’

– SELECT * FROM Persons WHERE LastName = ‘xiao’ LIMIT 5
– select * from persons where City like ‘bei%’

– SELECT * FROM Persons WHERE City in (‘xian’,’beijing’);
– SELECT * FROM Persons WHERE City BETWEEN ‘bejing’ and ‘shanghai’

– SELECT * FROM Persons where FirstName = ‘ming’ UNION SELECT * FROM Persons where FirstName = ‘hong’

– INSERT INTO Persons (LastName, City) VALUES (‘ds’, ‘ds’)
SELECT LastName ,IFNULL(Address,City) as locato FROM Persons

—ALTER TABLE student MODIFY COLUMN SBIRTHDAY CHAR(40);
—-改变数据表的列名数据类型

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值