MySQL(查询语句,关键字)

手动创两张表,对两张表进行查询

-- 检测数据库
DROP DATABASE IF EXISTS AddressList;
-- 创建数据库
CREATE DATABASE AddressList;
-- 使用数据库
USE AddressList;
-- 检测表
DROP TABLE IF EXISTS LinkmanType;
-- 创建表
CREATE TABLE LinkmanType(
TypeId INT PRIMARY KEY AUTO_INCREMENT,
TypeName VARCHAR(20) NOT NULL UNIQUE
)ENGINE=INNODB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=101;
-- 检测表
DROP TABLE IF EXISTS LinkmanInfo;
-- 创建表
CREATE TABLE LinkmanInfo(
ID INT PRIMARY KEY AUTO_INCREMENT,
TypeId INT NOT NULL,
Age INT NOT NULL,
L_Name VARCHAR(20) NOT NULL,
Adress VARCHAR(100),
Phone VARCHAR(50),
Email VARCHAR(20),
CONSTRAINT typ_ky FOREIGN KEY(TypeId) REFERENCES LinkmanType(TypeId)
)ENGINE=INNODB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1;
-- 初始化数据
INSERT INTO LinkmanType VALUES (DEFAULT,'陌生人');
INSERT INTO LinkmanType VALUES(DEFAULT,'好朋友');
INSERT INTO LinkmanType VALUES(DEFAULT,'老师');
INSERT INTO LinkmanType VALUES(DEFAULT,'家人');
INSERT INTO LinkmanType VALUES(DEFAULT,'同学');
-- 初始化数据
INSERT INTO LinkmanInfo VALUES(DEFAULT,101,15,'张三','湖北','11111111111','qq');
INSERT INTO LinkmanInfo VALUES(DEFAULT,102,16,'李四','湖南','22222222222','xinlang');
INSERT INTO LinkmanInfo VALUES(DEFAULT,103,20,'王五','长沙','33333333333','weibo');
INSERT INTO LinkmanInfo VALUES(DEFAULT,103,15,'赵六','北京','44444444444','qq');
INSERT INTO LinkmanInfo VALUES(DEFAULT,101,18,'田七','天津','55555555555','weibo');
-- 查讯
SELECT * FROM LinkmanType;
SELECT * FROM LinkmanInfo;

以上面的例子举例:

1. 设置字段的别名(as)(as可以省略)

-- 1.设置字段名
SELECT Adress AS 地址 FROM LinkmanInfo;

2. 字段的连接(concat(字段1,字段2))

-- 2. 字段连接
SELECT  CONCAT(TypeId,Adress) AS id和地起 FROM LinkmanInfo;

注:mysql 只能用concat 进行连接,而sqlservice 和oracle 还可以用+连接 

3. ALL关键字(用在字段前面,不能单独写)

-- 3.all关键字
SELECT ALL TypeId FROM LinkmanInfo;
-- 查讯所有
SELECT * FROM LinkmanType;

注:不加ALL一般是省略的,加了all必须后面根字段名,显示所有也可以用*表示;

4. limit 关键字

-- 4. limit关键字
SELECT * FROM LinkmanInfo LIMIT 0,4;

注:表示查询所有中,从0个开始显示前面4个,mysql中不能用top关键字,sqlservice中一般用top 4,来取前4个

5. distinct 过滤重复记录(用在字段前面)

-- 5.distinct关键字
SELECT DISTINCT TypeId FROM LinkmanInfo;

注:表示,有多个重复类别id时,用来查询有哪些类别

6. where关键字(也就是条件查询)

-- 6.where 关键字
SELECT * FROM LinkmanInfo WHERE TypeId>102;

7. between...and... (从两者之间)

-- 7. between  and 
SELECT * FROM LinkmanInfo WHERE TypeId BETWEEN 101 AND 102;

注: 表示查询LinkmanInfo表中TypeId是101和102之间的所有的信息

8. in/not in(in 在....里面,也就是包含的意思;not in 没有在...里面,不包含的意思)

-- 8.in /not in
SELECT * FROM LinkmanInfo WHERE TypeId IN(101,103);
SELECT * FROM LinkmanInfo WHERE TypeId NOT IN(101,103);

9. 逻辑运算(and  or  not

-- 9.逻辑运算符
SELECT * FROM LinkmanInfo WHERE TypeId=101 AND TypeId=102;
SELECT * FROM LinkmanInfo WHERE TypeId=101 OR TypeId=102;

10. Like 关键字(模糊查询)(用得比较多)

-- 10. 关键字Like
SELECT * FROM LinkmanInfo WHERE Adress LIKE '湖%';
SELECT * FROM LinkmanInfo WHERE Adress LIKE '_京';

注: 一个"_"代表一个字,"%"表示0个或多个字,一般的话查询里面包含这个字的话,前后都要加%;

11. order by 排序(desc 降序, asc 升序)

-- 11. 排序 order by desc/asc
SELECT * FROM LinkmanInfo ORDER  BY TypeId DESC;

注: 对于字符串的数字也是可以排序的,须确保位数一样,从左到右一位一位进行相比的;

12. 查询结果计算(sum,avg,max,min)

-- 12.查询结果计算
SELECT AVG(age) AS 平均年龄,MAX(age) AS 最大年龄,MIN(age) AS 最小年龄,SUM(age) AS 年龄之和  FROM LinkmanInfo;

 13. 统计行数(count(*))(用得比较多)

-- 13.统计个数
SELECT COUNT(*) AS 总人数 FROM LinkmanInfo; 

 14. 连接查询之内部连接查询(inner join...on...

-- 14.内部连接查询
-- 第一种
SELECT * FROM LinkmanType INNER JOIN LinkmanInfo ON LinkmanType.TypeId=LinkmanInfo.TypeId;   
-- 第二种
SELECT * FROM LinkmanType t INNER JOIN LinkmanInfo  i ON t.TypeId=i.TypeId;    
-- 第三种                       
SELECT *FROM LinkmanType,LinkmanInfo WHERE LinkmanType.TypeId=LinkmanInfo.TypeId;

15. 连接查询之外部连接查询(left join...on...  /    right join...on...

-- 15.外部连接查询
-- 以左边为主表
SELECT * FROM LinkmanType t LEFT JOIN LinkmanInfo i ON t.TypeId=i.TypeId;
-- 以右边为主表
SELECT * FROM LinkmanType t RIGHT JOIN LinkmanInfo i ON t.TypeId=i.TypeId;

16. 分组并统计(group by

-- 16.分组(group by)
SELECT typeid ,COUNT(*) 该总类人数 FROM LinkmanInfo  
GROUP BY typeid;

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值