mysql 学习3 SQL语句--整体概述。SQL通用语法;DDL创建数据库,查看当前数据库是那个,删除数据库,使用数据库;查看当前数据库有哪些表

news2025/1/27 19:31:08

SQL通用语法

SQL语句分类

DDL data definition language : 用来创建数据库,创建表,创建表中的字段,创建索引。因此成为 数据定义语言

DML data manipulation language 有了数据库和表以及字段后,那么我们就需要给这个表中 添加数据,删除数据,改动数据,这些都是对数据有改动的行为,因此 叫做 数据操作语言  manipulation中文是 操作的意思

DQL data query language ,DML完成了对于表中数据的增删改,但是没有查询功能,这个DDL就是完成对 数据库中的表的数据进行查询功能的

DCL data control language,我们有了数据库,表,也有了增删改查,还有一个安全性问题,就是谁能来操作这个数据库中的表,因此对应的有了 数据控制语言,功能就是用来创建数据库用户,控制数据库的访问权限的,这里还有 一个问题 视频中没有讲---即一个数据库有多张表,DCL能做的精细化程度是什么样子的呢?能做到对于某一张表的控制?还是只能 做到对于 某一个数据库的控制?

简单理解版

  • DDL:数据定义语句 【create 表,数据库…】
  • DML:数据操作语句【增加insert,修改update,删除delete】
  • DQL:数据查询语句【select】
  • DCL:数据控制语句【管理数据库:用户权限grant revoke】

DDL data definition language : 创建数据库,使用数据库,删除数据库,查询所有数据库,查询当前数据库是那个,查看当前数据库中的所有表

创建数据库

CREATE DATABASE [IF NOT EXISTS] <数据库名>

[DEFAULT CHARSET <字符集名>] 

[COLLATE <校对规则名>];

CREATE DATABASE [IF NOT EXISTS] <数据库名>

[DEFAULT CHARSET <字符集名>] 

[COLLATE <校对规则名>];

注意的是:我们一般 设置 字符集名为 utf8mb4 ,而不是 utf8;这是因为utf8是3个字符组成的,为了兼容一些4字节的,因此使用 utf8mb4

[ ]中的内容是可选的。语法说明如下:

<数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在 MySQL 中不区分大小写。
IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。
[DEFAULT CHARSET <字符集名>]:指定数据库的字符集。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。如果在创建数据库时不指定字符集,那么就使用系统的默认字符集utf8。
[COLLATE <排序规则>]:指定字符集的排序规则,常用的utf8_bin(区分大小写),默认是utf8_general_ci(不区分大小写)。在字符集是utf-8的时候,COLLATE才能设置 utf8_bin 或者 utf8_general_ci   后面的测试中,char set utf8mb4, 但是测试会报错。
MySQL 的字符集(CHARACTER)和校对规则(COLLATION)是两个不同的概念。字符集是用来定义 MySQL 存储字符串的方式,校对规则定义了比较字符串的方式。

例如:创建一个使用utf8字符集,校验规则为 utf8_bin 的 itcast 数据库



create database if not exists itcast2
default charset utf8
collate utf8_general_ci;

测试验证

mysql> create database if not exists itcast2
    -> default charset utf8
    -> collate utf8_general_ci;
Query OK, 1 row affected, 2 warnings (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| itcast             |
| itcast2            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

--------------------------------------------------

测试 

create database if not exists itcast2
default charset utf8mb4 
collate utf8_general_ci;

错误

mysql> create database if not exists itcast2
    -> default charset utf8mb4
    -> collate utf8_bin;
ERROR 1253 (42000): COLLATION 'utf8_bin' is not valid for CHARACTER SET 'utf8mb4'
mysql>

原因:当地charset 为 utf8时,collate才能设置为 utf8_general_ci或者utf8_bin

我们当前的charset 是 utf8mb4  因此 collate的设置值是有问题的。

--------------------------------------------------------

create database if not exists itcast2
default charset utf8mb4 
collate utf8_bin;

错误

mysql> create database if not exists itcast2
    -> default charset utf8mb4
    -> collate utf8_general_ci;
ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4'
mysql>

-------------------------------------------------------------

create database if not exists itcast2
default charset utf8mb4;

成功

mysql> create database if not exists itcast2
    -> default charset utf8mb4;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| itcast             |
| itcast2            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

使用数据库

USE 数据库名;

USE 数据库名;

例子

use itcast;

mysql> use itcast;
Database changed

删除数据库

drop database [IF EXISTS ] 数据库名;

drop database [IF EXISTS ] 数据库名;

测试:

drop database IF EXISTS itcast1;

mysql> drop database IF EXISTS itcast1;
Query OK, 0 rows affected (0.02 sec)

mysql>

查询所有数据库

show databases;

SHOW DATABASES [LIKE '数据库名'];
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| itcast             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

show databases LIKE 'mysql';

mysql> show databases LIKE 'mysql';
+------------------+
| Database (mysql) |
+------------------+
| mysql            |
+------------------+
1 row in set (0.00 sec)

show databases LIKE 'my'; 

我们的本意是 查找 只要有字符串 my的数据库,但是查不到,说明 like 的用法不对 

mysql> show databases LIKE 'my';
Empty set (0.00 sec)

改动,使用%通配符,%表示任意个字符

show databases LIKE '%my%'; 

mysql> show databases LIKE '%my%';
+-----------------+
| Database (%my%) |
+-----------------+
| mysql           |
+-----------------+
1 row in set (0.00 sec)

show databases LIKE '%i%'; 

mysql> show databases LIKE '%i%';
+--------------------+
| Database (%i%)     |
+--------------------+
| information_schema |
| itcast             |
+--------------------+
2 rows in set (0.00 sec)

查询当前数据库是那个

select database();

注意这里用的是函数;

mysql> select database();
+------------+
| database() |
+------------+
| itcast     |
+------------+
1 row in set (0.00 sec)

查看当前数据库的所有表

前面知道,一个数据库中是可以有很多个表的,对于新建的数据库中是没有表的。

show tables;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Bug 记录】el-sub-menu 第一次进入默认不高亮

项目场景&#xff1a; 项目场景&#xff1a;el-sub-menu 第一次进入默认不高亮 问题描述 例如&#xff1a;sub-menu 的 index 后端默认传过来是 number&#xff0c;我们需要手动转为 string&#xff0c;否则会有警告&#xff0c;而且第一次进入 sub-menu 默认不高亮。 解决方…

深入探讨ncnn::Mat类——ncnn中的核心数据结构

最近在学习 ncnn 推理框架&#xff0c;下面整理了 ncnn::Mat 的使用方法。 ncnn作为一个高性能的神经网络推理框架&#xff0c;其核心数据结构ncnn::Mat在数据存储与处理上扮演了至关重要的角色。本文将从基础到高级&#xff0c;详细介绍ncnn::Mat类的各个方面&#xff0c;帮助…

npm:升级自身时报错:EBADENGINE

具体报错信息如下&#xff1a; 1.原因分析 npm和当前的node版本不兼容。 // 当前实际版本: Actual: {"npm":"10.2.4","node":"v20.11.0"}可以通过官网文档查看与自己 node 版本 兼容的是哪一版本的npm&#xff0c;相对应进行更新即可…

ipad和macbook同步zotero文献附件失败的解决办法

背景&#xff1a;我所有的文献及其附件pdf都是在台式机&#xff08;windows系统&#xff09;&#xff0c;想要把这些文献同步到云上&#xff0c;然后再从云上同步到平板和其他笔记本电脑比如macbook。文献同步虽已成功&#xff0c;但文献附件都无法打开。 平板报错如下&#xf…

【嵌入式】总结——Linux驱动开发(三)

鸽了半年&#xff0c;几乎全忘了&#xff0c;幸亏前面还有两篇总结。出于快速体验嵌入式linux的目的&#xff0c;本篇与前两篇一样&#xff0c;重点在于使用、快速体验&#xff0c;uboot、linux、根文件系统不作深入理解&#xff0c;能用就行。 重新梳理一下脉络&#xff0c;本…

15_业务系统基类

创建脚本 SystemRoot.cs 因为 业务系统基类的子类 会涉及资源加载服务层ResSvc.cs 和 音乐播放服务层AudioSvc.cs 所以在业务系统基类 提取引用资源加载服务层ResSvc.cs 和 音乐播放服务层AudioSvc.cs 并调用单例初始化 using UnityEngine; // 功能 : 业务系统基类 public c…

C语言-构造数据类型

1、构造数据类型 结构体、共用体、枚举。 2、结构体 1、结构体的定义 结构体是一个自定义的复合数据类型&#xff0c;它允许将不同类型的数据组合在一起。 struct 结构体名 {数据类型1 成员变量1;数据类型2 成员变量2;数据类型3 成员变量3;数据类型4 成员变量4; } 2、结构体变…

文档解析:PDF里的复杂表格、少线表格如何还原?

PDF中的复杂表格或少线表格还原通常需要借助专业的工具或在线服务&#xff0c;以下是一些可行的方法&#xff1a; 方法一&#xff1a;使用在线PDF转换工具 方法二&#xff1a;使用桌面PDF编辑软件 方法三&#xff1a;通过OCR技术提取表格 方法四&#xff1a;手动重建表格 …

【统计的思想】假设检验(二)

假设检验是根据人为设定的显著水平&#xff0c;对被测对象的总体质量特性进行统计推断的方法。 如果我们通过假设检验否定了零假设&#xff0c;只是说明在设定的显著水平下&#xff0c;零假设成立的概率比较小&#xff0c;并不是说零假设就肯定不成立。如果零假设事实上是成立…

汽车定速巡航

配备定速巡航功能的车型&#xff0c;一般在方向盘附近设有4~6个按键&#xff08;可能共用键位&#xff09;。 要设置定速巡航&#xff0c;不仅需要方向盘上的按键&#xff0c;还要油门配合。 设置的一般流程&#xff1a; 开关&#xff1a;类似步枪上的“保险”&#xff0c;按…

MacOS安装Docker battery-historian

文章目录 需求安装battery-historian实测配置国内源相关文章 需求 分析Android电池耗电情况、唤醒、doze状态等都要用battery-historian&#xff0c; 在 MacOS 上安装 battery-historian&#xff0c;可以使用 Docker 进行安装runcare/battery-historian:latest。装完不需要做任…

总线、UART、IIC、SPI

一图流 总线 概念 连接多个部件的信息传输线&#xff0c;是各部件共享的传输介质 类型 片内总线&#xff1a;连接处理器内核和外设的总线&#xff0c;在芯片内部 片外总线&#xff1a;连接芯片和其他芯片或者模块的总线 总线的通信 总线通信的方式 串行通信 数据按位顺序传…

大型齿轮箱健康监测与智能维护系列套件:测试台+故障诊断算法工具箱+齿轮箱智能维护系统平台+案例分析

大型齿轮箱健康监测与智能维护系列套件&#xff1a;测试台故障诊断算法工具箱齿轮箱智能维护系统平台案例分析 大型齿轮箱健康监测与智能维护系列套件&#xff1a;测试台定制、数据测试服务、算法工具箱与算法模型的定制研制服务&#xff0c;以及各类设备故障诊断与健康预诊系…

Yearning开源MySQL SQL审核平台

一款MYSQL SQL语句/查询审计工具&#xff0c;为DBA与开发人员使用. 本地部署&#xff0c;注重隐私&#xff0c;简单高效的MYSQL审计平台。 它可以通过流程审批&#xff0c;实现真实线上环境sql的审核和执行&#xff0c;还可以回滚执行&#xff0c;能够确保线上SQL更新的可靠性…

【MySQL — 数据库增删改查操作】深入解析MySQL的create insert 操作

数据库CRUD操作 1 CRUD简介 CURD是对数据库中的记录进行基本的增删改查操作: 2. Create 新增 语法 INSERT [INTO] table_name[(column [&#xff0c;column] ...)] VALUES(value_list)[&#xff0c;(value_list)] ... # value 后面的列的个数和类型&#xff0c;要和表结构匹配…

推箱子游戏

java小游戏2 一游戏介绍 二图像准备 墙、箱子、人、箱子目的地&#xff0c;人左边、人右边、人上边、人下边 三结构准备 地图是什么&#xff0c;我们把地图想象成一个网格&#xff0c;每个格子就是工人每次移动的步长&#xff0c;也是箱子移动的距离&#xff0c;设置一个二维数…

【Uniapp-Vue3】动态设置页面导航条的样式

1. 动态修改导航条标题 uni.setNavigationBarTitle({ title:"标题名称" }) 点击修改以后顶部导航栏的标题会从“主页”变为“动态标题” 2. 动态修改导航条颜色 uni.setNavigationBarColor({ backgroundColor:"颜色" }) 3. 动态添加导航加载动画 // 添加加…

pytest执行报错:found no collectors

今天在尝试使用pytest运行用例的时候出现报错&#xff1a;found no collectors&#xff1b;从两个方向进行排查&#xff0c;一是看文件名和函数名是不是符合规范&#xff0c;命名要是"test_*"格式&#xff1b;二是是否存在修改文件名的情况&#xff0c;如果修改过文件…

QT6 + CMAKE编译OPENCV3.9

参考文档 [1] https://blog.csdn.net/rjkf_css/article/details/135676077 前提条件 配置好相关运行环境&#xff1a;QT6、OPENCV3.9的sources文件 OPENCV下载网页&#xff1a;https://opencv.org/releases/ QT6下载教程&#xff1a;https://blog.csdn.net/caoshangpa/article…

pycharm踩坑(1)

由于我重装系统&#xff0c;导致我的pycharm需要进行重装&#xff0c;因此我觉得需要记录一下&#xff0c;pycharm的正确使用方法 汉化 汉化很重要&#xff0c;除非你从小就双语教学&#xff0c;不然你看着那些英文就是会消耗大量的精力 我使用的pycharm版本是pycharm-commun…