读《SQL经典实例》学数据库(系列一)

目录

  • 友情提醒
  • 第一章、数据库简述
    • 1.1)数据库简述
    • 1.2)常见的数据库软件
    • 1.3)MySQL数据库安装
  • 第二章、SQL语句分类
    • 2.1)操作数据仓库/数据表:DDL
      • 2.1.1)创建数据仓库/数据表
      • 2.1.2)删除数据仓库/数据表
      • 2.1.3)修改数据仓库/数据表
      • 2.1.4)查看数据仓库/数据表
    • 2.2)操作数据表中数据:DML
      • 2.2.1)增加数据(Insert)
      • 2.2.2)删除数据(Delete)
      • 2.2.3)修改数据(Update)
    • 2.3)查询数据表中数据DQL
      • 2.3.1)查询数据(Select)
    • 2.4)控制访问权限:DCL
      • 2.4.1)Grant授予权限
      • 2.4.2)REVOKE 撤销权限
    • 2.5)TCL(Transaction Control )
      • 2.5.1) BEGIN开始新的事务
      • 2.5.2)COMMIT提交当前事务
      • 2.5.3)ROLLBACK回滚事务
      • 2.5.4)SAVEPOINT创建保存点
      • 2.5.5) SET autocommit设置自动提交模式

友情提醒

先看文章目录,大致了解知识点结构,直接点击文章目录可以跳转到文章指定位置。

第一章、数据库简述

1.1)数据库简述

①数据库是什么:水库存水,数据库用来存各种各样的数据。使用数据库主要是为了方便使用SQL语句存储操作数据。
②数据库语言:用于访问和处理数据库的计算机语言。 它大部分是通用的,可适用几乎所有的数据库软件。每一个SQL语句都会有一个执行的结果。SQL语句不区分大小写,以;号结尾。

1.2)常见的数据库软件

①Oracle:收费很贵,适合中大型项目。
②MySql:免费!!!适合中小型项目,所以我们一般学习都用这个,毕竟SQL语言一通百通。
③DB2:收费,适合中大型项目。
④SqlServer:收费,适合中小项目。

1.3)MySQL数据库安装

安装篇幅比较长,看这篇就好点击这里跳转:MySQL数据库安装

第二章、SQL语句分类

2.1)操作数据仓库/数据表:DDL

DDL(Data Definition)数据定义语言,定义数据库结构,包括定义表、视图和索引。操作数据仓库和数据表本身。
语句关键词:

就是操作数据仓库和表
Create
Drop
Alter
Truncate

2.1.1)创建数据仓库/数据表

①创建数据仓库

-- 创建数据仓库,默认编码表为utf-8
-- 格式: create database 数据仓库名称。
create database db_name1;

-- 创建数据仓库,创建的同时设置编码表
-- 格式: create database 数据仓库名称 character set 编码表名。
create database db_name2 character set gbk ;

②创建数据表

-- 创建数据表,同时设置字段,数据类型和约束
-- 格式
/* create table 数据表名称(
    字段1 类型(长度) [约束],
    字段2 类型(长度) [约束],
    ....
    字段n 类型(长度) [约束] 
); */
use db_name1;
create table tableName1(
    sid int primary key auto_increment,# 主键约束 自增长
    sname varchar(10) comment '解释说明', # 会被编译的注释
    sex char(1) unique not null,# 唯一约束 非空约束
    age int unique default 8,# 唯一约束,默认值 8
    score double not null, # --,#是单行注释,/**/是多行注释
    birthday date
);

2.1.2)删除数据仓库/数据表

①删除数据仓库

-- 删除单个数据仓库
-- 格式 drop database 数据仓库名称;
drop database db_name1;

②删除数据表

-- 格式:drop table 数据表名称;
drop table tableName;

2.1.3)修改数据仓库/数据表

①修改数据仓库

-- 修改数据仓库编码表,注意写UTF-8的时候不要加-
-- 格式 alter database 数据仓库名称 character set 编码表名;
ALTER database db_name2 CHARACTER set UTF8;

-- 切换数据仓库
-- 格式 use 数据仓库名称;
use db_name1;

②修改数据表

-- 增加列
-- 格式:alter table 表名 add 字段 类型(长度) 约束; 
ALTER table tablename1 add newid int not NULL;

-- 修改现有列类型、长度和约束语法
-- 格式alter table 表名 modify 字段 类型(长度) 约束;
ALTER TABLE tablename1 MODIFY newid char(4) unique;

-- 修改现有列名称语法
-- alter table 表名 change 旧字段名 新字段名 类型(长度) 约束;
ALTER TABLE tablename1 CHANGE newid newname char(4) not null;

-- 删除现有列语法
-- alter table 表名 drop 字段;
ALTER TABLE tablename1 DROP newname;

-- 修改表的字符集语法 
-- alter table 表名 character set utf8;
ALTER TABLE tablename1 CHARACTER set gbk;

-- 修改表名语法
-- rename table 旧表名 to 新表名; 
RENAME TABLE tablename1 to tablename;

2.1.4)查看数据仓库/数据表

①查看数据仓库

-- 查看所有数据仓库
-- 格式:show databases;
show databases;

-- 查看数据仓库编码格式
-- 格式: show create database 数据仓库名称。
show create database databaseName;

-- 查看目前正在使用的数据仓库
-- 格式: SELECT DATABASE();
SELECT DATABASE();

②查看数据表

-- 查看数据表编码格式
--格式: show create table 数据表名称。
show create TABLE tableName1;

-- 查看数据表
show TABLES;

-- 查看数据表结构
desc tableName;

2.2)操作数据表中数据:DML

DML(Data Manipulation)数据处理语言,包括插入、删除和修改操作。
语句关键词:

就是增删改数据
Delete
Insert
Update

2.2.1)增加数据(Insert)

-- 添加数据第一种格式 当某列值可以为null,自增长或有默认值时可以省略
-- 格式:insert into 数据表名称 (字段1,字段2,...字段N) values (值1,值2,...值N);
insert into tablename(sid,sname,sex,age,score,birthday)values(3,'张一','男',23,89,'1204');
insert into tablename(sid,sname,sex,age,score,birthday)values(4,'张二','女',26,99,'1205');

-- 添加数据第二种格式
-- 格式:insert into 数据表名称 set 字段1=值1,字段2=值2,...字段N=值N;
insert into tablename set sid=5,sname='张三',sex='难',age=20,score=91,birthday='1209';
insert into tablename set sid=6,sname='张四',sex='♀',age=10,score=19,birthday='1200';

举例:

insert into b_pro_evaluate(pid,star,eval)values(1,3,'很好回收率很高');
insert into b_pro_evaluate(pid,star,eval)values(1,2,'非常不错的产品');
insert into b_pro_evaluate(pid,star,eval)values(2,5,'五星好评');

2.2.2)删除数据(Delete)

-- 按照行逐行删除整个表的数据但是表本身还存在
-- 格式: delete from 数据表名称;
delete from tableName;

-- 先删表,再建新表 效率高
truncate table student1;

-- 按条件删除表中数据
-- 格式:delete from 数据表名称 where 条件语句;
delete FROM tableName where sid=1;

删除表中的数据时没有加where 条件,会删除表中的所有数据,它与truncate 有什么区别?
delete删除表中的数据是按照行逐行删除。 效率低
truncate它是先把表删掉,然后再把表创建出来。 效率高

2.2.3)修改数据(Update)

-- 更新修改数据
-- 格式:update 数据表名称 set 字段1=新值,字段2=新值 where 条件语句; 

update tableName set age = 15;
update tableName set age = age + 10 where sid % 2 = 0;
update tableName set sname = "小冯",age = 22 where sid = 4;

2.3)查询数据表中数据DQL

(Data Query )数据查询语言,用于查询数据表中的数据,通过select关键字。
语句关键词:

就是查询数据
Select

2.3.1)查询数据(Select)

-- 查询整张表
-- 格式:select * from 数据表名称;
select * from tableName;

-- 按条件查询
-- 格式:select * from 数据表名称 where 查询条件;
select * from tableName where sid =4;

-- 按条件查询
-- 格式:select 字段1,字段2 ... from 数据表名称 where 查询条件;
select sname,age from tableName where sid =4;

2.4)控制访问权限:DCL

DCL(Data Control)数据控制语言,包括对数据的安全性控制、完整性规则的描述以及对事务的定义、并发控制和恢复。
语句关键词:

Grant
Revoke

2.4.1)Grant授予权限

①授予用户权限
username:要授予权限的用户名。
host:用户连接数据库的主机名(例如,localhost 或 % 表示任何主机)。
password:用户的密码。

--授予用户对所有数据库的所有权限
GRANT ALL PRIVILEGES ON *.* TO 'username'@'host' IDENTIFIED BY 'password';
--授予用户对特定数据库的所有权限
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
--授予用户对特定表的特定权限
GRANT SELECT, INSERT, UPDATE ON database_name.table_name TO 'username'@'host';
--授予用户创建数据库的权限
GRANT CREATE ON *.* TO 'username'@'host';
--授予用户执行存储过程和函数的权限
GRANT EXECUTE ON PROCEDURE database_name.procedure_name TO 'username'@'host';
GRANT EXECUTE ON FUNCTION database_name.function_name TO 'username'@'host';

2.4.2)REVOKE 撤销权限

撤销权限

--撤销用户对所有数据库的所有权限
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'username'@'host';
--撤销用户对特定数据库的所有权限
REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'host';
--撤销用户对特定表的特定权限
REVOKE SELECT, INSERT, UPDATE ON database_name.table_name FROM 'username'@'host';
--撤销用户创建数据库的权限
REVOKE CREATE ON *.* FROM 'username'@'host';
--撤销用户执行存储过程和函数的权限
REVOKE EXECUTE ON PROCEDURE database_name.procedure_name FROM 'username'@'host';
REVOKE EXECUTE ON FUNCTION database_name.function_name FROM 'username'@'host';

属性权限

--在授予或撤销权限后,最好刷新权限,以确保更改立即生效:
FLUSH PRIVILEGES;

2.5)TCL(Transaction Control )

事务控制语言,用于控制事务。
语句关键词:

BEGIN
Set transaction
Rollback
Savepoint
Commit

2.5.1) BEGIN开始新的事务

BEGIN或 START TRANSACTION开始新的事务

START TRANSACTION;

BEGIN;

2.5.2)COMMIT提交当前事务

COMMIT 用于提交当前事务,使事务中的所有更改永久生效。




START TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;

COMMIT;

2.5.3)ROLLBACK回滚事务

ROLLBACK用于回滚当前事务,撤销事务中的所有更改。如果事务中的任何操作失败,或者决定不保存更改,可以使用 ROLLBACK 撤销所有更改。这里使用了 ROLLBACK 而不是 COMMIT,意味着事务中的所有更改都不会被保存到数据库中。

START TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;

ROLLBACK;

2.5.4)SAVEPOINT创建保存点

SAVEPOINT用于在事务中创建一个保存点,允许回滚到该保存点而不是整个事务。

START TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
SAVEPOINT savepoint1;

UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;

-- 如果第二个更新失败,可以回滚到保存点
ROLLBACK TO savepoint1;

COMMIT;

2.5.5) SET autocommit设置自动提交模式

SET autocommit用于设置自动提交模式。默认情况下,MySQL 是自动提交的,即每个语句都会自动提交。

关闭自动提交:SET autocommit = 0; 关闭自动提交后,需要手动使用 COMMIT 或 ROLLBACK 来结束事务。
重新开启自动提交:SET autocommit = 1;

SET autocommit = 0;

UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;

COMMIT;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/956547.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VD:生成a2l文件

目录 前言Simulink合并地址 ASAP2 editor 前言 我之前的方法都是通过Simulink模型生成代码的过程中顺便就把a2l文件生成出来了,这时的a2l文件还没有地址,所以紧接着会去通过elf文件更新地址,一直以为这是固定的流程和方法,今天无…

Navicat Premium 数据可视化

工作区,数据源以及图表 数据可视化是使用可视化组件(例如图表,图形和地图)的信息和数据的图形表示。 数据可视化工具提供了一种可访问的方式,用于查看和理解数据中的趋势,异常值和其他模式。 在Navicat中&…

设置 Git 默认推送不需要输入账号和密码【Ubuntu、SSH】

如何设置 Git 默认推送不需要输入账号和密码 在使用 Git 管理代码时,许多开发者会遇到每次推送(push)或拉取(fetch)代码时都需要输入 GitHub 或 GitLab 等远程仓库的账号和密码的情况。虽然设置了用户名和电子邮件信息…

TCP Window Full是怎么来的

wireshark查看包时,会看到TCP Window Full,总结下它的特点: 1. Sender会显示 TCP Window Full 2. “Sender已发出,但,Receiver尚未ack的字节”,即Sender的 bytes in flights 3. Sender的 bytes in fligh…

PyTorch框架——基于WebUI:Gradio深度学习ShuffleNetv2神经网络蔬菜图像识别分类系统

第一步:准备数据 蔬菜数据集,英文为Vegetable。 train 目录下有15000 张图片。 共十五种植物的幼苗图片集,分别为classes [Bean, Bitter_Gourd, Bottle_Gourd, Brinjal, Broccoli, Cabbage, Capsicum, Carrot, Cauliflower, Cucumber, Pa…

WPS数据分析000001

目录 一、表格的新建、保存、协作和分享 新建 保存 协作 二、认识WPS表格界面 三、认识WPS表格选项卡 开始选项卡 插入选项卡 页面布局选项卡 公式选项卡 数据选项卡 审阅选项卡 视图选项卡 会员专享选项卡 一、表格的新建、保存、协作和分享 新建 ctrlN------…

网络安全 | 什么是正向代理和反向代理?

关注:CodingTechWork 引言 在现代网络架构中,代理服务器扮演着重要的角色。它们在客户端和服务器之间充当中介,帮助管理、保护和优化数据流。根据代理的工作方向和用途,代理服务器可分为正向代理和反向代理。本文将深入探讨这两种…

某讯一面,感觉问Redis的难度不是很大

前不久,有位朋友去某讯面试,他说被问到了很多关于 Redis 的问题,比如为什么用 Redis 作为 MySQL 的缓存?Redis 中大量 key 集中过期怎么办?如何保证缓存和数据库数据的一致性?我将它们整理出来,…

基于机器学习的用户健康风险分类及预测分析

完整源码项目包获取→点击文章末尾名片! 背景描述 在这个日益注重健康与体能的时代,健身已成为许多人追求健康生活的重要组成部分。 本数据集包含若干健身房会员的详细信息,包括年龄、性别、体重、身高、心率、锻炼类型、身体脂肪比例等多项关…

TCP TIME-WAIT 状态为什么要坚持 2MSL

经常有人问这个问题,这种问题问我就对了。我准备了下面的一幅时序图来解释这个问题: 简单点说就是两个目的: 正常处理被动关闭方的重传 FIN;确保当前连接的所有报文全部消失。 也就是说,无论任何情况下,…

Ubuntu升级Linux内核教程

本文作者CVE-柠檬i: CVE-柠檬i-CSDN博客 本文使用的方法是dpkg安装,目前版本为5.4.0-204,要升级成5.8.5版本 下载 下载网站:https://kernel.ubuntu.com/mainline/ 在该网站下载deb包,选择自己想要升级的版本,这里是5…

Java算法 数据结构 栈 单调栈实战 模版题 [洛谷-P5788]

目录 题目地址 题目描述 输入输出样例 代码 题目地址 【模板】单调栈 - 洛谷 题目描述 输入输出样例 代码 static void solve() throws Exception {int nsc.nextInt();int[] arrnew int[n1];int[] result new int[n1];for(int i1;i<n1;i) {arr[i]sc.nextInt();}Stack …

web前端1--基础

&#xff08;时隔数月我又来写笔记啦~&#xff09; 1、下载vscode 1、官网下载&#xff1a;Visual Studio Code - Code Editing. Redefined 2、步骤&#xff1a; 1、点击同意 一直下一步 勾一个创建桌面快捷方式 在一直下一步 2、在桌面新建文件夹 拖到vscode图标上 打开v…

Api网关Zuul

网关分类与开放API 开放API (OpenAPI) 企业需要将自身数据、能力等作为开发平台向外开放&#xff0c;通常会以REST的方式向外提供&#xff0c;最好的例子就是淘宝开放平台、腾讯公司的QQ开发平台、微信开放平台。开放API平台必然涉及到客户应用的接入、API权限的管理、调用次数…

Flink(八):DataStream API (五) Join

1. Window Join Window join 作用在两个流中有相同 key 且处于相同窗口的元素上。这些窗口可以通过 window assigner 定义&#xff0c;并且两个流中的元素都会被用于计算窗口的结果。两个流中的元素在组合之后&#xff0c;会被传递给用户定义的 JoinFunction 或 FlatJoinFunct…

数据结构漫游记:队列的动态模拟实现(C语言)

嘿&#xff0c;各位技术潮人&#xff01;好久不见甚是想念。生活就像一场奇妙冒险&#xff0c;而编程就是那把超酷的万能钥匙。此刻&#xff0c;阳光洒在键盘上&#xff0c;灵感在指尖跳跃&#xff0c;让我们抛开一切束缚&#xff0c;给平淡日子加点料&#xff0c;注入满满的pa…

计算机毕业设计Python+卷积神经网络租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

基于 Spring Cloud 、Spring Boot、 OAuth2 的 RBAC 企业快速开发平台

系统说明 基于 Spring Cloud 、Spring Boot、 OAuth2 的 RBAC 企业快速开发平台&#xff0c; 同时支持微服务架构和单体架构提供对 Spring Authorization Server 生产级实践&#xff0c;支持多种安全授权模式提供对常见容器化方案支持 Kubernetes、Rancher2 、Kubesphere、EDA…

TOSUN同星TsMaster使用入门——3、使用系统变量及c小程序结合panel面板发送报文

本篇内容将介绍TsMaster中常用的Panel面板控件以及使用Panel控件通过系统变量以及c小程序来修改信号的值&#xff0c;控制报文的发送等。 目录 一、常用的Panel控件介绍 1.1系统——启动停止按钮 1.2 显示控件——文本框 1.3 显示控件——分组框 1.4 读写控件——按钮 1.…

【威联通】FTP服务提示:服务器回应不可路由的地址。被动模式失败。

FTP服务器提示&#xff1a;服务器回应不可路由的地址。被动模式失败。 问题原因网络结构安全管理配置服务器配置网关![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1500d9c0801247ec8c89db7a44907e4f.png) 问题 FTP服务器提示&#xff1a;服务器回应不可路由的地址…