文章目录:

1.数据库的相关操作

1.1 连接数据库

1.2 创建数据库

1.3 查看数据库有哪些

1.4 查看指定的数据库

1.5 删除指定的数据库

1.6 使用数据库(很重要)

1.7 用户的创建和删除

1.8 授权

1.9 收权

1.10 视图的创建与删除

1.11 断开服务器的连接

2.表的相关操作

2.1 创建表

2.2 查看表的结构

2.3 查看表的详细信息

2.4 查看某个数据库中有哪些表

2.5 删除指定的表

2.6 字段名的数据类型

2.7 添加主键约束

2.8 添加外键约束

2.9 添加常用约束

3.数据库和表的基本操作

3.1 修改表名

3.2 修改字段名和字段的数据类型

3.3 添加和删除字段

3.4 修改字段的排列位置

3.5 删除表的外键约束

3.6 插入数据(INSERT INTO , VALUES)

3.7 查看数据是否成功插入表中

3.8 更新数据(UPDATE , SET)

3.9 删除数据(DELETE , TRUNCATE)

4.单表查询

4.1 基本查询语句(SELECT , FROM , WHERE)

4.2 带IN和NOT IN关键字的查询

4.3 带(NOT)BETWEEN AND 的范围查询

4.4 带LIKE的字符匹配查询

4.4.1 百分号通配符"%"

4.4.2 下划线通配符"_"

4.5 查询空值(IS NULL)与去重(DISTINCT)

4.6 带 AND 与 OR 的多条件查询

4.7 对查询结果进行排序(ORDER BY)

4.8 分组查询(GROUP BY)

4.9 使用 LIMIT 限制查询结果的数量

5.使用聚合函数查询(不能出现在WHERE子句的后面)

5.1 COUNT()函数

5.2 SUM()函数

5.3 AVG()函数

5.4 MAX()函数

5.5 MIN()函数

6.连接查询(多表查询)

6.1 内连接查询

6.2 外连接查询(左/右)

6.3 复合条件连接查询

6.4 子查询

6.4.1 带比较运算符的子查询

6.4.2 带(NOT)IN的子查询

6.4.3 带 ANY 或 ALL 的子查询

6.4.4 带(NOT)EXISTS谓词的子查询

7.SQL语句的编写顺序

8.SQL语句的执行顺序

9.SQL语句中四大功能、九大动词


1.数据库的相关操作

  • 1.1 连接数据库

mysql -u[用户名] -p[密码] -h[主机名](最后一个可以不加,特定情况时需要添加)
  • 1.2 创建数据库

模板:CREATE DATABASE 数据库名;
举例:CREATE DATABASE school;
  • 1.3 查看数据库有哪些

模板:SHOW DATABASES;
(无需加具体的数据库名)
  • 1.4 查看指定的数据库

模板:SHOW CREATE DATABASE 数据库名;
举例:SHOW CREATE DATABASE school;
  • 1.5 删除指定的数据库

模板:DROP DATABASE 数据库名;
举例:DROP DATABASE school;
  • 1.6 使用数据库(很重要)

模板:USE 数据库名;
举例:USE school;
(在对其中一个数据库进行一系列操作的时候,必须要先声明使用的是哪一个数据库,即上面的SQL语句!!!)
  • 1.7 用户的创建和删除

首先连接数据库
mysql -u[用户名] -p[密码] -h[主机名](这个可以不加,特定情况需要添加)在这里我们通过root用户来创建新的用户
模板:CREATE USER "用户名"@"localhost" identified by "密码";
(用户名和localhost两侧的引号可加可不加)举例:CREATE USER "U4"@"localhost" identified by"123456";
(此时,我们使用root用户创建了一个新用户U4,密码为123456)对于新创建的用户,我们也可以对它进行删除
模板:DROP USER "用户名"@"localhost";举例:DROP USER "U4"@"localhost";
(此时,我们删除了上面创建的新用户U4)
  • 1.8 授权

在创建的一些用户之后,我们可以为指定的用户授权!!!
模板:GRANT <权限列表>  [权限可以是:SELECT,UPDATE,DELETE,INSERT]ON <数据库对象>   [数据库对象可以是基本表、视图]TO <用户名>[WITH GRANT OPTION];  [添加上这条语句之后,表示被授权的用户可以继续将权限转授给其他用户]举例1:GRANT SELECTON school.studentTO U4;
(此时,我们为用户U4授予school数据库中student表的查询权限)
(在这里,需要说明一点:如果没有指定具体的数据库,那么在基本表或者视图的前面要加上该数据库名的前缀)
(上面的student表是在school数据库中的,所以我们要加上对应数据库名的前缀)
(如果不想加这个前缀,也可以使用下面的语句)举例2:USE school;[出现Database changed,表示需要使用这个数据库]GRANT SELECTON student  (由于我们已经事先声明USE school;所以在这里就不需要添加数据库名的前缀了)TO U4;
(这两种方法是一样的,大家可以根据编写SQL语句的习惯来选择!!!)上面提到的两个例子,是授予部分权限,如果想授予指定用户的所有权限,可以使用下面的语句:
模板:GRANT ALL PRIVILEGESON school.studentTO U5;
(此时,我们为用户U5授予了school数据库中student表的所有权限)
  • 1.9 收权

在授予指定用户的一些权限之后,我们同样可以将这些权限收回!!!
模板:REVOKE <权限列表>  [权限可以是:SELECT,UPDATE,DELETE,INSERT]ON <数据库对象>    [数据库对象可以是基本表、视图]FROM <用户名>[CASCADE|RESTRICT];
(级联CASCADE:当这个用户为其他用户授权时,我们使用级联将其一并收回)
(比如用户root为U4授予了SELECT权限,而用户U4又为U5授予了UPDATE权限,此时使用CASCADE就把两个权限一起收回了)
(约束RESTRICT:当这个用户没有给其他用户授权时,才可以将它收回)举例:REVOKE SELECT,UPDATE(grade)ON school.scFROM U4CASCADE;
(此时,我们把用户U4对school数据库中student表的查询和更新成绩的权限收回,同时级联收回U4授出给其他用户的权限)
  • 1.10 视图的创建与删除

举例1:涉及单个表的视图的创建创建信工学院开设的课程视图XG_C(cno,cname,credit)属性名依次表示课程号、课程名、学分,并查询视图中的数据。CREATE VIEW XG_C(cno,cname,credit)ASSELECT cs_id,cs_name,cs_creditFROM courseWHERE cs_depart="信工";使用SELECT查询所创建视图中的数据SELECT *FROM XG_C;
举例2:涉及多个表的视图的创建创建教师授课视图Tea_C(tno,tname,cno,cname,credit)属性名依次表示教师号,教师名,课程号,课程名,学分,并查询视图中的数据。CREATE VIEW Tea_C(tno,tname,cno,cname,credit)ASSELECT teacher.tea_id,tea_name,course.cs_id,cs_name,cs_creditFROM courseJOIN teachingON course.cs_id=teaching.cs_idJOIN teacherON teaching.tea_id=teacher.tea_id;使用SELECT查询所创建视图中的数据SELECT *FROM Tea_C;
举例3:在已有视图的基础上,继续创建新的视图创建信工学院学生平均成绩视图XG_AVE(sno,gave)CREATE VIEW XG_AVE(sno,gave)ASSELECT sno,AVG(grade)FROM XG_GRADEGROUP BY sno;使用SELECT查询所创建视图中的数据SELECT *FROM XG_AVE;
举例4:删除视图DROP VIEW [视图名];
(可以添加CASCADE级联操作,表示将此视图导出的所有视图一并删除)
  • 1.11 断开服务器的连接

模板1:exit;
模板2:quit;

2.表的相关操作

  • 2.1 创建表

模板:CREATE TABLE 表名(字段名1  数据类型  [列级约束],字段名2  数据类型  [列级约束],......表级约束);
举例:CREATE TABLE student(sno char(10),sname varchar(5),sage int(5),sex char(3));
(在此,我们只是创建了一个基本表,并没有对表中字段添加相关约束,随后会一一介绍!!!)
  • 2.2 查看表的结构

模板1:DESCRIBE 表名;
模板2:DESC 表名;
举例: DESC student;
  • 2.3 查看表的详细信息

模板:SHOW CREATE TABLE 表名;
举例:SHOW CREATE TABLE student;
  • 2.4 查看某个数据库中有哪些表

模板:SHOW TABLES;
举例:SHOW TABLES;
(这个和查看有哪些数据库一样,无需添加数据库名或者表名)
  • 2.5 删除指定的表

模板:DROP TABLE 表名;
举例:DROP TABLE student;
  • 2.6 字段名的数据类型

int              整型
char(n)          定长字符型
varchar(n)       变长字符型
float(m,d)       单精度型,m表示总位数,d表示小数位数
decimal(m,d)     双精度型
date             日期型
(这里只介绍MySQL支持的主要数据类型)
  • 2.7 添加主键约束

举例:CREATE TABLE student(sno char(10) PRIMARY KEY,sname varchar(5),sage int(5),sex char(3));
(我们在第一个字段名sno的后面添加列级约束:PRIMARY KEY,即指定字段sno为student表的主键)
  • 2.8 添加外键约束

模板:CONSTRAINT 外键约束名 FOREIGN KEY(外键名) REFERENCES 主表名(主键名)
(在添加外键约束的时候,需要有一个父表(主表)和子表)举例:CREATE TABLE student(sno char(10) PRIMARY KEY,sname varchar(5),sage int(5),sex char(3));CREATE TABLE score(sno char(10) PRIMARY KEY,cno char(10),cname varchar(10),ctype varchar(5),CONSTRAINT fk_temp FOREIGN KEY(sno) REFERENCES student(sno));
(我们在此就为score表添加了外键约束,外键约束名为fk_temp,外键名为sno)
  • 2.9 添加常用约束

常用约束类型有:
(1)primary key         单一主键约束,primary key(字段名1,字段名2)  联合主键
(2)foreign key         外键约束
(3)unique              唯一约束 ,取值不能重复,但允许有一个为空
(4)null                为空约束(系统默认的)
(5)not null            非空约束
(6)default 值          默认约束,给定字段一个默认值,添加字符串型默认值要使用单引号,表示为'值’。如果是整型则不需要加任何符号; 如果要添加的是中文默认值,则需要加上 DEFAULT CHARSET=utf8;  使用英文字符则不需要。
(7)auto_increment     自增约束,默认情况下初始值和增量都为1。
1.添加唯一约束CREATE TABLE student(sno char(10) PRIMARY KEY,sname varchar(5) UNIQUE,sage int(5),sex char(3));
2.添加非空约束CREATE TABLE student(sno char(10) PRIMARY KEY,sname varchar(5) NOT NULL,sage int(5),sex char(3));
3.使用默认约束
CREATE TABLE student
(sno char(10) PRIMARY KEY,sname varchar(5),sage int(5),sex char(3) DEFAULT "男"
)DEFAULT CHARSET=utf8;
4.设置表的属性值自动增加
CREATE TABLE student
(sno char(10) PRIMARY KEY AUTO_INCREMENT,sname varchar(5),sage int(5),sex char(3)
);
(默认情况下,关键词AUTO_INCREMENT的初始值的增量均为1)

3.数据库和表的基本操作

  • 3.1 修改表名

模板:ALTER TABLE 旧表名 RENAME [TO] 新表名;
举例:ALTER TABLE student RENAME people;
(此时我们把student表修改为一个新的表名people)
  • 3.2 修改字段名和字段的数据类型

模板1:修改字段名ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;(数据类型必须跟在新字段名的后面,数据类型可改可不改,如果不需要修改字段的数据类型,可以把新字段的数据类型设置为和原来一样,但是,千万不要空着它!)
举例: ALTER TABLE student CHANGE sage Sage int(5);
模板2:修改字段的数据类型ALTER TABLE 表名 MODIFY 字段名 新数据类型;
举例: ALTER TABLE student MODIFY sage varchar(5);
  • 3.3 添加和删除字段

模板1:添加字段(默认在表的最后一列添加字段)ALTER TABLE 表名 ADD 字段名 数据类型 [约束类型];
举例:ALTER TABLE student ADD smajor varchar(10) NOT NULL;
模板2:添加字段(指定在表的第一列添加字段)ALTER TABLE 表名 ADD 字段名 数据类型 [约束类型] FIRST;
举例:ALTER TABLE student ADD smajor varchar(10) FIRST;
模板3:添加字段(指定在表的某一列添加字段)ALTER TABLE 表名 ADD 字段名 数据类型 [约束类型] ALTER 指定已存在的字段名;
举例:ALTER TABLE student ADD smajor varchar(10) AFTER sage;
模板4:删除字段ALTER TABLE 表名 DROP 字段名;
举例:ALTER TABLE student DROP smajor;
  • 3.4 修改字段的排列位置

模板1:修改字段为表的第一字段ALTER TABLE 表名 MODIFY 字段名 数据类型 FIRST;
举例:ALTER TABLE student MODIFY sname varchar(5) FIRST;
模板2:修改字段到表的某个字段之后ALTER TABLE 表名 MODIFY 字段名 数据类型 AFTER 指定字段名;
举例:ALTER TABLE student MODIFY sname varchar(5) AFTER sage;
  • 3.5 删除表的外键约束

模板:ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;
举例:ALTER TABLE score DROP FOREIGN KEY fk_temp;
(其中fk_temp为score表的外键约束名)
  • 3.6 插入数据(INSERT INTO , VALUES)

模板1:INSERT INTO 表名 (字段名1,字段名2,......)VALUES(字段名1的值,字段名2的值,......),(字段名1的值,字段名2的值,......),......(字段名1的值,字段名2的值,......);
(如果插入的全部列的值,则INSERT INTO 表名后面的内容就可以省略;如果是部分列,则不能省略)
举例:INSERT INTO student(sno,sname)VALUES("201805050201","张三"),("201805050255","李四"),("201805050230","王五");
模板2:带子查询的插入语句INSERT INTO 表名 (字段名1,字段名2,......)SELECT 字段名1,字段名2,......FROM 表名此处可以添加一些指定条件(WHERE,GROUP BY等等)
举例:INSERT INTO sc(sno,grade)SELECT sno,AVG(grade)FROM studentGROUP BY sno;
(此时,我们把student表按照学号分组,并计算每个学生的平均成绩,之后再把学号和平均成绩插入新表sc)
  • 3.7 查看数据是否成功插入表中

模板:SELECT *;FROM 表名;
举例:SELECT *;FROM student;
  • 3.8 更新数据(UPDATE , SET)

模板1:更新表中的所有行的一列值UPDATE 表名SET 字段名1=它的新值;
举例:UPDATE studentSET sage=20;
(此时,我们把student表的sage字段对应的所有值都更新为20)
(模板中更新的新值也可以为空,即:NULL)
模板2:更新表中的所有行的多列值UPDATE 表名SET 字段名1=它的新值,字段名2=它的新值,......;
举例:UPDATE studentSET sage=20,sex="男",smajor="计科";
模板3:更新表中指定行的1列或多列值UPDATE 表名SET 字段名1=它的新值,字段名2=它的新值,......WHERE 条件表达式;
举例:UPDATE studentSET sage=18,sex="女"sno="201805050202"WHERE id=3;
模板4:带子查询的更新语句UPDATE 表名SET 字段名=它的新值 (可以有多个字段名)WHERE 条件表达式 IN(SELECT 字段名FROM 表名WHERE 条件表达式);
举例:UPDATE scSET grade=0WHERE sno IN(SELECT snoFROM studentWHERE sdept="信工");
(此时,我们把信工学院的全体学生的成绩更新为0)
  • 3.9 删除数据(DELETE , TRUNCATE)

模板1:删除表中的指定行DELETE FROM 表名WHERE 条件表达式;
举例:DELETE FROM studentWHERE sage>=18;
模板2:删除表中的所有行DELETE FROM 表名;
举例:DELETE FROM student;
模板3:带子查询的删除语句DELETE FROM 表名WHERE 字段名 IN(SELECT 字段名FROM 表名WHERE 条件表达式);
举例:DELETE FROM scWHERE sno IN(SELECT snoFROM studentWHERE sdept="信工");
(此时,我们就删除了信工学院全体学生的选课记录) 
模板4:DELETE 和 TRUNCATETRUNCATE TABLE 表名;
举例:TRUNCATE TABLE student;
(DELETE:一条一条的删除表中的数据)
(TRUNCATE:直接删除的是表,而不是表中的内容,但是删除结束后,还会重新创建一个表)

4.单表查询

  • 4.1 基本查询语句(SELECT , FROM , WHERE)

模板1:查询表中的某个字段SELECT 字段名FROM 表名;
举例:SELECT snoFROM student;
模板2:查询表中的多个字段SELECT 字段名1,字段名2FROM 表名;
举例:SELECT sno,snameFROM student;在模板1和2中,我们也可以用关键字 as 给字段名起别名,方便我们查看和理解查询的结果!!!
举例:SELECT sno as 学生学号,sname as 学生姓名FROM student;
(在这里,关键字 as 可以省略)
模板3:查询表中的所有字段SELECT *FROM 表名;
举例:SELECT *FROM student;
模板4:条件查询SELECT 字段名1,字段名2FROM 表名WHERE 条件表达式;
举例:SELECT sno,snameFROM studentWHERE sex<>"女";
  • 4.2 带IN和NOT IN关键字的查询

模板:SELECT 字段名 FROM 表名 WHERE 字段名 IN (n1,n2,n3,...);
举例:SELECT sno,snameFROM studentWHERE grade IN (98,99,100);
(查询成绩为98,99,100的学生的学号和姓名)
(NOT IN的使用方法和IN是一样的,在这就不再举例了)
  • 4.3 带(NOT)BETWEEN AND 的范围查询

模板:SELECT 字段名 FROM 表名 WHERE 字段名 BETWEEN n1 AND n2;
举例:SELECT sno,snameFROM studentWHERE grade BETWEEN 90 AND 100;
(查询成绩在90到100之间的所有学生的学号和姓名)
(NOT BETWEEN AND 和 BETWEEN AND的使用方法是一样的)
  • 4.4 带LIKE的字符匹配查询

  • 4.4.1 百分号通配符"%"

模板1:SELECT 字段名 FROM 表名 WHERE 字段名 LIKE '字符%';
(百分号通配符%可以匹配任意长度的字符,甚至包括零字符。其中 % 的位置可以根据需要在字符之间改变)举例1:SELECT sno,snameFROM studentWHERE sno LIKE "20180505%";
(查询学号以20180505开头的学生学号和姓名)举例2:SELECT sno,snameFROM studentWHERE sno LIKE "%0505%";
(查询学号中间包含0505的学生学号和姓名)举例3:SELECT sno,snameFROM studentWHERE sno LIKE "%0201";
(查询学号结尾为0201的学生学号和姓名)
  • 4.4.2 下划线通配符"_"

模板:SELECT 字段名 FROM 表名 WHERE 字段名 LIKE '字符_';
(下划线通配符"_"只能模糊匹配1个字符)
(如果你想用下划线通配符"_"匹配多个字符,那只能多用几个"_"咯!其中"_"的位置可以根据需要在字符间变化。
举例1:SELECT sno,snameFROM studentWHERE grade LIKE "_9";
(查询学生成绩以9结尾的学生学号和姓名)举例2:SELECT sno,snameFROM studentWHERE grade LIKE "________02";
(查询学号以02结尾的学生学号和姓名,假设学号是2018050502的格式,那么在02之前就需要用8个下划线通配符"_")举例3:SELECT sno,snameFROM studentWHERE grade LIKE "_子%";
(查询学生姓名中第二个字为"子"的学生学号和姓名)
  • 4.5 查询空值(IS NULL)与去重(DISTINCT)

模板:SELECT 字段名 FROM 表名 WHERE 字段名 IS NULL;
(查询数据表中的空值对应的数据)举例:SELECT sno,snameFROM studentWHERE grade IS NULL;
(查询student表中学生成绩为空的数据)
模板:SELECT DISTINCT 字段名 FROM 表名;
举例:SELECT DISTINCT gradeFROM student;
(对student表中的成绩字段进行去重处理)
  • 4.6 带 AND 与 OR 的多条件查询

模板:SELECT 字段名 FROM 表名 WHERE 表达式1 AND 表达式2;
(小提示: 可以同时添加多个过滤条件,增加条件的同时只需增加一个 AND 关键字。)举例:SELECT sno,snameFROM studentWHERE sage=18 AND sex="男";
(查询年龄为18,且性别为男的学生学号和姓名)
模板:SELECT 字段名 FROM 表名 WHERE 表达式1 OR 表达式2;
(与AND相反,在WHERE声明中使用OR关键字表示只需满足两个条件中的其中一个条件即可返回结果)举例:SELECT sno,snameFROM studentWHERE sage=18 OR sex="男";
(查询年龄为18或者性别为男的学生学号和姓名,只要满足其中一个就行)
  • 4.7 对查询结果进行排序(ORDER BY)

模板:SELECT 字段名 FROM 表名 WHERE 条件表达式 (WHERE子句也可以不加)ORDER BY 字段名 [ASC[DESC]];
(默认升序:ASC,也可以定义降序:DESC)举例:SELECT sno,snameFROM studentWHERE sex="男"ORDER BY sage DESC;
(我们对性别为男的学生进行,按年龄降序排序,最后将其学号和姓名输出)
  • 4.8 分组查询(GROUP BY)

模板:SELECT 字段名 FROM 表名 GROUP BY 字段名;
(分组查询的关键字是Group By,查询的是每个分组中 首次出现的一条记录)
(一般情况下,GROUP BY都和聚合函数一起使用)举例:SELECT *FROM studentGROUP BY sage;
(在GROUP BY子句之后还可以使用 HAVING 来对分组结果进行筛选)
  • 4.9 使用 LIMIT 限制查询结果的数量

模板:SELECT 字段名 FROM 表名 LIMIT [OFFSET,] 记录数;
(第一个参数:OFFSET,可选参数,表示偏移量,如果不指定默认值为0,表示从查询结果的第一条记录开始,若偏移量为1,则从查询结果中的第二条记录开始,以此类推)
(第二个参数,记录数,表示返回查询结果的条数)举例:SELECT *FROM studentORDER BY sage ASCLIMIT 1,4;
(表示从student表中第2条记录开始,向后检索4条数据,并按年龄升序排序)

5.使用聚合函数查询(不能出现在WHERE子句的后面)

  • 5.1 COUNT()函数

模板:SELECT COUNT(*/字段名) FROM 表名;可加,可不加:WHERE 条件表达式;
(COUNT()函数是用来统计记录的总条数)举例:SELECT COUNT(sno)FROM student;
(统计student表中一共有多少条记录)
  • 5.2 SUM()函数

模板:SELECT SUM(字段名) FROM 表名;可加,可不加:WHERE 条件表达式;
(SUM()函数是对数据表的某列进行求和操作)举例:SELECT SUM(grade)FROM scoreWHERE course="语文";
(计算score表中语文成绩的总和)
  • 5.3 AVG()函数

模板:SELECT AVG(字段名)FROM 表名;可加,可不加:WHERE 条件表达式;
(AVG()函数是对数据表的某列进行求平均值操作)举例:SELECT AVG(grade)FROM scoreWHERE course="数学";
(计算score表中,数学科目的平均成绩)
  • 5.4 MAX()函数

模板:SELECT MAX(字段名)FROM 表名;可加,可不加:WHERE 条件表达式;
(MAX()函数是求某列的最大数值)举例:SELECT MAX(grade)FROM scoreWHERE course="数学";
(查询score表中,数学科目成绩的最高分)
  • 5.5 MIN()函数

模板:SELECT MIN(字段名)FROM 表名;可加,可不加:WHERE 条件表达式;
(MIN()函数是求某列的最小数值)举例:SELECT MIN(grade)FROM scoreWHERE course="数学";
(查询score表中,数学科目成绩的最低分)

6.连接查询(多表查询)

  • 6.1 内连接查询

仅将两个表中满足连接条件的行组合起来作为结果集,称为内连接;
关键字: [inner] join ...  on。模板:SELECT 字段名1,字段名2,......FROM 表1JOIN 表2ON 表1.字段=表2.字段;
解释:从表1中取出每一条记录,去表2中与所有的记录进行匹配,匹配必须是某个条件在表1中与表2中相同,相同一般理解为两个表的公共字段,最终才会保留结果,否则不保留。inner 关键字可省略不写;on 表示连接条件。举例:SELECT student.sno,sname,smajor,cnoFROM studentJOIN scoreON student.sno=score.sno;
(我们对student表和score表做内连接运算,选取两个表的公共字段sno进行连接)
(在输出的时候,如果输出的是公共字段sno,则需要在前面加上表名前缀:student.sno)以上是其中一种写法,下面我们介绍另一种写法:
模板:SELECT 字段名1,字段名2,......FROM 表1,表2WHERE 表1.字段=表2.字段;
举例:SELECT student.sno,sname,smajor,cnoFROM student,scoreWHERE student.sno=score.sno;
  • 6.2 外连接查询(左/右)

外连接查询分为左外连接查询和右外连接查询;
关键字: left/right [outer] join ... on模板1:SELECT 字段名1,字段名2,......FROM 表1LEFT JOIN 表2 ON 表1.字段=表2.字段;  (不局限于两个表,可以有更多的表)模板2:SELECT 字段名1,字段名2,......FROM 表1RIGHT JOIN 表2 ON 表1.字段=表2.字段;  (不局限于两个表,可以有更多的表)语法解释:左外连接:在内连接的基础上,还包含表1中所有不符合条件的数据行,并在其中的表2列填写 NULL。右外连接:在内连接的基础上,还包含表2中所有不符合条件的数据行,并在其中的表1列填写 NULL。
(与内连接相似,只是查询结果少了一些数据,多出来了一些为NULL的数据,所以不再举例了)
  • 6.3 复合条件连接查询

复合条件连接查询,就是在连接查询的过程中,通过添加过滤条件来限制查询结果,使查询结果更加精确。
模板与内连接类似,只是在内连接的基础上,增加了一些查询条件!!!举例1:SELECT student.sno,sname,smajor,cnoFROM student,scoreWHERE student.sno=score.sno AND sage>=18;
(对两个表做内连接运算之后,再进行对年龄大于等于18的筛选和检索)举例2:SELECT student.sno,sname,smajor,cnoFROM student,scoreWHERE student.sno=score.snoORDER BY sage DESC;
(对两个表做内连接运算之后,再对结果按年龄降序排序输出)以上,只是举了两个例子来更好的理解,复合条件当中还有很多,比如使用聚合函数,GROUP BY子句等等!!!
  • 6.4 子查询

  • 6.4.1 带比较运算符的子查询

模板:SELECT * FROM 表1 WHERE 字段名1=(SELECT 字段名2 FROM 表2可加,可不加:WHERE 条件表达式);比较运算符:大于:>,大于等于:>=,小于:<,小于等于:<=,等于:=,不等于:!=或者<>举例:SELECT name,ageFROM tb_empWHERE age>(SELECT AVG(age)FROM tb_emp);
(查询大于所有平均年龄的员工姓名与年龄)
  • 6.4.2 带(NOT)IN的子查询

模板:与上面的带比较运算符类似,只是把比较运算符换成了"IN"(相应的也有NOT IN)
举例:SELECT cs_name 课程名,cs_type 课程类型FROM courseWHERE cs_id IN(SELECT cs_idFROM teachingWHERE tea_id IN(SELECT tea_idFROM teacherWHERE tea_name="张三"));
(这里我们使用了三个表,来查询“张三”老师所讲授的课程名和课程类型)
  • 6.4.3 带ANY 或 ALL的子查询

ALL关键字
ALL必须接在一个比较运算符的后面,表示与子查询返回的所有值比较都为TRUE,则返回TRUE。举例:SELECT position,salaryFROM tb_salaryWHERE salary>ALL(SELECT salaryFROM tb_salaryWHERE position='Java');
(查询薪资表中比Java最高工资高的所有员工职位名称和薪资,比所有的都高→大于最大值)ANY和SOME关键字
ANY与比较操作符联合使用,表示与子查询返回的任何值比较为TRUE,则返回TRUE。SOME是ANY的别名,一般用的比较少。举例:SELECT position,salaryFROM tb_salaryWHERE salary>ANY(SELECT salaryFROM tb_salaryWHERE position='Java');
(查询薪资表中比Java最低工资高的所有员工职位名称和薪资,比任何的都低→小于最小值)
  • 6.4.4 带(NOT)EXISTS谓词的子查询

带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值"true",或逻辑假值"false"。
由EXISTS引出的子查询,其目标列表达式通常都用*。
若内层查询结果非空,则外层的WHERE子句返回真值;若内层查询结果为空,则外层的WHERE子句返回假值。
(NOT EXISTS与其相反)模板:SELECT 字段名1,字段名2,......FROM 表名WHERE EXISTS(SELECT *FROM 表名WHERE 条件表达式......);举例:SELECT stu_name 学生姓名,stu_major 专业FROM studentWHERE EXISTS(SELECT *FROM scoreWHERE student.stu_id=score.stu_idAND cs_id="05203314");
(查询选修课程号为"05203314"的学生的姓名及专业)

7.SQL语句的编写顺序

SELECT ...
FROM ...
WHERE ...
GROUP BY ... HAVING ...
ORDER BY ...

8.SQL语句的执行顺序

FROM ...
WHERE  ...
GROUP BY ... HAVING ...
SELECT ...
ORDER BY ...

9.SQL语句中四大功能、九大动词

                    SQL语句功能                                                                    对应的动词
                       数据查询                                                                      SELECT
                       数据定义                                                       CREATE、ALTER、DROP
                       数据操纵                                                     INSERT、UPDATE、DELETE
                       数据控制                                                              GRANT、REVOKE

那么,以上的所有内容就是博主自己总结的MySQL中常用的一些SQL语句,本篇博客后续还会向其中增添内容,还未100%的完成,因为博主也还在学习数据库的过程中,所以并不是大佬,博文当中或许也会出错,还望谅解!!!

MySQL初级篇——常用SQL语句(大总结)相关推荐

  1. 55:Mysql用户管理|常用sql语句|mysql数据库备份恢复

    2019独角兽企业重金招聘Python工程师标准>>> 1.Mysql用户管理: 场景,为了安全,新建的站点,创建新的用户,或者给已有用户授权,对某个库或者某个表有权限: 语法: g ...

  2. MySQL高手篇:精妙SQL语句介绍

    如何从一位菜鸟蜕变成为高手,灵活使用的sql语句是必不可少的.本文收集了部分比较经典,常用的sql语句供大家参考,希望对大家有所帮助. 说明:复制表(只复制结构,源表名:a 新表名:b) sql: s ...

  3. [MySQL学习]常用SQL语句大全总结

    转载地址:http://www.cnblogs.com/0351jiazhuang/p/4530366.html SQL是(Structured Query Language)结构化查询语言的简称,下 ...

  4. MySQL数据库中常用SQL语句

    开发过程中我们经常会用到各种SQL语句,今天小编就来和大家分享一些简单的SQL语句的使用,便于大家对于项目的开发. 1.查询:查询本字段带文字的数据. select * from student  w ...

  5. php面试专题---MySQL常用SQL语句优化

    php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...

  6. 经典MySQL语句大全和常用SQL语句命令的作用。

    转载自 http://blog.csdn.net/suyu_yuan/article/details/51784893 转自网络: 经典MSSQL语句大全和常用SQL语句命令的作用  下列语句部分是M ...

  7. MySQL(用户管理,常用sql语句,数据库备份恢复,MySQL调优,恢复误操作数据)...

    一.MySQL用户管理. 一个MySQL数据库里可以跑多个库,总不能给所有人的程序员root用户,则可以给他们单独的用户访问数据库. 创建用户:(grant all on *.* to 'user1' ...

  8. mysql有哪些特色SQL语句_Linux-MySQL-有哪些常用sql语句

    Linux-MySQL-有哪些常用sql语句 发布时间:2020-06-05 16:45:41 来源:51CTO 阅读:131 作者:三月 不知道大家之前对类似Linux-MySQL-有哪些常用sql ...

  9. mysql的学生选课表_50个常用sql语句 网上流行的学生选课表的例子

    50个常用sql语句 网上流行的学生选课表的例子 更新时间:2012年06月26日 18:32:29   作者: 这篇文字在网上被转载烂了,里面有些sql适合用在应用系统里,有些"报表&qu ...

最新文章

  1. JVM是怎么工作的?
  2. DL之DeepLabv1:DeepLabv1算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  3. unite testing
  4. html5中meter讲解_Java中的得墨meter耳定律–最少知识原理–实际示例
  5. LeetCode 433. 最小基因变化(广度优先搜索)
  6. Gratipay如何帮助解决“搭便车”问题
  7. AppDynamic自定义统计异常reportError,实时显示结果
  8. 宇宙最强下载器:IDM 俄罗斯大神版
  9. gif动态图批量加水印方法
  10. 【更新】Excel控件Spire.XLS for .NET V7.12.90发布 | 支持向工作表添加形状
  11. 修改Win10右键菜单
  12. Shiro介绍(四):定义自己的安全域Realm
  13. visio2002无法安装(您必须首先安装Enterprise Architect Edition of visual Studio.Net2003)的解决方案
  14. 转:传说中破解基础----背的滚瓜烂熟差不多就会破解
  15. 关于数据库的表如何删除空行
  16. 单点登录CAS-03:cas配置02-开启/status
  17. Android多线程实现
  18. Camera硬件知识汇总
  19. 记:《洛克菲勒留给儿子的38封信》-- 38
  20. nacos登录 提示权限认证失败 没有命名空间的访问权限

热门文章

  1. Json 在线调试工具
  2. 个体崛起的时代,你需要为自己的职业发展谋求新的出路
  3. TMF和Frameworx
  4. 黑金高速AD-DA模块使用
  5. 【nowcoder】笔试强训Day9
  6. 花开云(织音)同款超级好看404页面源码
  7. 台式电脑怎么找不到计算机在哪,台式电脑没有声音了怎么恢复(在家用这两个方法轻松解决)...
  8. 《七哥说道》第一章:风雨知秋之进城三人
  9. 中国计算机软件工程大学专业,全国开设软件工程专业院校有哪些 都有什么大学名单...
  10. matlab中screen函数,14 用 Screen 函数打开一个窗口