MySQL数据库基础(中-1)

MySQL数据库基本操作

2 使用聚合函数查询

2.4 COUNT()函数(实例)COUNT()函数用来统计记录的条数;与 GOUPE BY 关键字一起使用
SELECT COUNT(*) FROM t_grade;//用来统计记录的条数
SELECT COUNT(*) AS total FROM t_grade;//换字段标志
SELECT stuName,COUNT(*) FROM t_grade GROUP BY stuName;//与GROUP BY关键字一起使用
2.5 SUN()函数(实例)SUM()函数是求和函数;与 GOUPE BY 关键字一起使用
SELECT stuName,SUM(score) FROM t_grade WHERE stuName='张三';//求和函数
SELECT stuName,SUM(score) FROM t_grade GROUP BY stuName;//与GROUP BY关键字一起使用
2.6 AVG()函数(实例)AVG()函数是求平均值的函数;与 GOUPE BY 关键字一起使用
SELECT stuName,AVG(score) FROM t_grade WHERE stuName='###';//求平均值的函数
SELECT stuName,AVG(score) FROM t_grade GROUP BY stuName;//与GROUP BY关键字一起使用
2.7 MAX()函数(实例)MAX()函数是求最大值的函数;与 GOUPE BY 关键字一起使用
SELECT stuName,course,MAX(score) FROM t_grade WHERE stuName='####';//求最大值的函数
SELECT stuName,MAX(score) FROM t_grade GROUP BY stuName;//与GROUP BY关键字一起使用
2.8 MIN()函数(实例)MIN()函数是求最小值的函数;与 GOUPE BY 关键字一起使用
SELECT stuName,course,MIN(score) FROM t_grade WHERE stuName='####';//求最小值的函数
SELECT stuName,MIN(score) FROM t_grade GROUP BY stuName;//与GROUP BY关键字一起使用

3 连接查询

3.1 内连接查询(实例)
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`;//内连接查询,内连接查询可以查询两个或者两个以上的表
3.2 外连接查询(左连接)
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`;//外连接查询,可以查出一张表的所有信息(左连接查询)
3.2 外连接查询(右连接)
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`;(右连接查询)
3.3 多条件查询(实例)
SELECT tb.`bookName`,tb.`author`,tby.`bookTypeName` FROM t_book tb,t_bookType tby WHERE tb.`bookTypeId`=tby.`id` AND tb.`price`>70;

4 子查询(实例)

4.1 带IN关键字的子查询
SELECT id FROM t_bookType;
SELECT * FROM t_book WHERE bookTypeId IN(SELECT id FROM t_bookType);//一个查询语句的条件可能落在另一个SELECT语句的查询结果中
SELECT * FROM t_book WHERE bookTypeId NOT IN(SELECT id FROM t_bookType);
4.2 带比较运算符的子查询
SELECT price FROM t_pricelevel WHERE priceLevel=1;
SELECT * FROM t_book WHERE price>=(SELECT price FROM t_pricelevel WHERE priceLevel=1);
//子查询可以使用比较运算符
4.3带Exists关键字的子查询
SELECT * FROM t_book WHERE EXISTS (SELECT * FROM t_bookType);//假如子查询查询到记录,则进行外部查询,否则,不执行外层查询
SELECT * FROM t_book WHERE NOT EXISTS (SELECT * FROM t_bookType);
4.4 带Any和All关键字的子查询
SELECT * FROM t_book WHERE price>=ANY (SELECT price FROM t_pricelevel);//ANY关键字表示满足其中任何一个条件
SELECT * FROM t_book WHERE price>=ALL (SELECT price FROM t_pricelevel);//ALL关键字表示满足其中所有的条件

5 合并查询结果UNION和UNION ALL

SELECT id FROM t_book UNION SELECT id FROM t_bookType;//UNION数据库系统会将所有的查询结果合并在一起,然后去掉相同的记录
SELECT id FROM t_book UNION ALL SELECT id FROM t_bookType;
//使用UNION ALL 不会去掉系统相同的记录,会将所有的记录全部查询出来

6 为表和字段取别名(实例)

SELECT * FROM t_book WHERE id=1;
SELECT * FROM t_book tb WHERE tb.`id`=1;
SELECT tb.`bookName` FROM t_book tb WHERE tb.`id`=1;//给表取别名
SELECT tb.`bookName` bName FROM t_book tb WHERE tb.`id`=1;
SELECT tb.`bookName` AS bName FROM t_book tb WHERE tb.`id`=1;//给字段取别名

7 插入数据(实例)

7.1 给表的所有字段插入数据
INSERT INTO t_book VALUES (NULL,'#####',20,'#####',1);//给表所有的字段插入数据
INSERT INTO t_book(id,bookName,price,author,bookTypeId) VALUES (NULL,'####',20,'####',1);
7.2给表的指定字段插入数据
INSERT INTO t_book(bookName,author) VALUES ('####','##');//给表指定的字段插入数据
7.3同时插入多条记录
INSERT INTO t_book(id,bookName,price,author,bookTypeId) VALUES (NULL,'#####',20,'##',1),(NULL,'####',20,'###,1);//同时插入多条记录
7.4 更新数据
UPDATE t_book SET bookName='Java编程思想',price=120 WHERE id=1;//更新数据
7.5 删除数据
DELETE FROM t_book WHERE id=5;
DELETE FROM t_book WHERE bookName='我';//删除数据

8. 索引的引入

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。
优点:在信息检索过程中,若使用分组及排序子句进行时,通过建立索引能有效的减少检索过程中所需的分组及排序时间,提高检索效率。
缺点:在数据库建立过程中,需花费较多的时间去建立并维护索引,特别是随着数据总量的增加,所花费的时间将不断递增。

8.1 索引分类
1)主键索引(PRIMAY KEY)

数据库表经常有一列或多列组合,其值唯一标识表中的每一行。该列称为表的主键。在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。

2)唯一索引(UNIQUE)

唯一索引是不允许其中任何两行具有相同索引值的索引。当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在employee表中职员的姓(lname)上创建了唯一索引,则任何两个员工都不能同姓。

3)常规索引(INDEX)

可以建立在任何数据类型中

4)全文索引(FULLTEXT)

主要作用就是提高查询较大字符串类型的速度;只有 MyISAM 引擎支持该索引,Mysql 默认引擎不支持;

8.2创建索引(实例)
在创建表时创建索引
CREATE TABLE t_user2(id INT,
                     userName VARCHAR(20),
                     PASSWORD VARCHAR(20),
                     UNIQUE INDEX (userName)
                     );//创建表时创建索,创建单列索引
CREATE TABLE t_user3(id INT,
                     userName VARCHAR(20),
                     PASSWORD VARCHAR(20),
                     INDEX index_userName_password (userName,PASSWORD)
                     );//创建表时创建索,创建多列索引
在已创建的表上创建索引
CREATE INDEX index_userName ON t_user4(userName);//在已经存在的表上创建单列索引
CREATE INDEX index_userName_password ON t_user4(userName,PASSWORD);//在已经存在的表上创建多列索引
用alter table 语句创建索引
ALTER TABLE t_user5 ADD UNIQUE INDEX index_userName(userName);//单列索引
ALTER TABLE t_user5 ADD INDEX index_userName_password(userName,PASSWORD);alter table语句来创建多列索引
8.3删除索引(实例)
DROP INDEX index_userName_password ON t_user5;//删除索引
发布了13 篇原创文章 · 获赞 1 · 访问量 418

猜你喜欢

转载自blog.csdn.net/qq_43775034/article/details/101152620
今日推荐