21天打卡挑战学习MySQL——《SQL基础入门》第二周 第四篇

2023-11-11


活动地址:CSDN21天学习挑战赛

一、什么是SQL

MySQL是一个关系型数据库管理系统
前世:瑞典MySQLAB公司
今生:属于Oracle旗下产品
MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。
开软的数据库软件~
体积小、速度快、总体拥有成本低,招人成本较低,所有人必须会
中小型网站、或者大型网站,集群!

SQL 是一种操作数据库的语言,包括创建数据库、删除数据库、查询记录、修改记录、添加字段等。SQL 虽然是一种被 ANSI 标准化的语言,但是它有很多不同的实现版本。

二、SQL的执行过程

整个执行过程包含了多种组件

  • 查询调度程序;
  • 优化引擎;
  • 传统的查询引擎;
  • SQL 查询引擎。
    在这里插入图片描述

三、SQL的命令

与关系型数据库有关的 SQL 命令包括 CREATE、SELECT、INSERT、UPDATE、DELETE、DROP 等,根据其特性,可以将它们分为以下几个类别。

1. DDL - Data Definition Language,数据定义语言

对数据的结构和形式进行定义,一般用于数据库和表的创建、删除、修改等。

命令 说明
CREATE 用于在数据库中创建一个新表、一个视图或者其它对象。
ALTER 用于修改现有的数据库,比如表、记录。
DROP 用于删除整个表、视图或者数据库中的其它对象

2.DML - Data Manipulation Language,数据处理语言

对数据库中的数据进行处理,一般用于数据项(记录)的插入、删除、修改和查询。

命令 说明
SELECT 用于从一个或者多个表中检索某些记录。
INSERT 插入一条记录。
UPDATE 修改记录。
DELETE 删除记录。

3.DCL - Data Control Language,数据控制语言

控制数据的访问权限,只有被授权的用户才能进行操作。

命令 说明
GRANT 向用户分配权限。
REVOKE 收回用户权限。

四、sql的语句实现

1、数据库的基本操作

1、创建数据库 
CREATE DATABASE database-name
 
2、备份 mysql
备份数据库到D盘跟目录
mysqldump -h127.0.0.1 -uroot -ppass myweb > d:/backupfile.sql
 
3、删除数据库 
drop database dbname

2、表的基本操作


1、创建新表 
create table tabname(col1 type1 [not null] [primary key],col2 type2 
[not null],..)
 
A:根据已有的表创建新表
 create table tab_new like tab_old 
 
B:使用旧表创建新表
create table tab_new as select col1,col2„ from tab_old definition  only
 
2、删除新表 
drop table tabname
 
3、增加列 
Alter table tabname add column col type
 
 
4、主键操作
 
添加主键
 Alter table tabname add primary key(col) 
 
删除主键 
Alter table tabname drop primary key(col) 
 
5、索引(索引是不可更改的,想更改必须删除重新建。)
 
创建索引
create [unique] index idxname on tabname(col„.) 
 
删除索引
drop index idxname

3、视图

创建视图
create view view_name as select statement 
 
删除视图
drop view view_name

4、基本的增删改查

选择范围
select * from table1 where ...
 
插入
insert into table1(field1,field2) values(value1,value2)
 
删除
delete from table1 where ...
 
更新
update table1 set field1=value1 where ...
 
查找
select * from table1 where field1 like ’%value1%’ 
 
排序
select * from table1 order by field1,field2 [desc]

5、统计

总数
select count as totalcount from table1
 
求和
select sum(field1) as sumvalue from table1
 
平均数
select avg(field1) as avgvalue from table1
 
最大数
select max(field1) as maxvalue from table1
 
最小数
select min(field1) as minvalue from table1

五、实战

1.创建数据表插入数据

# 创建数据库
create database mysql_exercise_50;
use mysql_exercise_50;

# 学生表
CREATE TABLE Student(
s_id VARCHAR(20),
s_name VARCHAR(20) NOT NULL DEFAULT '',
s_birth VARCHAR(20) NOT NULL DEFAULT '',
s_sex VARCHAR(10) NOT NULL DEFAULT '',
PRIMARY KEY(s_id)
);
insert into Student values('01' , '张三' , '1990-01-01' , '男');
insert into Student values('02' , '李四' , '1990-12-21' , '男');
insert into Student values('03' , '王五' , '1990-05-20' , '男');
insert into Student values('04' , '赵六' , '1990-08-06' , '男');
insert into Student values('05' , '冯七' , '1991-12-01' , '女');
insert into Student values('06' , '周八' , '1992-03-01' , '女');
insert into Student values('07' , '吴九' , '1989-07-01' , '女');
insert into Student values('08' , '郑十' , '1990-01-20' , '女');

# 课程表
CREATE TABLE Course(
c_id VARCHAR(20),
c_name VARCHAR(20) NOT NULL DEFAULT '',
t_id VARCHAR(20) NOT NULL,
PRIMARY KEY(c_id)
);
insert into Course values('01' , '语文' , '02');
insert into Course values('02' , '数学' , '01');
insert into Course values('03' , '英语' , '03');

# 教师表
CREATE TABLE Teacher(
t_id VARCHAR(20),
t_name VARCHAR(20) NOT NULL DEFAULT '',
PRIMARY KEY(t_id)
);
insert into Teacher values('01' , '王老师');
insert into Teacher values('02' , '李老师');
insert into Teacher values('03' , '冯老师');

# 成绩表
CREATE TABLE Score(
s_id VARCHAR(20),
c_id VARCHAR(20),
s_score INT(3),
PRIMARY KEY(s_id,c_id)
);
insert into Score values('01' , '01' , 80);
insert into Score values('01' , '02' , 90);
insert into Score values('01' , '03' , 99);
insert into Score values('02' , '01' , 70);
insert into Score values('02' , '02' , 60);
insert into Score values('02' , '03' , 80);
insert into Score values('03' , '01' , 80);
insert into Score values('03' , '02' , 80);
insert into Score values('03' , '03' , 80);
insert into Score values('04' , '01' , 50);
insert into Score values('04' , '02' , 30);
insert into Score values('04' , '03' , 20);
insert into Score values('05' , '01' , 76);
insert into Score values('05' , '02' , 87);
insert into Score values('06' , '01' , 31);
insert into Score values('06' , '03' , 34);
insert into Score values('07' , '02' , 89);
insert into Score values('07' , '03' , 98);

2.测试即可!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

21天打卡挑战学习MySQL——《SQL基础入门》第二周 第四篇 的相关文章

  • 在Oracle中查找不包含数字数据的行

    我试图在一个非常大的 Oracle 表中找到一些有问题的记录 即使该列是 varchar2 列 也应包含所有数值数据 我需要找到不包含数字数据的记录 当我尝试在此列上调用 to number col name 函数时 它会抛出错误 我想你可
  • Mysql获取特定表的最后一个id

    我必须从特定的插入表中获取最后的插入 ID 可以说我有这个代码 INSERT INTO blahblah test1 test 2 VALUES test1 test2 INSERT INTO blahblah2 test1 test 2
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • #1115 - 未知字符集:'utf8mb4'

    我的电脑上运行着一个本地网络服务器 用于本地开发 我现在正处于导出数据库并导入到我的托管 VPS 的阶段 导出然后导入时出现以下错误 1115 未知字符集 utf8mb4 有人能指出我正确的方向吗 该错误明确表明您没有utf8mb4您的阶段
  • SELECT DISTINCT HAVING 计算唯一条件

    我已经搜索过这个问题的答案 但找不到如何根据条件获取这个不同的记录集 我有一个包含以下示例数据的表 Type Color Location Supplier Apple Green New York ABC Apple Green New
  • SQLite 自然连接损坏?

    我刚刚开始了解 NATURAL JOIN 而 SQLite 的行为并不像我预期的那样 SELECT FROM r1 NATURAL JOIN r2 NATURAL JOIN r3 and SELECT FROM r1 NATURAL JOI
  • 在 MySQL 中插入时检查并防止相似字符串

    简要信息 我有3张桌子 Set id name SetItem set id item id position TempSet id 我有一个函数可以生成新的随机组合Item桌子 基本上 总是在成功生成之后 我在中创建一个新行Set表 获取
  • MySQL 帮助:如何查找客户的所有订单,直到价格 <= 20 且状态='未付款'

    我认为通过提供以下示例可以更好地理解我的问题 我有一个包含以下数据的表 orderid Price username paymentstatus 1 10 john unpaid 2 10 john unpaid 4 10 john unp
  • mysql LIKE 查询时间太长

    SQL SELECT COUNT usr id as total results FROM users as usr LEFT JOIN profile as prof ON prof uid usr uid WHERE usr usern
  • 如何将列中的天数添加到 DB2 中的当前日期?

    我正在编写此 SQL 来动态计算一定的天数 如下所示 但我不知道如何让它工作 因为我不断收到错误 select Current Date Dynamic numbr of days calculation here from TableNa
  • 如何从 SQL Server 中的 SELECT 进行更新?

    In SQL服务器 可以将行插入到带有INSERT SELECT陈述 INSERT INTO Table col1 col2 col3 SELECT col1 col2 col3 FROM other table WHERE sql coo
  • 数据库级别的别名列名 [MySQL]

    别名 可能是错误的词 因为它是在将列 表名称作为查询中的其他名称引用的上下文中使用的 我感兴趣的是是否有一种方法可以在数据库中为列指定两个名称 如果我要打印这样的表格 它看起来会是这样的 mysql gt SELECT FROM User
  • VS 13/VS 15 - 无法导入 SQL 片段

    我想在中创建 SQL 片段VS2013 and VS2015 我不知道为什么 但我在导入时遇到错误 在两个 VS 中 C sql snippet Missing or unspecified Language attribute 我的片段
  • postgresql 中的锁定表

    我有一个名为 games 其中包含一个名为 title 该列是唯一的 数据库中使用PostgreSQL 我有一个用户输入表单 允许他插入新的 game in games 桌子 插入新游戏的功能会检查之前输入的游戏是否存在 game 与相同的
  • 如何在 DataColumn.Expression 中使用 IF/ELSE 或 CASE?

    我有一个包含 1 列的表 状态 我想添加另一列名为 Action 的列 其值如下 如果 Status Yes 则 Action Go 否则 Action Stop 我使用以下代码添加到 操作 列中 但它不起作用 myDataTable Co
  • 在 where 子句中使用聚合函数和不同的列条件

    select PO Order Qty Avg PO Order Qty as totalAverage FROM FirstStrike Retail custom Whse Pricing QR where item code 111
  • 通过Java从MySQL中获取大量记录

    有一个 MySQL 表 服务器上的用户 它有 28 行和 100 万条记录 也可能会增加 我想从这个表中获取所有行 对它们进行一些操作 然后将它们添加到 MongoDB 中 我知道通过简单的 从用户中选择 操作来检索这些记录将花费大量时间
  • 更新 SQLAlchemy 中的特定行

    我将 SQLAlchemy 与 python 一起使用 我想更新表中等于此查询的特定行 UPDATE User SET name user WHERE id 3 我通过 sql alchemy 编写了这段代码 但它不起作用 session
  • SQL Server 中的嵌套事务

    sql server 允许嵌套事务吗 如果是的话那么交易的优先级是什么 来自 SQL Server 上的 MSDN 文档 嵌套交易 http msdn microsoft com en us library ms189336 SQL 90
  • 计算包含字母/数字的行数

    我想要实现的目标很简单 但是解释起来有点困难 我不知道在 postgres 中这是否真的可能 我处于相当基础的水平 SELECT FROM WHERE LEFT JOIN ON HAVING 等等基本的东西 我正在尝试计算包含特定字母 数字

随机推荐

  • Nand Flash块,坏块,页,oob等解释

    http blog csdn net seasonyrq article details 51510965 本文针对nand flash坏块部分进行简单的记录 什么是坏块 我们先来看一下nand flash的存储结构 nand flash的
  • 10.图的深度优先遍历序列是否唯一?为什么?

    不唯一 因为邻接点入栈的时候的顺序不是固定的
  • Spring源码阅读-getBean逻辑分析记录

    getBean 从缓存中获取Bean Object sharedInstance getSingleton beanName 上述代码会从三个map中读取缓存的Bean 这三个map也是俗称的 this singletonObjects 一
  • ip2region的使用,来自csdn的回答

    使用Go语言使用ip2region库的例子如下 导入ip2region包 import github com lionsoul2014 ip2region binding golang ip2region 加载ip2region的数据库文件
  • JDK1.8函数式接口Function、Consumer、Predicate、Supplier

    JDK1 8函数式接口Function Consumer Predicate Supplier 1 函数式接口定义 函数式接口 Functional Interface 有且仅有一个抽象方法的接口 但可以有多个非抽象方法的接口 函数式接口
  • c++ 中map 的find 用法

    用find函数来定位数据出现位置 它返回的一个迭代器 当数据出现时 它返回数据所在位置的迭代器 如果map中没有要查找的数据 它返回的迭代器等于end函数返回的迭代器 程序演示 include
  • java.lang.String cannot be cast to [Ljava.lang.Object;错误的原因及解决办法

    错误信息 java lang ClassCastException java lang String cannot be cast to Ljava lang Object at com six biz impl ReportBizImpl
  • 认识网络、几种常用的网络拓扑图

    交换协议 VLAN技术 虚拟局域网 STP技术 生成树协议 VRRP技术 虚拟路由冗余协议 VPN 虚拟专用网络 名词解释 路由协议 http HTTPS tcp ip 静态路由配置 OSPF协议 RIP协议 ACL访问控制 什么是网络 简
  • 【100天精通python】Day38:GUI界面编程_PyQt 从入门到实战(中)_数据库操作与多线程编程

    目录 专栏导读 4 数据库操作 4 1 连接数据库 4 2 执行 SQL 查询和更新 4 3 使用模型和视图显示数据 5 多线程编程 5 1 多线程编程的概念和优势 5 2 在 PyQt 中使用多线程 5 3 处理多线程间的同步和通信问题
  • 论文带读——3D Neural Field Generation using Triplane Diffusion

    论文带读 3D Neural Field Generation using Triplane Diffusion YssssMikey Tips 我会基本上几天更新一篇论文引读 一般是AIGC模型 3D Diffusion方向每日在Arxi
  • JDBC的实现(IDEA版)

    前期准备 开发环境 IDEA 2021 1 3 JAVA 1 8 MYSQL 8 0 32 msql用户名 root 密码 123 下载MySQL JDBC 驱动 前往MySQL官网下载对应版本的MySQL Connector J驱动 下载
  • pix2pix gan_用python构建pix2pix gan

    pix2pix gan There are times that we want to to transform an image into another style Let s say we have a fine collection
  • 基于WOA-SVM算法的乳腺肿瘤识别算法的MATLAB仿真

    基于WOA SVM算法的乳腺肿瘤识别算法的MATLAB仿真 随着医疗技术的发展 计算机在医学影像领域中的应用越来越广泛 乳腺肿瘤是女性常见的一种肿瘤 准确地进行乳腺肿瘤检测和诊断对女性健康至关重要 本文将介绍一种基于WOA SVM算法的乳腺
  • centos下git相关操作以及部分问题解决方案

    主要记录两件事情 一个是如何git clone github代码到本地 二是git clone到非空文件夹下出错的解决方案 第一 在电脑没有安装git的情况下 手动安装git 具体步骤如下 1 安装依赖的包 yum install curl
  • c++使用curl库发送https请求

    一 环境win7 64位 vs2010 二 文件准备 2 1文件下载 libcurl 下载页面 http curl haxx se download html 我下载的是https curl haxx se download curl 7
  • angular项目打包发布流程

    1 从git更新代码 运行测试看有没有错误 测试ie兼容性 2 修改配置文件并编译打包代码 修改连接服务器的配置文件 双击 3 拷贝文件到服务器 xshell连接到linux 命令 pwd 查看当然文件目录 ll 列出该文件下所有的文件列表
  • Visual Studio 2019解决右侧工具栏消失

    项目场景 准备打开Visual Studio 2019却发现右侧的工具栏消失了 问题描述 新建项目后发现右侧的解决方案资源管理器消失了 不便于添加源文件书写代码 如图 原因分析 可能是以前在操作中将项目移除或删除等等将窗口删掉了 解决方案
  • 用jquery实现简单的表单验证效果

    看了 锋利的jquery 一书 练习了下期中的一个用jquery写表单验证的例子 效果如图 总结 这是个比较简单的表单验证 主要验证了表单中的用户名和邮箱两个必填选项 表单验证其实质是个不断往下过滤的过程 主要思路
  • selenium自动化录入数据

    将csv或者txt里的数据通过selenium自动录入到网页系统里 输入一个数据操作完后自动输入下一个数据 依次遍历所有的数据 比如百度搜索 有十个词要搜索 输入第一个词搜出结果后再接着输入第二个继续搜 依次遍历十个 求大神赐教 给个思路或
  • 21天打卡挑战学习MySQL——《SQL基础入门》第二周 第四篇

    活动地址 CSDN21天学习挑战赛 一 什么是SQL MySQL是一个关系型数据库管理系统 前世 瑞典MySQLAB公司 今生 属于Oracle旗下产品 MySQL是最好的RDBMS Relational Database Manageme