第七章 初识MySQL

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/Mythology_px/article/details/82465567

注释

  ##单行注释

/*

    多行注释

*/

案例

##创建数据库
CREATE DATABASE mydatabase;

##删除数据库
DROP DATABASE mydatabase;

##创建用户
CREATE USER 'mjsw'@'localhost'
IDENTIFIED BY 'mjsw';
COMMIT;
##授权
GRANT ALL ON mydatabase.* TO 'mjsw'@'localhost';

##删除用户
DROP USER 'mjsw'@'localhost';

##指定使用的数据库
USE mydatabase;

##创建表
CREATE TABLE stu(
	id INT PRIMARY KEY AUTO_INCREMENT,
	sname VARCHAR(20)
);
##删除表
DROP TABLE stu;

##添加字段
ALTER TABLE stu ADD(age INT);
##删除字段
ALTER TABLE stu DROP COLUMN age;

##添加数据
INSERT INTO stu VALUES(NULL,'Li',20);
INSERT INTO stu(sname ,age) VALUES('Zhang',23);
##删除数据
DELETE FROM stu WHERE id=1;
##更新数据
UPDATE stu SET sname='Wang' WHERE id=4;
##查询数据
SELECT * FROM stu;


############清空数据
TRUNCATE TABLE stu;##清空表数据,速度快,可以使计数器重置
DELETE FROM stu;##清空表数据,速度慢
DROP TABLE stu;##删除表数据以及表结构


##查询
SELECT * FROM stu;

##连接查询
##数据
##学生表
CREATE TABLE stu(
	id INT PRIMARY KEY AUTO_INCREMENT,
	sname VARCHAR(20),
	age INT,
	cid INT
);
INSERT INTO stu VALUES(NULL,'Pter',18,1);
INSERT INTO stu VALUES(NULL,'Bob',19,2);
INSERT INTO stu VALUES(NULL,'Cail',20,3);
INSERT INTO stu VALUES(NULL,'Dalo',19,2);
INSERT INTO stu VALUES(NULL,'Eoc',20,3);
INSERT INTO stu VALUES(NULL,'Fiogo',20,NULL);
INSERT INTO stu VALUES(NULL,'Micro',NULL,NULL);
##班级表
CREATE TABLE clazz(
	id INT PRIMARY KEY AUTO_INCREMENT,
	cname VARCHAR(20)
);
INSERT INTO clazz VALUES(NULL,'java');
INSERT INTO clazz VALUES(NULL,'C++');
INSERT INTO clazz VALUES(NULL,'Python');
INSERT INTO clazz VALUES(NULL,'php');

##内连接(查询满足条件的部分)
SELECT * FROM stu INNER JOIN clazz ON stu.cid=clazz.id;
##左外连接(左表全查询,右边只有满足条件的部分)
SELECT * FROM stu LEFT JOIN clazz ON stu.cid=clazz.id;
##右外连接(右表全查询,左边只有满足条件的部分)
SELECT * FROM stu RIGHT JOIN clazz ON stu.cid=clazz.id;

##条件查询(where):查询年龄为18 20的学生
SELECT * FROM stu WHERE age=18 OR age=20;
SELECT * FROM stu WHERE age=18 || age=20;
SELECT * FROM stu WHERE age IN (18,20);
##not in : 查询年龄不是18 20的学生
SELECT * FROM stu WHERE age NOT IN (18,20);

#null值查询
#查询年龄为空的学生
SELECT * FROM stu WHERE age IS NULL;
#查询年龄不为空的学生
SELECT * FROM stu WHERE age IS NOT NULL;

##区间查询(between and) : 查询年纪在18-20(包含18和20)的学生
SELECT * FROM stu WHERE age BETWEEN 18 AND 20;

##模糊查询(like) _单个字符 %任意字符
##查询名字中第二个字母是o的学生
SELECT * FROM STU WHERE sname LIKE '_o%';

##排序(order by)  降序:desc 升序:asc
##查询年龄大于18的学升降序排列
SELECT * FROM stu WHERE age>18 ORDER BY age DESC;

##分组查询(group by) 分组时候过滤 having
##查询每个班级有多少学生,不含null班级
SELECT cid ,COUNT(*) FROM stu GROUP BY cid HAVING cid IS NOT NULL;

##去除重复distinct  : 查询学生都有那些年龄段的
SELECT DISTINCT age FROM stu; 

##分页查询: limit begin , size   --从begin之后开始查,size是查询的长度
##当前页page
##每页显示的记录数size
##实现分页limit (page-1)*size,size
###
/**
假设每页显示3条记录
第2页显示的数据是什么?
*/
SELECT * FROM stu LIMIT 3,3;


##聚合函数
SELECT SUM(age) FROM stu;
SELECT MAX(age) FROM stu;
SELECT MIN(age) FROM stu;
SELECT AVG(age) FROM stu;
SELECT COUNT(*) FROM stu;


##查询Cail的班级名称
SELECT * FROM stu;
SELECT * FROM clazz;
SELECT cname FROM clazz WHERE id 
	IN
	(SELECT cid FROM stu WHERE stu.sname='Cail');

##查询Cail的班级名称,显示Cial的学号,名字,班级名称
SELECT stu.id,stu.sname,clazz.cname FROM stu 
	LEFT JOIN clazz ON stu.cid=clazz.id 
	WHERE stu.sname='Cail';
##子查询:通过表与表的关系进行子查询,但是最终表只有一个表中的数据,不能有其他表的数据
##连接查询:通过表与表之间的关系进行连接查询,使之生成一张新表,兼备多个表的数据



######视图:将查询到的数据封装成视图,一边循环利用
##将python班的学生创建一个视图
SELECT * FROM clazz;
CREATE VIEW python AS SELECT * FROM stu WHERE cid=3;
SELECT * FROM python;

##尽量不要修改视图中的数据,原表的数据也会相应改变,视图一般用来查询

猜你喜欢

转载自blog.csdn.net/Mythology_px/article/details/82465567