数据库基础和提升

在这里插入图片描述
sql语句

分类

DDL

data definition language 数据库定义语言:定义数据库对象:数据库、表、列

关键字create、drop、alter

DML

data manipulation language 数据操作语言 对数据库中表数据进行增删改

关键字 insert delete update

DQL

data query language 数据查询语言 查询数据库中标的记录

关键字 select where、等

DCL

data control language 数据库控制语言 定义数据库的访问权限和安全级别

关键字 grant、revoke

操作数据库和表
crud

c:create

r:retrieve===select查询

u:update

d:delete

主要语句

create database 数据库名 character setutf8:创建数据库

create table 表名(

列名 数据类型 约束,

列名 数据类型 约束,

列名 数据类型 约束

) 创建表

还有其他操作不是最重要的省略

操作表中的数据 增删改【重点】

insert into 表名 set (列名1,列名2…)values (值1,值2)–添加列 一般是省略列名 直接values 多个值对

update 表名 set 列名=值1,列名2=值2… where 条件 --修改列中的数据

delete from 表名 where 条件

操作表中的数据 查询【重点】

查询基础知识

select * from 表名–查询表中所有的数据

select 列名,列名 from 表名–查询指定列名中的数据

select distinct 列名 from 表名 --去除重复的列名

select 列名1(±*/)列名2 from 表名–列名之间还可以进行加减乘除 前提是要都是int型

select 列名 As 名称 from 表名–起别名 as关键字可以省略不写

条件查询

关键字where

语法:where 条件

符号:列出几个不常见的:

<> 或 != ----不等于

between and 在一个范围之内

in 多选一

like 占位符 比如:%表示任意多个字符 _表示任意一个字符

is null is not null

and或&&

or或||

not或!

举例子:select * from student where age>25;

聚合函数

max、min、count、sum、avg

语法 函数名(字段名)

举例:select max(age) from student;

分组查询

关键字 group by

语法 group by 字段

举例 select max(age) from student where sex=‘男’ group by sex;

注意事项:分组过后一般查询的字段是聚合函数或者分组字段

排序查询

关键字 order by

语法order by 字段名 排序规则(asc,desc)

举例:select * from student order by age asc;–默认是asc升序 可以不写

分页查询

关键字 limit

语法 limit 当前页的起始索引 一页展示的行数

比如:一页展示三行

第一页 limit 0 3

第二页 limit 3 3

第三页 limit 6 3

这些关键字的顺序还是从上往下的 聚合函数写在前面除外。

约束

主键约束

作用:表中数据的唯一标识

特点:非空和唯一

关键字 primary key

可以是单列的主键约束 也可以是多列的主键约束

– 删除主键约束

ALTER TABLE 表名 DROP PRIMARY KEY;

– 建表后单独添加主键约束

ALTER TABLE 表名 MODIFY 列名 数据类型 PRIMARY KEY;

主键自增约束

不用手动添加数据 数据库自动设置值 注意:只能是int类型的字段才能添加这个自增约束

关键字:primary key auto_increment

其余同上 只是要求int类型

唯一约束

作用:某一字段的数据不重复

关键字 unique

– 删除唯一约束

ALTER TABLE student DROP INDEX age;

– 建表后单独添加唯一约束

ALTER TABLE student MODIFY age INT UNIQUE;

非空约束

作用:保证数据不为null

关键字 not null

外键约束

作用:当一个表和另外一个表由关联的时候,需要用到外键约束

掌握

建表添加外键时:

语法:constraint 外键名 foreign key (本表外键名) reference 主表名(主表主键列名)

了解:

– 在建表后添加外键语法

alter table 表名 add constraint 外键名称 foreign key(外键列) references 主表(主键);

删除外键

alter table 表名 drop foreign key 外键名称;

外键级联操作

理解:就是主表关联的数据发生改变是从表中的关联数据也随之改变 牵一发动全身

– 添加外键级联更新、级联删除

– ON UPDATE CASCADE 级联更新

– ON DELETE CASCADE 级联删除

ALTER TABLE 从表 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键列) REFERENCES 主表(主键列) ON UPDATE CASCADE ON DELETE CASCADE;

多表查询

内连接

理解:取两个表中共有的部分 分显示和隐式

就记一个隐式语法: select * from 表1,表2

外连接

理解:可以取到一个表中的所有数据 另外一个表中有交集的数据,没有的数据就会取null

外连接 表1 left outer join 表2 取左边全部数据

边连接 表1 right outer join 表2 取右边全部数据

子查询

理解:一个查询语句嵌套一个查询语句

子查询的结果是单行单列

使用场景:子查询的结果是一行一列,可以将子查询的结果当做某一个字段的值,作为where子句的条件;

子查询的结果是多行单列

使用场景:子查询的结果是多行单列,可以将子查询的结果当做某一个字段的多个值,作为where子句的条件。

子查询的结果是多行多列

使用场景:子查询的结果是多行多列,可以将子查询的结果当做一个表来看待,并和其他表进行连接查询。

总结:子查询可以作为条件也可以作为虚拟表和其他表连接查询,如果是作为条件,那么子查询结果一定是单列的,如果子查询结果有多列,那么必须作为虚拟表和其他表连接查询。

自关联查询

概念

在同一张表中数据有关联性,我们可以把这张表当成多个表来查询。

视图

就是封装查询结果 虚拟表

创建视图:

create view 视图名称 (列名1,列名2)AS 查询语句

操作和表的操作差不多

数据库备份

见开篇图

存储存过程和存储函数

封装多个sql语句

创建存储过程

delimiter $

create procedure  存储过程名称(参数)

begin

	sql语句

end $

delimiter ;

delimiter 的作用:首先sql语句会用;表示所有的语句执行结束 存储过程中会有多个;所有我们可以用delimiter将结束标志修改为其他的 然后在最后换回常用的;
参数可以为
in :输入
out:输出
inout :既可以输入也可以输出

if语句的语法

IF  判断条件  THEN  条件满足需要执行的语句;
ELSEIF  判断条件  THEN  条件满足需要执行的语句;
...
ELSE  其他情况下需要执行的语句;
END IF;

while语句的语法

初始化语句;
WHILE 条件判断语句 DO
		循环体语句;
		条件控制语句;
END WHILE;	

调用存储过程

call 存储过程名称(参数)

存储函数

创建存储函数

DELIMITER $
CREATE  FUNCTION  函数名称(参数列表)  RETURNS 返回值类型
BEGIN
	SQL语句列表;
	RETURN结果;
END $
DELIMITER ;

存储过程和函数的区别

  1. 返回值不同
    存储函数必须有一个且必须只有一个返回值,并且还要指定返回值的数值类型。存储过程可以有返回值,也可以没有返回值,甚至可以有多个返回值。
  2. 两者赋值的方式不同:
    存储函数可以采用select …into …方式和set值得方式进行赋值,只能用return返回结果集。存储过程可以使用select的方式进行返回结果集。
  3. 使用方法不同:
    函数可以直接用在sql语句当中,可以用来拓展标准的sql语句。存储过程,需要使用call进行单独调用,不可以嵌入sql语句当中。
  4. 函数中函数体的限制较多,不能使用显式或隐式方式打开transaction、commit、rollback、set autocommit=0等。但是存储过程可以使用几乎所有的sql语句。

触发器 【了解】开篇图里面相应的内容即可

事务 【重点】掌握开篇图中相应的内容!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值