当前位置: 首页 > news >正文

3、数据库的基础学习 下

DML 语言



数据操作语言:

插入:insert

修改:update

删除:delete


一、插入语句

方式一的语法:

​ insert into 表明(列名,…) value(值 1,…)

-- 案例
INSERT into beauty (id,NAME,sex,borndate,phone,photo,boyfriend_id)
value(13,'Jacsk','男','1990-4-23','111','null',2);

SELECT * from beauty;

方式二 语法:

​ insert into 表明

​ set 列名= 值,列名=值,…

insert into beauty
set id=19,name='kcw',phone='000'

两种插入方式比较:

​ 方式一支持插入多行,方式二不支持

​ 方式一支持子查询,方式二不支持

​ 方式二看着更直白,不容易出错


二、修改语句

1、修改单表的记录(重点)

​ 语法:

​ update 表明

​ set 列=新值,列=新值…

​ where 筛选条件:

# 修改单表记录
-- 案例:修改 beauty 中的姓柳的电话为 1123213

UPDATE beauty set phone=1123213
where name like '%柳%';

2、修改多表的记录(补充)

​ 语法(sql92):

​ update 表 1 别名,表 2 别名

​ set 列=新值,列=新值…

​ where 连接条件

​ and 筛选条件;

语法(sql99):

​ update 表 1 别名

​ inner|left|right join 表 2 别名

​ on 连接条件

​ set 列=新值,列=新值…

​ where 筛选条件

-- 修改张无忌的女朋友的手机号为 114
update boys bo
inner join beauty b on bo.id=b.boyfriend_id
set b.phone=114
where bo.boyName='张无忌';

三、删除语句

方式一: delete

​ 语法

1、单表删除

​ delete from 表名 where 筛选条件

2、多表的删除

sql92语法

​ delete 别名

​ from 表 1 别名,表 2 别名

​ where 连接条件

​ and 筛选条件

sql99 的语法:

​ delete 表 1 的别名,表 2 的别名

​ from 表 1 别名

​ inner|left|right join 表 2 别名 on 连接条件

​ where 筛选条件

方式二:truncate

语法: truncate table 表名;

这个是清空

delete 与 truncate 的比较

1、delete 可以加 where 条件,truncate 不能加

2、truncate 删除,效率会高一些

3、假如要删除的表中有自增长列

​ 用 delete 删除后,再插入数据,自增长列的值从断点开始

​ 而用 truncate 删除后,再插入数据,自增长列的值从 1开始

4、truncate 删除没有返回值,delete 删除会后返回值

5、truncate 删除不能回滚,delete 删除可以回滚



DDL语言


数据定义语言

库和表的管理

内容速览:

一、库的管理

​ 创建、修改、删除

二、表的管理

​ 创建、修改、删除

创建:create

修改:alter

删除:drop


一、库的管理

​ 1、库的创建

语法:

create database [if not exists] 库名;
-- 案例创建 Books 库
create database Books;

​ 2、库的修改(已经弃用了)

alter database books CHARACTER set gbk;

​ 3、库的删除

DROP  DATABASE if exists books

二、表的管理

1、表的创建

	create table 表名(
  	列名 列的类型【(长度)约束】,
    列名 列的类型【(长度)约束】,
    列名 列的类型【(长度)约束】,
    列名 列的类型【(长度)约束】,
    ....
    列名 列的类型【(长度)约束】
  );

2、表的修改

/*
可以修改:列名、列的类型或约束; 
添加新列
删除列
修改表名
*/

alter table book change column publishdate pubDate DATETIME;#修改列名

alter table book mo=ify column pubdate TIMESTAMP; #修改列的类型或约束

alter table author add column annual DOUBLE;#添加新列

alter table author drop column annual; #删除列

alter table author rename as book_author #修改表名

总结:格式
alter table 表明 add|drop|modify|change column 列名 [列类型 约束]

3、表的删除

DROP TABLE book_author;
show tables;#查看当前数据库的所有表

4、表的复制

#1、仅仅复制表的结构
CREATE TABLE copy like author;

#2、复制表的结构+数据
create table copy2
select * from author;

#3、只复制部分数据
create table copy3
select id, au_name
from author
where nation='中国';


#仅仅复制某些字段
CREATE TABLE copy4
SELECT id,au_name
from author
where 0;

常见约束

含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性

​ 分类:

六大约束: NOT NULL:非空,用于保证该字段的值不能为空。比如姓名、学号等

​ DEFAULT:默认,用于保证该字段有默认值,比如性别

​ PRIMARY KEY: 主键,用于保证该字段的数据 具有唯一性,并且非空。比如:学号、员工编号

​ UNIQUE:唯一,用于保证该字段的道具有唯一性,可以为空

​ CHECK:检查约束【mysql中不支持】

​ FOREIGN KEY 键:用于限制两个表的关系,用于保证该字段的值必须来自主表的关联列的值

添加约束的时机:

​ 1、创建表时

​ 2、修改表时

约束的添加分类:

列级约束: 六大约束语法上都支持,但外键约束没有效果

​ 表级约束:除了非空、默认,其他的都支持。 放在最后 用关键字 【constraint 约束名】 约束类型(字段名)

主键和UNION的对比
两者都可以保证唯一性。主键、union 都可以允许组合键 但是不推荐
主键部位空,唯一 可以为空(只允许一个 null);

一个表中至多一个主键,但可以有多个 union

外键::1、要求在从表设置外键关系

2、从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求

3、主表的关联列必须是一个 key(一般是主键或者唯一)

4、插入数据时,先插入主表、再插入从表

删除数据时,先删除从表,再删除主表



标识列(又称为自增长列)

概念:可以不同手动的插入值,系统提供默认的序列值

在要添加的列后面加 auto_increment 即可


TCL (Transaction Control Language):事务控制语言


事务:一个或一组 sql 语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行,如果单元中某条 sql 语句一旦执行失败或产生错误,整个单元就会回滚

事务的 ACID 属性:1、原子性(Atomicity):一个事务不可再分割,要么都执行,要么都不执行

​ 2、一致性(Consistency):一个事务执行会使数据从一个一致状态切换到另一个一致状态

​ 3、隔离性(Isolation):一个事务的执行不收其他的事务影响

​ 4、持久性:一个事务一旦提交,则会永久的改变数据库的数据

事务的创建

隐式事务:事务没有明显的开启或结束的标记。比如:insert\update\delete 语句

显式事务:事务具有明显的开启或结束的标记。前提必须先设置自动提交功能禁用

#步骤:1 开启事务
set autocommit =0;
start transaction; -- 可选
#步骤 2 编写事务中的 sql 语句(select insert update delete)
语句 1;
语句 2;
...
#步骤 3:结束事务;
commit;提交事务
rollback;回滚事务

事务的隔离级别:

脏读不可重复性幻读
read uncommitted
read committedNoyeahYeah
repeatable readnonoyeah
serializablenonono

MySQL默认是 repeatable read

ORACLE中 默认是 read commited

查看隔离级别: select @@tx_isolation;

设置隔离级别: set session |gloval transaction isolation level 隔离级别



视图


一、视图的概念与优势:多个场景用到了相同的语句,可以把它封装成视图,从而简化复杂的sql操作,不必知道查询的细节,同时保护了数据,提高了安全性

创建视图的语法
create view 视图名
as 
查询语句;

二、视图的修改

视图的修改方式
create or replace view 视图名

方式二:
alter view 视图名
as 
查询语句;


三、删除视图

语法
drop view 视图名,视图名,视图名....

四、查看视图

DESC 视图名;

或者

SHOW CREATE VIEW myv3;



相关文章:

  • Vue.js常见问题及解决方案
  • JVM并发编程AQSsync锁ReentrantLock线程池ThreadLocal
  • 利用Java爬虫根据关键词获取商品列表:实战指南
  • 人工智能与网络信息技术的深度融合
  • ⭐算法OJ⭐汉明距离【位操作】(C++ 实现)Total Hamming Distance
  • 【Python】Linux 升级 Python 版本(源码安装)
  • nginx中忽略已.开头的文件
  • 解锁 vue-property-decorator 的秘密:Vue 2 到 Vue 3 的 TypeScript 之旅!✨
  • 汇编语言 | 王爽 | 学习笔记
  • MambaTab:表格数据处理的新利器
  • linux Centos7 遗忘root用户密码
  • 计算机网络基础:NAT 网络地址转换
  • Java中队列(Queue)和列表(List)的区别
  • DICT领域有哪些重要的技术标准和规范?
  • MySQL开发陷阱与最佳实践:第1章:MySQL开发基础概述-1.2 MySQL开发环境搭建
  • C语言_数据结构总结9:树的基础知识介绍
  • 安卓投屏到mac操作
  • UE5 控件反射器查找源码方法
  • win32汇编环境,网络编程入门之二
  • Java与Elasticsearch集成详解,以及使用指南
  • 新能源汽车,告别混乱创新
  • 智能手表眼镜等存泄密隐患,国安部提醒:严禁在涉密场所使用
  • 对话郑永年:我们谈判也是为世界争公义
  • 同济大学原常务副校长、著名隧道及地下工程专家李永盛逝世
  • 多省市已开展现房销售试点,去年全国现房销售面积占比超30%
  • 康子兴评《文明的追求》|野人脚印:鲁滨逊的恐惧与文明焦虑