MySQL基本操作 | Word count: 1.9k | Reading time: 7min
MySQL基本操作 一、MySQL函数
官方文档: https://dev.mysql.com/doc/refman/5.7/en/sql-function-reference.html
1、常用函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 SELECT ABS (-8 ) SELECT CEILING (9.4 ) SELECT FLOOR (9.4 ) SELECT RAND() SELECT SIGN(10 ) SELECT AVG () SELECT CHAR_LENGTH ('我的长度是六' )SELECT CONCAT('你' ,'好' ) SELECT LOWER ('ABC' ) SELECT UPPER ('abc' ) SELECT CURRENT_DATE () SELECT NOW() SELECT LOCALTIME () SELECT SYSDATE()
2、聚合函数 1 2 3 4 5 6 7 8 9 10 SELECT COUNT ([列名]) FROM < 表名> SELECT COUNT (* ) FROM < 表名> SELECT COUNT (1 ) FROM < 表名> SUM () AVG () MAX () MIN ()
二、DML操纵数据语言
Data Manipulation Language, DML数据操纵语言 ,用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句
1、添加 1 2 3 4 INSERT INTO `grade` (`gradename`) VALUES ('大四' )
2、修改 1 2 3 4 5 6 7 UPDATE `student` SET `name`= 'nie' WHERE id = 1 ;UPDATE `student` SET `name`= 'nie' UPDATE `student` SET `name`= 'nie' ,email= '111@163.com' WHERE id = 1 ;
操作符
含义
=
等于
<>或!=
不等于
>
大于
<
小于
<=
大于等于
>=
小于等于
between…and..
闭合区间
and
&&
or
||
3、删除 1 2 3 4 5 6 7 DELETE FROM `student`DELETE FROM `student` WHERE id = 1 ;TRUNCATE `student`
清空表的两种操作的区别:
相同点:都能删除数据且不会删除表结构
不同点:
TRUNCATE 重新设置自增列,计数器会归零
TRUNCATE 不会影响事务
三、DQL查询数据语言 1、DQL
Data QueryLanguage 数据查询语言
select基本语法
1 2 3 4 5 6 7 8 SELECT [ALL | DISTINCT ] < 目标列表达式> [AS 列名][,< 目标列表达式> [AS 列名] ...] FROM < 表名> [,< 表名> …] [left | right | inner join table_name2] [WHERE...] [GROUP BY...] [HAVING...] [ORDER BY...] [LIMIT {[offset ,]row_count | row_countOFFSET offset }];
2、指定查询字段 1 2 3 4 5 6 7 8 SELECT * FROM studentSELECT `StudentNo`,`StudentName` FROM studentSELECT `StudentNo` AS 学号,`StudentName` AS 姓名 FROM student SELECT CONCAT('姓名:' ,StudentName)AS 新名字 FROM student
3、去重distinct
1 2 3 SELECT DISTINCT `StudentNo` FROM result
1 2 SELECT `StudentResult`+ 1 AS '提分后的成绩' FROM result
4、where条件子句
检索数据中符合条件的值
运算符
语法
描述
and &&
a and b a&&b
逻辑与
or ||
a or b a||b
逻辑或
not !
not a ! a
逻辑非
尽量使用英文字母
1 2 3 4 5 6 SELECT studentNo,`StudentResult` FROM result WHERE StudentResult>= 90 AND StudentResult<= 100 SELECT studentNo,`StudentResult` FROM result WHERE StudentResult>= 90 && StudentResult<= 100
5、模糊查询
运算符
语法
描述
IS NULL
a is null
如果操作符为null,结果为真
IS NOT NULL
a is not null
如果操作符不为null,结果为真
BETWEEN AND
a between b and c
若a在b和c之间,结果为真
LIKE
a like b
SQL匹配,如果a匹配b,结果为真
IN
a in(a1,a2,a3…)
假设a在a1,或者a2….其中的某一个值中,结果为真
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 SELECT studentNo,`StudentName` FROM `student`WHERE StudentName LIKE '王%' SELECT studentNo,`StudentName` FROM `student`WHERE StudentName LIKE '王_' SELECT studentNo,`StudentName` FROM `student`WHERE StudentName LIKE '%王%' SELECT studentNo,`StudentName` FROM `student`WHERE StudentNo IN (100 ,101 ,102 );SELECT studentNo,`StudentName` FROM `student`WHERE `Address` IN ('北京' );
6、联表查询
1 2 3 4 5 6 7 8 SELECT * FROM studentSELECT * FROM result SELECT s.studentNo,studentName,subjectNo,studentResult FROM student AS sINNER JOIN result AS rON s.studentNo = r.studentNo
操作
描述
Inner join
如果表中至少有一个匹配,就返回匹配的值
left join
返回左表中的所有值,即使右表中没有匹配
right join
返回右表中的所有值,即使左表中没有匹配
7、自连接
自己的表和自己的表连,核心:一张表拆为两张一样的表
例如下表category
categoryid
pid
categoryName
7
5
ps技术
6
3
web开发
2
1
信息技术
3
2
办公技术
4
3
数据库
5
1
美术设计
3
1
软件开发
-- 查询父子信息
SELECT a.`categoryName` AS '父栏目', b.`categoryName` AS '子栏目'
FROM `category` AS a, `category` AS b
WHERE a.`categoryid` = b.`pid`
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 - 结果如下 | 父栏目 | 子栏目 | | -------- | -------- | | 软件开发 | 数据库 | | 软件开发 | web开发 | | 美术设计 | ps技术 | | 信息技术 | 办公技术 | ### 8、分页和排序 - 排序 ```sql -- 排序:升序 ASC , 降序 DESC -- 把学生成绩按照降序排 ORDER BY StudentResult DESC -- 把学生成绩按照升序排 ORDER BY StudentResult ASC
分页
9、嵌套查询
Where(计算的值)
在where语句里面嵌套一个子查询语句
1 2 3 4 5 6 SELECT * FROM StudentWHERE Sdept IN (SELECT Sdept FROM Student Where Sname = '张三' );
1 2 3 4 5 6 SELECT Sno, Grade FROM SCWHERECno= '语文' AND Grade> ( SELECT AVG (Grade) FROM SC Where Cno = '语文' ) ;