1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Mysql之--------------------多表查询(内连接 左外连接 右外连接)常见的数据库函数

Mysql之--------------------多表查询(内连接 左外连接 右外连接)常见的数据库函数

时间:2020-07-18 03:34:58

相关推荐

Mysql之--------------------多表查询(内连接 左外连接 右外连接)常见的数据库函数

一、多表查询

什么是多表查询呢?

比如说,一个老师肯定会有不止一个学生,一个学生也会有不止一个老师,这样就存在了一种多对多的关系。

多对多关系表的创建

CREATE DATABASE moreandmore;USE moreandmore;//先创建三张表 分别是 老师表 学生表 学生老师关系表CREATE TABLE teach(tid INT PRIMARY KEY ,NAME VARCHAR(50));CREATE TABLE stu(sid INT PRIMARY KEY,NAME VARCHAR(50));CREATE TABLE tea_stu_rel(tid INT,sid INT);//给学生老师关系表中的tid 和 sid 添加外键ALTER TABLE tea_stu_rel ADD CONSTRAINT FOREIGN KEY(tid) REFERENCES teach(tid);ALTER TABLE tea_stu_rel ADD CONSTRAINT FOREIGN KEY(sid) REFERENCES stu(sid);

内连接

select r.SubjectNo,StudentName,SubjectName,StudentResultfrom student as sinner join result as ron r.StudentNo = r.StudentNoinner join subject as suon su.SubjectNo = r.SubjectNowhere SubjectName = '高等数学-1' and StudentResult < 80order by StudentResult desc ;/*降序*/

左连接

//left join 左连接:匹配左边的表,哪怕右边没有对应结果,返回左边表的所有列select s.StudentNo,StudentName,SubjectNo,StudentResultfrom student as sleft join result as ron s.StudentNo = r.StudentNo;

右连接

//right join 右连接:匹配右边的表,哪怕左边没有对应结果,返回右边表的所有列select s.StudentNo,StudentName,SubjectNo,StudentResultfrom student as sright join result as ron s.StudentNo = r.StudentNo;

二、常用的数据库函数

函数分类:字符串函数,数值函数,日期和时间函数,流程函数,其他函数

字符串函数

concat(s1,s2,…,sn) 拼接字符串

SELECT CONCAT('aaa','bbb');

所有字符串和null拼接,结果都为null

SELECT CONCAT('aaa','bbb',NULL);

SELECT INSERT('mysql123',6,3,'hello');//mysqlhelloSELECT LOWER('ASd');//asdSELECT UPPER('asdA');//ASDASELECT LEFT('asdf',2);//asSELECT RIGHT('gfds',2);//ds//用字符串he向左填充,直到字符串的长度为10个SELECT LPAD('hello',10,'he');//hehehhello//用字符串he向右填充,直到字符串的长度为10个SELECT RPAD('hello',10,'he');//hellohehehSELECT LTRIM(' hellovfvfdvf ');//去字符串左边空格SELECT RTRIM(' hello ');//去字符串右边空格SELECT TRIM(' hello ');//去掉字符串两端空格SELECT REPEAT('hello',5);//字符串hello重复5次SELECT REPLACE('hello','e','a');//hello字符串中的e替换成aSELECT SUBSTRING('hello',2,3);//ell从第二个位置截取三个字符

数值函数

SELECT ABS(-1.0);//绝对值 1.0SELECT CEIL(4.3);//向上取整 5SELECT FLOOR(4.9);//向下取整 5 SELECT MOD(2.43243,3);//取余 2.43243SELECT RAND();//返回0-1的随机小数

日期时间函数

SELECT CURDATE();//-07-11SELECT CURTIME();//19:10:00SELECT NOW();//-07-11 19:10:00SELECT UNIX_TIMESTAMP();//1562843465SELECT FROM_UNIXTIME(1562843465);//-07-11 19:11:05SELECT WEEK(NOW());//27SELECT HOUR('19:10:00');//19SELECT YEAR('-07-11');//SELECT MINUTE('19:10:00');//10SELECT DATE_ADD(NOW(),INTERVAL 31 DAY);//-08-11 19:19:26select date_add(now(),interval 3 year);//-08-11 19:19:26SELECT DATEDIFF(NOW(),'-07-11');//365

流程函数

SELECT IF(2>3,'true','false');//FALSE//如果value1为null,则返回value2,否则 返回value1select ifnull(value1,value2);SELECT IFNULL(NULL,'nonull');//nonull

其他函数

SELECT DATABASE();//返回当前数据库的名字SELECT VERSION();//返回当前数据库的版本5.7.19SELECT USER();//root@localhost 返回当前的用户SELECT PASSWORD('root');//81F5E21E35407D884A6CD4A731AEBFB6AF209E1B

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。