数据库与表的基本操作

  1. 了解结构化查询语言SQL
    sql是结构化查询语言,是一门标准的计算机语言,用于访问和操作数据库,其主能包括数据定义、数据操纵、数据查询和数据控制
    sql已称为RDBMS的标准语言,单不同的RDBMS使用的SQL版本有一些差异。

    按功能用途可以将sql语言分为4类: ddl、dml、dql、dcl

    • DDL(数据定义语言) :用于数据库、表视图等的建立、删除包括CREATE、ALTER、DROP
    • DML(数据操纵语言):用于添加、删除和修改数据表中的记录包括: INSERT、DELETE、UPDATE
    • DCL(数据控制语言):包括数据库对象的权限管理和事务管理包括:COMMIT、ROLLBACK、GRANT
    • DQL(数据查询语言):查询是数据库的基本功能包括: SELECT
  2. 掌握数据库相关操作
    DDL之数据库
    创建数据库

CREATE DATABASE 数据库名

删除数据库

DROP DATABASE 数据库名

展示数据库

show databases;

查看自己当前在哪个数据库下工作

select database();
  1. 了解存储引擎engine
    存储引擎,就是如何存储数据、如何更新数据、如何查询数据、如何为存储的数据建立索引等一系列技术的实现方法
    查看mysql支持的存储引擎
show engines;
存储引擎 描述
MyISAM 拥有较快的插入、查询速度,但不支持事务
InnoDB 支持ACID事务,支持行级锁,支持外键;MySQL 5.5版本之后默认存储引擎
MRG_MYISAM 将一组结构相同的MyISAM表聚合成一个整体,再进行增删改查操作。
Memory 所有数据存储再内存中,响应快,MySQL重启时数据会全部丢失
Archive 归档,且有压缩机制,适用于历史数据归档
CSV 逻辑上由逗号分隔数据,会为每张表创建一个.csv文件。
  1. 熟悉MySQL的数据类型
    在创建数据表时、准确的定义字段的数据类型比较重要

数值类型

类型 所占字节数 说明
tinyint 1 小整数值,如状态
smallint 2 大整数值
mediumint 3 大整数值
int 4 大整数值
bigint 8 极大整数值
float 4 单精度浮点数值
double 8 双精度浮点数值
decimal max(D+, M+) 含小数值,例如金额

日期和时间类型

类型 所占字节数 说明
date 3 YYYY-MM-DD
time 3 HH:MM:SS
year 1 YYYY
datetime 8 YYYY-MM-DD HH:MM:SS
timestamp 8 YYYYMMDDHHMMSS

字符串类型

类型 所占字节数 说明
char 0~255 定长字段串
varchar 0~65535 变长字符串
text 0~65535 长文本数据
blob 二进制形式文本数据
  1. 熟悉MySQL的建表语法
    在DDL中对数据表的操作主要有3种: 创建、修改、删除
    创建数据表,需要定义的信息主要包括: 表名、字段名、字段类型

mysql的建表语法

create [temporary] table [if not exists] table_name [(create_definition,...)] [table_options][select_statement]

temporary:临时表,会话结束自动消失
create_definition:定义表种各列属性
table_options:表配置,如存储引擎、字符集
select_statement: 通过select语句建表

  1. 掌握数据表的相关操作
    示例建表
create table contacts(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30),
phone VARCHAR(20)
) ENGINE = InnoDB DEFAULT CHARSET=utf8;

查看表

show tables;

查看表结构

desc contacts;

增加表结构

alter table contacts add sex char(1);

修改表结构

alter table contacts modify sex int;

删除表结构

alter table contacts drop column sex;

删除表

drop table contacts;
  1. 掌握如何向表中插入数据
    INSERT插入单条数据
INSERT INTO table_name(field1,field2,...,fieldN) VALUES (value1,value2,...,valueN);

INSERT插入多条数据

INSERT INTO table_name(field1,field2,...,fieldN) VALUES (valueA1,valueA2,...,valueAN),(valueB1,valueB2,...,valueBN);

注意事项:

  • 如果字段是字符型,值必须适用单引号或者双引号,如"value";如果值本身就有引号,需要转义
  • 如果所有列都要添加数据,insert into 语句可以不指定列,即INSERT INTO table_name VALUES (valueA1,valueA2,…,valueAN);
  1. 掌握如何修改(更新)表中的数据
    updata语法:
UPDATE table_name SET field1=newValue1,field2=newValue2[WHERE Clause]

注意事项:

  • 可以同时更新一个或多个字段
  • 可以通过where子句来指定更新范围,如果不带where,则更新数据表中所有记录。
updata contacts set phone='12345678901' where name = "张三"
  1. 掌握如何删除表中的数据
    delete from table_name [WHERE Clause]
    注意事项:
  • 可以通过where子句来指定删除范围,如果不带where,则删除数据表中所有记录

示例总结:
建表

create table contacts(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30),
sex tinyint default 1,
phone VARCHAR(20)
) ENGINE = InnoDB DEFAULT CHARSET=utf8;

插数据

insert into contacts(name,sex,phone) values("张三",1,"13200000001")
insert into contacts(name,sex,phone) values("xiong\'s",1,"13200000002")
// 有默认值的字段,可以不赋值也行的哈~
insert into contacts(name,sex,phone) values("李四",1,"13200000003"),("王五",1,"13200000004");

修改(更新表)

update contacts set sex = 2;updata contacts set sex = 1 where name="张三";updata contacts set sex = 2, phone="13200000005" where name="张三";

删除表内容

delete from contacts where id =4;
delete from contacts;
  1. 了解什么是数据的完整性(准确性、正确性)
    数据完整性是指存储在数据库中的数据,应该保持一致性和可靠性
    关系模型允许定义三类数据约束,他们是事提完整性、参照完整性、以及用户定义的完整性约束、其中前两种完整性约束由关系数据库系统自动支持
  • 实体完整性: 实体就是现实世界中的某个对象,RDBMS中一行代表一个实体,实体完整性就是保证每一个实体都能被区别
  • 域完整性: 域完整性主要是对列的输入有要求,通过限制列的数据类型、格式或值的范围来实现
  • 参照完整性: 主要是表与表之间的关系、可以通过外键来实现
  • 用户自定义完整性: 借助存储过程和触发器实现
  1. 掌握如何保证数据完整性(重点)

实体完整性: 要求每张表都有唯一标识符,每张表中的主键字段不能为空且不能重复
域完整性: 针对某一具体关系数据库条件,保证表中某些列不能输入无效值
约束方法: 限制数据类型、检查约束、默认值、费控约束
参照完整性: 要求关系中不允许引用不存在的实体
用户自定义完整性: 反应某一具体应用所涉及的数据必须满足语义要求。

唯一性约束
在Mysql中可以适用关键字UNIQUE实现字段的唯一性约束,从而保证实体完整性

  • unique意味着任何两条数据的同一个字段不能有相同值
  • 一个表中可以有多个unique约束
create table person(
id int not null auto_increment primary key comment "主键id",
name varchar(30) comment "姓名",
id_number varchar(18) unique comment "身份证号"
);

外键约束
外键(FOREIGN KEY)约束定义了表之间的一致性关系,用于强制参照完整性。外键约束定义了对同一个表或者其他表的列的引用,这些列具有PRIMARY KEY 或者 UNIQUE约束。

# 学生表
create table stu(
stu_no int not null primary key comment "学号",
stu_name varchar(30) comment '姓名'
);
# 成绩表
create table sc(id int not null auto_increment primary key comment "主键id",stu_no int not null comment "学号",course varchar(30) comment "课程",grade int comment "成绩",foreign key(stu_no) references stu(stu_no)
);

数据库与表的基本操作

  1. 了解select的完整语法
select column_name1,column_name2
from table_name
[where where_condition]
[group by {col_name | expr | position},...[with rollup]]
[having where_condition]
[ORDER BY {col_name | expr |position} [ASC | DESC],...[WITH ROLLUP]]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
  1. 掌握适用select进行简单查询(重点)
    查询所有
select * from person

条件查询

select name, id_number from person
select name,id_num from from person where name="张三";

工具用法 (科普):

select 8*9;
  1. 熟练掌握where子句各类运算符的适用
    在sql中,insert、updata、delete和select后面都能带where子句,用于插入、删除、修改或查询指定条件的记录

sql语句中适用where子句用法

select column_name from table_name where column_nam 运算符 value
运算符 描述
= 等于
<>或!= 不等于
> 大于
< 小于
>= 大于等于
>= 小于等于
between and 选取介于两个值之间的数据范围;在Mysql中,相当于>=并且<=
  1. 熟练掌握多条件查询and、or的适用
    在where子句中,适用and、or可以把两个或多个过滤条件结合起来

and、or运算符语法

select column_name from table_name where condition1 and condition2 or condition3
运算符 描述
and 表示左右两边的条件同时成立
or 表示左右两边只要有一个条件成立

案例演示:

use mydb;create table employee(id int not null auto_increment primary key,name varchar(30) comment "姓名",sex varchar(1) comment "性别",salary int comment "薪资(元)"
);insert into employee(name,sex,salary) values("张三",'男',5500);
insert into employee(name,sex,salary) values("李洁",'女',4500);
insert into employee(name,sex,salary) values("李小梅",'女',4200);
insert into employee(name,sex,salary) values("欧阳辉",'男',7500);
insert into employee(name,sex,salary) values("李芳",'女',8500);
insert into employee(name,sex,salary) values("张江",'男',6800);
insert into employee(name,sex,salary) values("李四",'男',12000);
insert into employee(name,sex,salary) values("王五",'男',3500);
insert into employee(name,sex,salary) values("马小龙",'男',6000);
insert into employee(name,sex,salary) values("龙五",'男',8000);
insert into employee(name,sex,salary) values("冯小芳",'女',10000);
insert into employee(name,sex,salary) values("马小花",'女',4000);# 单条件查询男性工资
select * from employee where sex = "男";
select * from employee where sex != "女";
select * from employee where sex <> "女";
select * from employee where salary >= 10000;
select * from employee where salary between 10000 and 12000;# 多条件,性别为男并且薪资大于等于10000
select * from employee where sex = "男" and salary >=10000;# 多条件,男性员工中,大于10000 或者 小于4000
select * from employee where sex = "男" and salary <=4000 or salary >=10000;
# 以上错误写法 or作用域它左右两边
select * from employee where sex = "男" and (salary <=4000 or salary >=10000);
  1. 掌握运算符in 的使用
    运算符in允许我们在where子句中过滤某个字段的多个值

where 子句中使用in语法

select column_name from table_name where column_name in (value1,value2,...)
  1. 掌握运算符like的使用

where子句使用like语法

select column_name from table_name where column_name like "%value%"

说明:
- like子句中的%类似于正则表达式中的*,匹配任意0个或多个字符
- like子句中的_匹配任意单个字符
- like子句如果没有%和_就相当于运算符=的效果

示例代码:

# 选择id是1或者2或者3的
select * from emplyee where id=1 or id=2 or id=3;
select * from emplyee where id in(1,2,3);
#筛选张三
select * from emplyee where name like "张三";
# 筛选姓李的用户
select * from emplyee where name like "李%";
# 筛选名字芳结尾的
select * from emplyee where name like "%芳";
  1. 了解Mysql内置函数
    我们通常说的Mysql函数指的是Mysql数据库提供的内置函数,包括数学函数,字符串函数,日期和时间函数,聚合函数条件判断函数等,这些内置函数可以帮助用户更加方便地处理表中的数据,简化用户操作
函数 描述
数学函数 ABS、SQRT、MOD SIN COS TAN COT等
字符串函数 length lower upper trim substring
日期时间函数 now curdate curtime sysdate data_format yera month week
聚合函数 count sum avg min max
条件判断函数 if ifnull case when 等
系统信息函数 version database user等
加密函数 md5
  1. 掌握常用函数的用法(重点)

函数now()

应用场景:
在实际应用中,大多数业务表都会带一个创建时间,create_time字段,用于记录每一条数据的产生时间,在向表中插入数据时,就可以在insert语句中使用now()函数

inser into user(id,name,create_time) values(1,"zhangsan",now());

date_format()
应用场景:
在实际应用中,一般会按标准格式存储日期/时间,如:2020-05-26 20:41:16. 在实际的查询中,又可能有其他的格式要求,这时候就需要采用date_format()函数进行格式转换。
select name,date_format(birthday,'%Y%m%d') from user;
聚合函数
聚合函数是对一组值进行计算,并返回单个值。
Mysql常用的聚合函数有5个,分别count、sum、avg、min和max.

函数 | 描述
--- | ---
count | 返回复核条件的记录总数
sum | 返回指定列的总和,忽略空值
avg | 返回指定列平局值,忽略空值
min | 返回指定列的最小值, 忽略空值
max | 返回指定列的最大值,忽略空值

示例代码:

# 男性数据有多少条
select count(*) from employee where sex = '男';
# 员工表里面的总薪资
select sum(salary) from employee;
# 最低薪水
select min(salary) from employee;
# 平均薪资
select avg(salary) from employee;

如果有一条数据的工资为NULL它会自动把这条数据整体过滤掉。

ifnull()

函数ifnull()用于处理NULL值
ifnull(v1,v2)如果V1的值不为NULL,则返回v1否则返回V2.

示例代码:

insert into employee(name,sex,salary) values("张熊","男",null);

case when

case when 是流程控制语句,可以在sql语句中使用case when来获取更加准确和直接的结果,sql中的case when类似于编程语句中的if else 或者switch

case [col_name] when [value1] then [result1]...else [default] end
case when [expr] then [result1]...else[default] end

select id,name,case sexwhen '男' then 'F'when '女' then 'M'else ''end as sex, salary from employee;
  1. 掌握排序的应用场景以及order by的使用
    我们已经掌握使用select语句结合where查询条件获取需要的数据,但是在实际应用中,还会遇到下面这类需求,又该如何解决?
  • 学生按升高从高到低进行排序
  • 双十一交易量排行榜
  • 博客中的文章按先后顺序显示
    在sql中,使用order by对查询结果集进行排序,可以按照一列或多列进行排序

order by语法

select column_name1,column_name2 from table_name1,table_name2 order by column_name,column_nam [asc|desc]

说明: asc表示按升序排列,desc表示按降序排列
默认情况按升序排列

示例sql:

select * from employee order by salary desc;
# 按两个字段进行排序
select * from employee order by sex,salary desc;
# 以上就是说 先按性别排序,就会先显示女再显示男,然后再按薪水排序,整体出现的情况,先按薪资从大到小显示女员工信息,再按薪资从大到小显示男员工薪资。
  1. 掌握分页的应用场景以及limit的使用
    在select语句中使用limit子句来约束要返回的记录数,通常使用limit实现分页

limit语法

select column_name1,column_name2
from table_name1,table_name2
limit [offset,]row_count

说明: offset指定要返回的第一行的偏移量,第一行的偏移量是0,而不是1.row_count指定要返回的最大行数。这个offset对于新手来讲,这个偏移量的说法很不友好我感觉,反正我第一次没理解出来,就是从第几条数据开始读,读多少条。 第一页开始每页显示10条 limit 0,10

示例sql:

# 获取前3条数据
select * from employee limit 3;
# 分页每页显示5条,显示第一页
select * from employee limit 0,5;
# 分页每页显示5条,显示第二页
select * from employee limit 5,5;
# 分页显示每页显示5条,显示第三页
select * fromm employee limit 10,5;
  1. 掌握group by 的应用场景及使用
    我们已经掌握使用select语句结合where查询条件获取需要的数据,但在实际的应用中,还会遇到下main这类需求,又该如何解决:
  • 公司想知道每个部门有多少名员工
  • 班主任想统计各科第一名的成绩
  • 某门店想掌握男、女性会员的人数及平局年龄
    从字面上理解,group by表示根据某种规则对数据进行分组,它必须配合聚合函数进行使用,对数据进行分组之后需要进行count、sum、avg、max和min等聚合运算

group by语法

select column_name,aggregate_function(column_nam) from table_name group by column_name
  1. aggregate_function表示聚合函数。

  2. group by可以对一列或多列进行分组。

  3. 掌握having的应用场景及使用
    在sql中增加having子句的原因是,where关键字无法与聚合函数一起使用,having子句可以对分组后的各组数据进行筛选

having语法

select column_name,aggregate_function(column_name)
from table_name
where column_name operator value
group by column_name
having aggregate_function(column_name) operator value

示例sql:

# 把原有的employee表删除了,创建这个表
create table employee(id int not null auto_increment primary key,name varchar(30) comment "姓名",sex varchar(1) comment "性别",salary int comment "薪资(元)",dept varchar(30) comment "部门"
);
insert into employee(name,sex,salary,dept) values("张三", "男", 5500, "部门A");
insert into employee(name,sex,salary,dept) values("李洁", "女", 4500, "部门C");
insert into employee(name,sex,salary,dept) values("李小梅", "女", 4200, "部门A");
insert into employee(name,sex,salary,dept) values("欧阳辉", "男", 7500, "部门C");
insert into employee(name,sex,salary,dept) values("李芳", "女", 8500, "部门A");
insert into employee(name,sex,salary,dept) values("张江", "男", 6800, "部门A");
insert into employee(name,sex,salary,dept) values("李四", "男", 12000, "部门B");
insert into employee(name,sex,salary,dept) values("王五", "男", 3500, "部门B");
insert into employee(name,sex,salary,dept) values("马小龙", "男", 6000, "部门A");
insert into employee(name,sex,salary,dept) values("龙五", "男", 8000, "部门B");
insert into employee(name,sex,salary,dept) values("冯小芳", "女", 10000, "部门C");
insert into employee(name,sex,salary,dept) values("马小花", "女", 4000, "部门B");
insert into employee(name,sex,salary,dept) values("张熊", "男", 8800, "部门A");# 男性员工和女性员工的数量
select sex,count(*) from employee group by sex;
# 统计每个部门的人数
select dept,count(*) from employee group by dept;
# 知道每个工资薪水总和
select dept,sum(salary) from employee group by dept;
# 每个部门薪资最高的
select dept,max(salary) from employee group by dept;
# 每个部门薪资最低
select dept,min(salary) from employee group by dept;
# 人数小于4个人的部门
select dept,count(*) from employee group by dept having count(*)<5;
  1. 属性group_concat的应用场景
    应用场景:
  • 使用group by可以分组统计每个部门有多少员工。加入,除了统计每个部门的员工数量之外,还想知道具体是哪些员工(员工列表),又该怎么实现呢?
  1. 掌握group_concat的使用

group_concat

group_concat配合group by一起使用,用于将某一列的值按指定的分隔符进行拼接,mysql默认的分隔符是逗号

select dept,group_concat(name) from employee group by dept;
  1. 掌握distinct的用法
    distinct用于在查询中返回列的唯一不同值(去重复),支持单列或多列。在实际的应用中,表中的某一列含有重复值是很常见的,如employ表的dept列.如果在查询数据时,希望得到某列的所有不同值,可以使用distinct
#distinct语法
select distinct column_name,column_nam
from table_name;

sql示例:

# 性别这列去重
select distinct sex from employee;create table footprint(id int not null auto_increment primary key,username varchar(30) comment '用户名',city varchar(30) comment "城市",visit_date varchar(10) comment "到访日期"
);insert into footprint(username, city, visit_date) values("liufeng", "贵阳", "2019-12-05");
insert into footprint(username, city, visit_date) values("liufeng", "贵阳", "2020-01-15");
insert into footprint(username, city, visit_date) values("liufeng", "北京", "2018-10-10");
insert into footprint(username, city, visit_date) values("zhangsan", "上海", "2020-01-01");
insert into footprint(username, city, visit_date) values("zhangsan", "上海", "2020-02-02");
insert into footprint(username, city, visit_date) values("lisi", "拉萨", "2016-12-20");# 有多少用户在footprint留下足迹
select distinct username from footprint;
# 所有的用户达到过哪些城市
select dictinct city from footprint;
# 每一个用户去过哪些地方
select distinct username,city from footprint;
  1. 熟悉表连接的几种方式
    表连接(join) 是在多个表之间通过一定的连接条件,使表之间发生关联,进而能从多个表之间获取数据

表连接语法

select table1.column,table2.column from table1,table2 where table1.column1 = table2.column2;
  1. 熟悉几种表连接的区别
  • 内连接 join 或inner join
  • 外连接:左连接 left join,右连接 right join 全连接 full join
  • 自然连接:同一张表内的连接
连接类型 定义 例子
内连接 至连接匹配的行 select A.c1,B.c2 from A join B on A.c3 = B.c3
左连接 包含左表的全部行(不管右表是否存在与之匹配的行), 以及右表中遍布匹配的行 select A.c1,B.c2 from A left join B on A.c3 = B.c3
右连接 包含右表的全部行(不管左表是否存在与之匹配的行), 以及左表中遍布匹配的行 select A.c1,B.c2 from A right join B on A.c3 = B.c3
全连接 包含左右两个表的全部行(不管在另一个表中是否存在与之匹配的行) select A.c1,B.c2 from A full join B on A.c3 = B.c3

全连接: mysql里面无

  1. 掌握多表连接查询
# 创建两张表
drop table if exists score;
drop table if exists student;create table student(
stu_no varchar(20) not null primary key comment"学号",
name varchar(30) comment "姓名",
address varchar(150) comment '地址'
);
insert into student(stu_no,name,address) values('2016001','张三','贵州贵阳');
insert into student(stu_no,name,address) values('2016002','李芳','陕西兴平');
insert into student(stu_no,name,address) values('2016003','张晓燕','江西南昌');create table score(
id int not null auto_increment primary key,
course varchar(50) comment '科目',
stu_no varchar(20) comment "学号",
score int comment '分数',
foreign key(stu_no) references student(stu_no)
);insert into score(course,stu_no,score) values('计算机','2016001',99);
insert into score(course,stu_no,score) values('离散数学','2016001',85);
insert into score(course,stu_no,score) values('计算机','2016002',78);# 表的数据特性,有个叫张晓燕 2016003的没成绩# 内连接(交集)
select A.stu_no,A.name,B.course,B.score
from student A
join score B on(A.stu_no = B.stu_no);
select A.stu_no,A.name,B.course,B.score
from student A
inner join score B on(A.stu_no = B.stu_no);
select A.stu_no,A.name,B.course,B.score
from student A
where A.stu_no = B.stu_no;# 左连接
select A.stu_no,A.name,B.course,B.score
from student A left join score B on(A.stu_no = B.stu_no);
  1. 什么是自连接
    自连接时一种特殊的表连接,它是指互相连接的表在物理上同为一张表,但是逻辑上时多张表。自连接通常用于表中的数据有层次结构,如区域表、菜单表、商品分类等。

自连接语法

select a.column,b.column
from table a,table b
where a.column=b.column;

示例sql:

drop table if exists area;
drop table if exists area;create table area(
id int not null auto_increment primary key comment '区域id',
pid int not null comment '父id(0-省份)',
name varchar(30) comment '区域名称'
);insert into area(id,pid,name) values(1,0,'贵州省');
insert into area(id,pid,name) values(2,1,'贵阳');
insert into area(id,pid,name) values(3,1,'遵义');
insert into area(id,pid,name) values(4,0,'广东省');
insert into area(id,pid,name) values(5,4,'广州');
insert into area(id,pid,name) values(6,4,'深圳');# 查出所有城市
select * from area where pid<>0;
# 查出这些城市的父亲id
select A.id,A.name,B.name ad provinceName
from area A, area B
where A.pid = B.id and A.pid<>0;
  1. 掌握子查询in的使用
    之前的课程中,我们已经学习过运算符IN,它允许我们在where子句中过滤某个字段的多个值。

where子句使用in语法

select column_name from table_name where column_name IN(value1,value2,...);

如果运算符in后面的值式来源于某个查询结果,并非是指定几个值,这时就需要用到子查询。子查询又称为内部查询或嵌套查询,即在sql查询的where子句中嵌套查询语句

子查询in语法

select column_name from table_name
where column_name IN(select column_name from table_name [where]
);
  1. 掌握子查询exists的使用
    exists是子查询中用于测试内部查询是否返回任何行的布尔运算符。将主查询的数据放到子查询中做条件验证,根据验证结果(TRUE 或FALSE)来决定主查询的数据结果是否保留

where子句使用exists语法

select column_name1
from table_name1
where exists (select * from table_name2 where condition);

示例sql:

# 看下student表数据
select * from score;# 要用in做一个子查询 查询所有选修了课程的学生
select A.*
from student A
where A.stu_no in(select B.stu_no from score B);# 查询选修了离散数学的学生
select A.*
from student A
where A.stu_no in (select B.stu_no from score B where B.course='离散数学')# 要用exists做一个子查询 查询所有选修了课程的学生
select A.*
from student A
where exists(select * from score B where A.stu_no = B.stu_no);
# 这个exists说一点个人的理解,先看子查询里面的东西,也就是说子查询查询出来了一个表,这个时候就是说,A表查询出来的数据,在查询出来的这个表中存在就能输出出来,不存在就不能输出。

持续更新,mysql的复习强化路相关推荐

  1. Mysql知识网络(持续更新)

    Mysql知识网络(持续更新) 前言 好记性不如烂笔头.最近学习了MYSQL的相关知识,方便以后复习以及知识点查询,记录一些知识点.本文通过基础知识+mysql优化+实战经验进行总结.也会分享一些自己 ...

  2. Mysql 知识点总结(持续更新)

    挺长一段时间没有动手写博客了,接下来的一段时间将对前段时间学的mysql做一次总结,内容比较多,将持续更新上来,贵在坚持啊~ 关于mysql的,这里不多说,看图说话: 上面的图是最新的统计情况,mys ...

  3. mysql参数积累 持续更新。。。

    mysql参数积累 持续更新... 以下是Mysql数据库服务器配置文件my.ini的详细配置.应用场合是InnoDB引擎,2核CPU, 32位SUSE. [client] #password = y ...

  4. 2018秋招心酸路---持续更新【面挂家】

    本来想着自己搭个博客记录一下秋招找工作的经历,无奈失败,还是在这记录一下吧.... 1.百度度秘部门 GG 现场面:找学长内推的: 一面:聊简历,扯项目:写了个快排,字符串翻转:聊了一些Linux命令 ...

  5. mysql查询更新优化_mysql查询优化(持续更新中)

    1.索引不会包含有NULL值的列 (1)   应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描 (2)   数据库设计时不要让字段的默认值为null,可以 ...

  6. mysql字段超长会报错吗_MySQL使用过程中的报错处理(持续更新)

    MySQL使用过程中的报错处理(持续更新) 一.数据库初始化 1.Percona的MySQL 5.6.20版本数据库初始化 初始化命令(MySQL 5.6版本不适用mysqld命令进行初始化) ./s ...

  7. 【干货】AI顶会NeurlPS-2019强化学习方向论文速递(附链接):Github持续更新中...

    点击上方蓝色字体,关注:决策智能与机器学习,每天学点AI干货 前言 AI自媒体深度强化学习实验室对NeurIPS(前称NIPS)2019年深度强化学习方向的论文做了较为全面的整理和解读,并发布于Git ...

  8. 《财富自由之路》——博多.舍费尔(持续更新中)2020-11-05

    <财富自由之路>--博多.舍费尔(持续更新中) 重新定义金钱的概念 自我分析财务状况 创造奇迹 你真正想要的是什么 责任意味着什么 重新定义金钱的概念 人应该热爱财富,同样有义务创造财富. ...

  9. mysql常用操作(亲测自用,持续更新...)

    文章目录 一.使用客户端新建数据库 1.字符集 1.1 字符集作用 1.2 常用选择 2.排序规则 2.1 排序规则作用 2.2 常用选择 二.常用SQL基础知识 1.什么是方言? 2.SQL书写规范 ...

最新文章

  1. Python大神用的贼溜,9个实用技巧分享给你
  2. 07机器学习实战k-means
  3. 浅析那些你不知道的提升企业网站转化率的SEO优化技巧 !
  4. TensorRT学习笔记4 - 运行sampleGoogleNet
  5. u盘在磁盘管理可以显示 但是电脑中找不到_关于U盘你不知道的一些知识
  6. [FFmpeg] Ubuntu 16.04 安装 FFmpeg
  7. mysql数据库工程师考证题_100道MySQL常见面试题总结
  8. bat 复制文件夹_新建366个文件夹,你用了2小时,我使用excel与bat命令1分钟搞定...
  9. Oracle Crystal ball 11.1.* 注册码
  10. 身份证前六位地址验证
  11. Java解压压缩包(zip/rar/7z)
  12. 固态硬盘在IDE、AHCI模式下的速度对比
  13. scrapy爬取京东所有图书
  14. HDU6184 Counting Stars(三元环计数)
  15. .pcd文件转换为.ply文件
  16. 百度地图总结第三篇之定位(我的位置)
  17. 常见支持linux平台的应用软件
  18. JVM性能调优5_编写高效优雅Java程序__享学课堂
  19. 共轭梯度法求解线性方程组Ax=b(附代码)
  20. 令牌桶算法和漏桶算法之间的那些事

热门文章

  1. 网易云音乐——Web学习day6
  2. Homebrew进阶使用教程(二)-用一个命令行天气客户端构建自己的仓库
  3. 设计师都爱用的UI标注软件有哪些?
  4. OpenGL + Win32 SDK 开发框架的搭建(C语言版)
  5. Euro-NCAP 2030愿景
  6. 压力换算公斤单位换算_压力单位转换器_压力换算器 百分百好站
  7. 基于天猫订单的数据分析
  8. 智慧园区一体化信息管理平台设计方案
  9. 计算机英语感想1500,英语教学的心得体会1500字
  10. WIN10+VS2015部署PanddleOCR