数据库基本操作

数据库的整体框架

DQL:

数据查询语言(凡是带有select 关键字的都是查询语句)

​ select…

DML:

数据操作语言(凡是对表当中的数据进行增删改的都是DML)

​ insert 增

​ delete 删

​ update 改

DDL:

​ 数据定义语言(凡是带有 create drop alter 的都是DDL)

​ DDL 主要操作的是表的结构,不是表中的数据

TCL:

​ 事物控制语言

​ 包括:

​ 事物提交 commit

​ 事物回滚 rollback

DCL:

​ 数据控制语言

​ 例如 授权 grant 撤销权限 revoke

导入数据库

mysql > source +路径(不能带中文)

DDL

1、 数据库的创建:

create database [ if not exists] 数据库名称 [cahracter set 字符集];

2、查看数据库

show databases;  -- 查看所有的数据库
show create database  数据库名称;  --查看数据库定义信息
select database();   -- 查看当前正在使用的数据库
use 数据库名称  --使用数据库(切换数据库)

3、删除数据库

drop database 数据库名称

4、修改数据库

alter database 数据库名称 character set 字符集;  --修改数据库字符集

5、表的创建

create table 表名(字段名1 类型, 字段名2 类型.... );

6、查看表

show tables; -- 查看当前数据库中所有表
desc 表名   -- 查看表结构的字段信息
show create table 表名 -- 查看创建表的信息

7、删除表

drop table [if exists] 表名;

8、修改表

---------------表--------------=
rename table 表名1 to 表名2;  -- 修改表名
alter table 表名 character set 字符集 -- 修改字符集

-----------字段------------------
alter table 表名 add 字段名 类型; -- 添加字段
alter table 表名 modify 字段名 新的类型 -- 修改表的字段类型
alter table 表名 change 字段1 字段2 类型 -- 修改字段名
alter table 表名 drop 字段名 -- 删除字段
DML

1、添加数据

insert into 表名(字段1,字段2...) values(字段值1,字段值2...) -- 在表中添加数据

---------------简化格式------------------
insert into 表名 values(字段值1,字段值2...)  -- 全字段插入,字段值必须与字段顺序一致

2、修改数据

update 表名 set 字段名 = 新的值 , 字段名= 新的值.... -- 无条件更新全表(慎用)
update 表名 set 字段名= 新的值, 字段名 =新的值... where 条件 -- 按照条件更新表中的数据

3、删除数据

delete from 表名  -- 无条件删除全表(慎用)
delete from 表名 where 条件  -- 带条件删除

-----------truncate 和 delete----------
truncate table 表名  -- 先把整张表删除, 再重新创建一个新表,新表结构和原来一样
delete from 表名  -- 是将表中的数据一条一条删除,不影响表的结构

DQL

1、查询数据

select 字段名1,字段名2.... from 表名;  -- 查询指定列的数据
select * from 表名   -- 查询所有列数据

select 字段1 as 别名.... from 表名 as 别名; -- 可以进行别名查询

select  distinct 字段1,字段2.... from 表名  -- 去重查询

select 字段[+ - * / % ] 其他字段或固定值 from 表名 -- 查询结果参与运算

-----------蠕虫复制-----------

create table1 like2            -- 创建与表2一样的表1
insert into1 select* from2     -- 将表2的值全部赋给表1
insert into1 select* from1     -- 重复复制表1 

2、条件查询

select 字段1,字段2....fromwhere 条件 
---------范围查询-------------
select 字段1,字段2....fromwhere  字段 In(数据1,数据2...) 
select 字段1,字段2....fromwhere  字段 between1 and2

------------模糊查询-----------
select 字段1,字段2....fromwhere 字段名 like '通配符字符串'  -- % 0到 任意多个  _表示一个字符

------------排序查询------------
select 字段1,字段2....from[where 条件] order by 字段[asc 升序|desc 降序]  -- 单列排序
select 字段1,字段2....from[where 条件] order by 字段1[asc 升序|desc 降序] ,字段2 -- 组合排序

3、聚合函数

count(字段) -- 按照列统计行数据,
sum(字段)  -- 计算指定列的数值之和,非数值计算为0
max(字段)  -- 计算指定列的最大值
min(字段)  -- 计算指定列的最小值
avg(字段)  -- 计算指定列的平均值

语法: select 聚合函数(字段) from 表名

4、分组排序

select 字段, 聚合函数(字段) fromwhere 条件 group by 字段 [having 条件]

5、分页查询

select *from 表名 where 条件 limit offset, pageSize  --offset 本页起始位置 pageSize 要查询的记录数


----------分页查询的执行顺序-------
select 字段1,字段2,... from 表名 where 条件① group by 字段1,字段2having 条件 ③ order by 字段 ④ limit offset,row_count ⑤;

约束

1、主键约束 primary key (唯一, 非空)

create table 表名(id int primary key, 其他字段...);  -- 主键定义
alter table 表名 add primary key(字段)  -- 给字段添加主键(原来没有)
alter table 表名 drop primary key;   -- 删除主键
字段名 字段类型 primary key auto_increment   -- 主键自动增加
alter table 表名 auto_increment = 起始值  -- 让主键从给定的值自增(不常用)

2、唯一约束 unique (字段值唯一)

 create table 表名(字段名 字段类型 unique, .....);   -- 唯一定义 
 alter table 表名 add unique(字段)   -- 给字段添加唯一性(原来没有)

3、非空约束 not null (列值不能为null)

create table 表名(字段名 字段类型 not null, .....);   -- 非空定义 
alter table 表名 modify 字段类型 not null  -- 给字段添加非空性

***** 非空+唯一约束 与主键约束区别?

1、主键约束在表中只能存在一个,但非空+唯一可以存在多个

​ 2、主键可以添加自增约束,非空+唯一约束不能

​ 3、主键约束底层维护了一个主键索引,而唯一约束底层维护的是唯一索引

4、默认值约束 default (添加默认值)

create table 表名(字段名 字段类型 default 默认值, .....);   -- 默认约束定义 
alter table 表名 modify 字段 类型 default 默认值  -- 给字段添加默认值

表关系与外键约束

1、表关系

1、一对一
2、一对多
-- 1 为主表 多为从表  
-- 在从表添加一个字段,存在主表主键的值  --> 外键字段
-- 从表字段的值只能是主表中主键存在的值
3、多对多

2、外键约束

create table 表名(
	字段,
  	外键字段 intconstraint 外键名(约束名) foreign key(当前外键字段名) references主表名(主表主键);
);                           -- 外键约束创建

alter table 表名 add constraint 外键名 foreign key(当前外键字段名) references主表名(主表主键);                         -- 添加外键

alter table从表名 drop foreign key 外键名称;    -- 删除外键约束

**操作注意事项

​ 1、添加数据时

​ 先主后从

​ 2、删除数据时

​ 先从后主

​ 3、修改数据时

​ 如果主表的主键被从表引用了,不能修改此主键的值

​ 外键的级联

​ 级联:就是在修改或者删除主键时可以同时对从表的外键进行修改删除

	在后添加:

​ on update cascade; 更新

​ on delete cascade; 删除

多表查询

1、笛卡尔积

select *from1,表2....;

--消除笛卡尔积  从表.外键 = 主表.主键

2、内连接查询

select 列名 from 左表,右表  where 从表.外键 = 主表.主键   -- 隐式内连接

select 列名 from 左表[inner] join 右表  on 从表.外键 = 主表.主键   -- 显示内连接

3、外链接查询

select 列名 from 左表 left join 右表  on 从表.外键 = 主表.主键   -- 左外连接

select 列名 from 左表 right join 右表  on 从表.外键 = 主表.主键   -- 右外连接

4、子查询

--子查询就是将一个查询的结果做为另一个查询的条件,形成查询语句的嵌套,嵌套的SQL查询就是子查询,子查询语句需要使用括号括起来。

-- 单行单列
-- 如果子查询是单行单列,父查询使用比较运算符:> < =

--多行单列
-- 如果子查询是多行单列,可以认为是一个数组,父查询使用in、any 、all关键字

-- 多行多列
-- 如果子查询是多行多列,子查询可以认为它是一张虚拟表,可以使用表连接再次进行多表查询
-- **如果要访问子查询表的字段,需要为子查询表取别名,否则无法访问表中的字段



事务 Transaction

1、事务的操作

start transaction  -- 开启事务
commit     -- 提交事务
rollback    -- 回滚事务

2、事务的四大特性ACID

 -- 原子性(Atomicity)
 	-- 原子是不可分割的最小操作单位,事务要么同时成功,要么同时失败。

-- 一致性(Consistency)
	-- 事务操作前后,数据总量不变

-- 隔离性(Isolation)
	-- 多个用户并发的访问数据库时,一个用户的事务不能被其他用户的事务干扰,多个并发的事务之间要		  相互隔离

-- 持久性(Durability)
	--当事务提交或回滚后,数据库会持久化的保存数据

3、事务隔离级别

并发访问的问题含义
脏读一个事务读取到了另一个事务中尚未提交的数据。
不可重复读一个事务中多次读取时数据是不一致的,这是事务update时引发的问题;
幻读(虚读)一个事务内读取到了别的事务插入或者删除的数据,导致前后读取记录行数不同。这是insert或delete时引发的问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值