Mysql学习笔记二

一、数据库基本操作

1、创建表

create table (属性名 数据类型 [完整性约束],属性名 数据类型 [完整性约束],;

例子:

create table t_booktype(

id int primary key auto_increment,

bookTypeName varchar(20),

bookTypeDesc varchar(200)

);


create table t_book(

id int primary key auto_increment,

bookName varchar(20),

author decimal(6,2),

bookTypeId int,

constraint `fk` foreign key (`bookTypeId`) references `t_booktype`(`id`)   //注意fk那里的符号是esc键下面的那个键按出来的

);


2、查看表结构

desc t_bookType;


show create t_bookType; 


3、修改表

修改表名 alter table 旧表名 rename 新表名;

修改字段 alter table 表名 change 旧属性名 新属性名 新数据类型

增加字段 alter table 表名 add 属性名1 数据类型 [完整性约束条件][first | alter 属性名2]

删除字段 alter table 表名 drop 属性名


4、删除表

drop table 表名;


二、单表查询

第一种:select age,gradeName,id,sex,stuName from t_student;可以改变查找结果的显示顺序。

第二种:select * from t_student;


where指定条件查找:

select * from t_student where id=1;


范围查找:

SELECT * FROM t_student WHERE age IN (21,23);

SELECT * FROM t_student WHERE age NOT IN (21,23);

SELECT * FROM t_student WHERE age BETWEEN 21 AND 24;

SELECT * FROM t_student WHERE age NOT BETWEEN 21 AND 24;


Like的模糊查询:

“%”代表任意字符

“_”代表单个字符

SELECT * FROM t_student WHERE stuName LIKE '张三';

SELECT * FROM t_student WHERE stuName LIKE '张三%';

SELECT * FROM t_student WHERE stuName LIKE '张三__';

SELECT * FROM t_student WHERE stuName LIKE '%张三%';


空值查询:

SELECT * FROM t_student WHERE sex IS NULL;

SELECT * FROM t_student WHERE sex IS NOT NULL;


带and、or的多条件查询:

SELECT * FROM t_student WHERE gradeName='一年级' AND age=23

SELECT * FROM t_student WHERE gradeName='一年级' OR age=23


去重复查询(不显示重复的):

SELECT DISTINCT gradeName FROM t_student;


排序查询:

SELECT * FROM t_student ORDER BY age ASC;递增

SELECT * FROM t_student ORDER BY age DESC;递减


分组查询(group by):

常用的:

与group_concat()函数数一起使用

SELECT gradeName,GROUP_CONCAT(stuName) FROM t_student GROUP BY gradeName;


与聚合函数一起使用 

SELECT gradeName,COUNT(stuName) FROM t_student GROUP BY gradeName;


对查询结果进行筛选

SELECT gradeName,COUNT(stuName) FROM t_student GROUP BY gradeName HAVING COUNT(stuName)>3;


最后一行加总和计算

SELECT gradeName,COUNT(stuName) FROM t_student GROUP BY gradeName WITH ROLLUP;

SELECT gradeName,GROUP_CONCAT(stuName) FROM t_student GROUP BY gradeName WITH ROLLUP;


limit分页查询:

语法:select 字段1,字段2 from 表名 limit 初始位置,记录数;

SELECT * FROM t_student LIMIT 0,5;

SELECT * FROM t_student LIMIT 5,5;

SELECT * FROM t_student LIMIT 10,5;


三、聚合函数查询

 1、COUNT();

2、SUM();

3、Max();

4、MIN();


SELECT COUNT(*) FROM t_grade;


SELECT COUNT(*) AS total FROM t_grade;


SELECT stuName,COUNT(*) FROM t_grade GROUP BY stuName;


SELECT stuName,SUM(score) FROM t_grade WHERE stuName="张三";


SELECT stuName,SUM(score) FROM t_grade GROUP BY stuName;


SELECT stuName,AVG(score) FROM t_grade WHERE stuName="张三";


SELECT stuName,AVG(score) FROM t_grade GROUP BY stuName;


SELECT stuName,course,MAX(score) FROM t_grade WHERE stuName="张三";


SELECT stuName,MAX(score) FROM t_grade GROUP BY stuName;


SELECT stuName,course,MIN(score) FROM t_grade WHERE stuName="张三";


SELECT stuName,MIN(score) FROM t_grade GROUP BY stuName;


用这张图来进行辅助理解group by跟聚合函数

group by对选择的结果进行初步过滤,也就是第一列的stuName

avg,sum等函数对过滤之后的结果再进行过滤,也就是对第二列进行处理


四、连接查询

常用的是内连接

SELECT * FROM t_book,t_bookType;


SELECT * FROM t_book,t_bookType WHERE t_book.bookTypeId=t_bookType.id;


SELECT bookName,author,bookTypeName FROM t_book,t_bookType WHERE t_book.bookTypeId=t_bookType.id;


SELECT tb.bookName,tb.author,tby.bookTypeName FROM t_book tb,t_bookType tby WHERE tb.bookTypeId=tby.id;(别名)


SELECT * FROM t_book LEFT JOIN t_bookType ON t_book.bookTypeId=t_bookType.id;


SELECT tb.bookName,tb.author,tby.bookTypeName FROM t_book tb LEFT JOIN t_bookType tby ON tb.bookTypeId=tby.id;


SELECT * FROM t_book RIGHT JOIN t_bookType ON t_book.bookTypeId=t_bookType.id;


SELECT tb.bookName,tb.author,tby.bookTypeName FROM t_book tb RIGHT JOIN t_bookType tby ON tb.bookTypeId=tby.id;


SELECT tb.bookName,tb.author,tby.bookTypeName FROM t_book tb,t_bookType tby WHERE tb.bookTypeId=tby.id AND tb.price>70;


五、子查询

in not in all any exists(逻辑判断)

in是范围查询

SELECT * FROM t_book WHERE booktypeId IN (SELECT id FROM t_booktype);


SELECT * FROM t_book WHERE booktypeId NOT IN (SELECT id FROM t_booktype);


SELECT * FROM t_book WHERE price>=(SELECT price FROM t_pricelevel WHERE priceLevel=1);


SELECT * FROM t_book WHERE EXISTS (SELECT * FROM t_booktype);


SELECT * FROM t_book WHERE NOT EXISTS (SELECT * FROM t_booktype);


SELECT * FROM t_book WHERE price>= ANY (SELECT price FROM t_pricelevel);


SELECT * FROM t_book WHERE price>= ALL (SELECT price FROM t_pricelevel);


六、合并查询

UNION合并结果,去除相同的结果

UNION ALL不会去除相同的结果

select id from t_book union select id from t_booktype;

select id from t_book union all select id from t_booktype;


七、为表和字段取别名

表:表 别名

字段:字段 as 别名(不要as也可以)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值