Mysql 数据库(二)——数据库基础

文章目录

  • 一、SQL 语句分类
    • 1.DQL(数据查询语言)
    • 2.DML(数据操纵语言)
    • 3.DDL(数据定义语言)
    • 4.DCL(数据控制语言)
    • 5.TCL(事务处理语言)
  • 二、数据库的分类
    • 1.关系型数据库
    • 2.非关系型数据库
    • 3.表的理解
  • 三、数据库操作
    • 1.显示当前的数据库
    • 2.创建数据库
    • 3.选中数据库/使用数据库
    • 4.删除数据库
    • 4.1语法
  • 四、常用数据类型
    • 1.数值类型
    • 2.字符串类型
    • 3.日期类型
  • 五、表的操作
    • 1.查看表结构
    • 2.创建表
    • 3.删除表
  • 六、建表小练习
  • 未完待续…

接上篇 Mysql 数据库(一)—— 初识 Mysql

本章内容介绍大纲


在这里插入图片描述


一、SQL 语句分类


  SQL语句有很多,我们最好分门别类,这样容易记忆…


1.DQL(数据查询语言)


  数据查询语言(Data Query Language, DQL)是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。

我们在 看到 select … 这样的 sql 语句,都是数据查询语句,凡是带有 select 关键字的 SQL 语句都是 DQL 语句


2.DML(数据操纵语言)


  数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除。


凡是带有INSERT、UPDATE、DELETE 关键字的语句都是 DML

insert —— 插入,等同于增
update —— 更新,等同修改
delete —— 删除

这个主要操作的是表中的数据


3.DDL(数据定义语言)


  数据定义语言 (Data Definition Language, DDL) 是SQL语言集中,负责数据结构定义与数据库对象定义的语言,由creat、alter 与 drop 三个语法所组成. DDL 主要操作的是 表的结构 不是表中的数据


凡是带有 create(增)、alter (改)、drop (删) 关键字的语句都是 DDL

create —— 新建、等同于增
drop —— 删除
alter —— 修改

这个增删改与 DML 有所不同,这个主要是对表结构进行操作.


4.DCL(数据控制语言)


  数据控制语言 (Data Control Language) 在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。对数据的权限进行控制的语言.


例如:

请求授权—— grant
撤销授权 —— revoke


5.TCL(事务处理语言)


  这里的TCL可不是王牌电视,事务处理语言(Transaction Control Language),它的语句能确保被DML语句影响的表的所有行及时得以更新。是一种事务控制语言。


TCL 主要包括

事务提交 —— commit
事务回滚 —— rollback


  现在我们还没学到,到我们在后面就会接触到了。


二、数据库的分类

在这里插入图片描述


  在上节课中 我们了解了 几种数据库软件(mysql、sql server、Oracle …),我们来看一看数据库的分类


1.关系型数据库


Mysql、Sql server 、Oracle 、SqLite 属于 关系型数据库

把数据按照 的形式来进行组织(类似于Excle这种形式的).
关系型数据库能够对数据进行更严格的校验,带来更好的数据的完整性.


2.非关系型数据库


Redis 、 HBase 、MongoDB …属于 非关系型数据库

把数据按照 文档 的形式来进行组织,文档和文档之间的差别可以较大.
更灵活的组织数据,效率更高,更容易在分布式环境下使用.

那么什么是表呢?


3.表的理解


数据库中最基本的结构是表—— table

什么是表 table ? 为什么用 表 table 进行存储数据呢?

我们给大家看一下什么是表,相信 EXcel 大家都用过


在这里插入图片描述

这样的结构 就是一个简单的表,表是组织数据的一种形式


数据库中是以 表格的形式来表示数据的,因为 表格比较直观.


任何 表 都有行和列


行(row): 被称为数据/ 记录

列 (column): 被称为字段

在这里插入图片描述


  在这个表中 列的数据就表示字段,有 姓名字段、性别字段、年龄字段,每一行的数据表示记录.


了解一下,每个字段都有 字段名、数据类型、约束条件等属性.


字段名: 只是一个普通的名字,见名知意就行了.

数据类型: 字符串类型,数字、日期等类型,在后面我们会详细介绍

约束:约束也有很多,其中有一个叫做唯一性约束,这种约束添加后,该字段的数据不能重复.


那我们怎么查看 某个数据库中的 表呢?


1.查看我们有哪些数据库
在这里插入图片描述

2.选中我们想要查看的数据库
在这里插入图片描述

3.查看数据库中的表
在这里插入图片描述


三、数据库操作


1.显示当前的数据库


mysql> show databases;

在这里插入图片描述

2.创建数据库


mysql> create database [数据库名]

在这里插入图片描述
在这里插入图片描述
  展示数据库与 创建数据库 在上一节课中我们已经具体的讲过了,我们重点来看 删除数据库


3.选中数据库/使用数据库


use  [ 数据库名 ]

  要想对数据库进行更具体的操作 (建表、查询、…)就需要先确定是针对那个数据库进行的.

在这里插入图片描述

例如: 我们在查询完数据库之后,希望选中 java100 这个数据库.

使用use java100;
在这里插入图片描述
  出现 Database changed 则选中成功.当前的数据库已经被选中,后续的操作都是针对这个数据库来展开的.


4.删除数据库


4.1语法


 drop database [数据库名];

在这里插入图片描述

说明:

  数据库删除后,内部看不到对应的数据库,里边的表和数据全部被删除.


我们对这个数据库进行简单的删除操作…

我们在这个数据库中新建了一个 rain7 的数据库


在这里插入图片描述

然后我们输入

drop database rain7 ;

进行删库操作

在这里插入图片描述

再次查看数据库

在这里插入图片描述
rain7 的数据库 已经成功被删去了…

在这里 我们希望大家牢牢记住


   一旦删除数据库,这里的 数据通过常规的手段就找不回来了!!!所以删除数据库是一个非常危险的操作!!~~

  以后在工作中,无论如何都不要使用 drop database 操作,尤其是针对线上环境~


四、常用数据类型


1.数值类型


分为整形 与 浮点型

在这里插入图片描述

扩展资料

数值类型可以指定为无符号(unsigned),表示不取负数。

对于整型类型的范围:


1.有符号范围:-2 ^ (类型字节数 * 8-1)到2 ^ (类型字节数 * 8-1)-1,如int是4字节,就是-2^ 31 到 2^31-1

2.无符号范围:0到2 ^ (类型字节数*8)-1,如int就是2 ^ 32-1


  尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。


bit [ M () ]

  bit 就表示一个二进制的数据,在方括号里我们可以指定该数据占多少个bit 位,M()就来指定有多少位,如果不指定的话,默认就为 1.


数据类型对应Java类型
tinyintbyte
smallintshort
intInteger
bigintlong
float(M,D)float
double(M,D)double
decimal(M,D)bigdecimal

float (M,D)的含义

float (3,1)—— 有效数字是 3 位,小数点后保留一位.

95.5 合法
25.1 合法
101.2 不合法


decimal 在之前我们没有接触过


  Java中的 float 和 double 都是有问题的,不能精确表示一些数据 ~~ 遵循 IEEE754 标准,受限于浮点数在内存中的表示.

  后来Java为了解决这个问题,就有了 bigdecimal,内部使用其他方式来存储表示浮点数,就能够做到更精确的表示~~

  所以在 sql 中也有一个 decimal 来对应Java中的 bigdecimal.


2.字符串类型


在这里插入图片描述


varchar (size) 在() 中我们可以规定 字符串的大小,具体是字符的个数~~

blob 针对的类型主要是 二进制形式的文本数据


3.日期类型

在这里插入图片描述

  现在我们写代码优先使用 datetime 这个时间戳,因为 表示的范围更大


我们如何使用时间类型?

在这里插入图片描述

五、表的操作


需要操作数据库中的表时,需要先使用该数据库


use db_test;


1.查看表结构


desc 表名;


我们来使用一下该条命令语句


1.选中数据库,查看该数据库中的所有 table
在这里插入图片描述

2.查看表结构
在这里插入图片描述


表结构的具体解释

在这里插入图片描述


2.创建表


create table table_name(字段 类型,字段 类型 , …);


语法:

在这里插入图片描述

与其他编程语言 定义的不一样,在MySQL中 类型放在 字段的后面.


java 中可以用 // 表示注释
mysql中可以用 comment 表示注释说明,也可以用 - - 表示注释~


我们可以操作一下,我们想要添加一个工作人员表,以下图为例,同样在java100 的数据库中添加该表

在这里插入图片描述

1.查找数据库,选中Java100;
在这里插入图片描述

2.创建一个 工作人员表,要求有姓名,年龄,性别等属性~
在这里插入图片描述

3.查看表结构
在这里插入图片描述



3.删除表


drop table table_name;

在这里插入图片描述

我们再次来练习,删除我们在之前操作建立的 workers 这个表

1.删除 worker 这个表
在这里插入图片描述

2.查看删除成功
在这里插入图片描述
此时 workers 已经不存在.


六、建表小练习


给大家一个小练习,来熟悉 MySQL的基本操作吧


有一个商店的数据,记录客户及购物情况,有以下三个表组成:


商品goods ( 商品编号 goods_id,商品名 goods_name , 单价 unitprice , 商品类别 category , 供应商 provider )


客户 customer ( 客户号 customer_id , 姓名 name ,住址 address ,邮箱email,性别 sex ,身份证 card_id )


购买 purchase ( 购买订单号 order_id , 客户号 customer_id ,商品号 goods_id ,购买数量 nums ).



  数据库还有表的 增删查改 操作,我们会在下一节中集中介绍.


  好了今天的知识就分享到这里,希望大家多多练习,熟练掌握,感谢大家的欣赏与关注!!


  下一篇~ Mysql 数据库(三)—— 表的增删查改(CRUD) 敬请期待~~



谢谢欣赏!



未完待续…

热门文章

暂无图片
编程学习 ·

Java输出数组的内容

Java输出数组的内容_一万个小时-CSDN博客_java打印数组内容1. 输出内容最常见的方式// List<String>类型的列表List<String> list new ArrayList<String>();list.add("First");list.add("Second");list.add("Third");list.ad…
暂无图片
编程学习 ·

母螳螂的“魅惑之术”

在它们对大蝗虫发起进攻的时候&#xff0c;我认认真真地观察了一次&#xff0c;因为它们突然像触电一样浑身痉挛起来&#xff0c;警觉地面对限前这个大家伙&#xff0c;然后放下自己优雅的身段和祈祷的双手&#xff0c;摆出了一个可怕的姿势。我被眼前的一幕吓到了&#xff0c;…
暂无图片
编程学习 ·

疯狂填词 mad_libs 第9章9.9.2

#win7 python3.7.0 import os,reos.chdir(d:\documents\program_language) file1open(.\疯狂填词_d9z9d2_r.txt) file2open(.\疯狂填词_d9z9d2_w.txt,w) words[ADJECTIVE,NOUN,VERB,NOUN] str1file1.read()#方法1 for word in words :word_replaceinput(fEnter a {word} :)str1…
暂无图片
编程学习 ·

HBASE 高可用

为了保证HBASE是高可用的,所依赖的HDFS和zookeeper也要是高可用的. 通过参数hbase.rootdir指定了连接到Hadoop的地址,mycluster表示为Hadoop的集群. HBASE本身的高可用很简单,只要在一个健康的集群其他节点通过命令 hbase-daemon.sh start master启动一个Hmaster进程,这个Hmast…
暂无图片
编程学习 ·

js事件操作语法

一、事件的绑定语法 语法形式1 事件监听 标签对象.addEventListener(click,function(){}); 语法形式2 on语法绑定 标签对象.onclick function(){} on语法是通过 等于赋值绑定的事件处理函数 , 等于赋值本质上执行的是覆盖赋值,后赋值的数据会覆盖之前存储的数据,也就是on…
暂无图片
编程学习 ·

Photoshop插件--晕影动态--选区--脚本开发--PS插件

文章目录1.插件界面2.关键代码2.1 选区2.2 动态晕影3.作者寄语PS是一款栅格图像编辑软件&#xff0c;具有许多强大的功能&#xff0c;本文演示如何通过脚本实现晕影动态和选区相关功能&#xff0c;展示从互联网收集而来的一个小插件&#xff0c;供大家学习交流&#xff0c;请勿…
暂无图片
编程学习 ·

vs LNK1104 无法打开文件“xxx.obj”

写在前面&#xff1a; 向大家推荐两本新书&#xff0c;《深度学习计算机视觉实战》和《学习OpenCV4&#xff1a;基于Python的算法实战》。 《深度学习计算机视觉实战》讲了计算机视觉理论基础&#xff0c;讲了案例项目&#xff0c;讲了模型部署&#xff0c;这些项目学会之后可以…
暂无图片
编程学习 ·

工业元宇宙的定义与实施路线图

工业元宇宙的定义与实施路线图 李正海 1 工业元宇宙 给大家做一个关于工业元宇宙的定义。对于工业&#xff0c;从设计的角度来讲&#xff0c;现在的设计人员已经做到了普遍的三维设计&#xff0c;但是进入元宇宙时代&#xff0c;就不仅仅只是三维设计了&#xff0c;我们的目…
暂无图片
编程学习 ·

【leectode 2022.1.15】完成一半题目

有 N 位扣友参加了微软与力扣举办了「以扣会友」线下活动。主办方提供了 2*N 道题目&#xff0c;整型数组 questions 中每个数字对应了每道题目所涉及的知识点类型。 若每位扣友选择不同的一题&#xff0c;请返回被选的 N 道题目至少包含多少种知识点类型。 示例 1&#xff1a…
暂无图片
编程学习 ·

js 面试题总结

一、js原型与原型链 1. prototype 每个函数都有一个prototype属性&#xff0c;被称为显示原型 2._ _proto_ _ 每个实例对象都会有_ _proto_ _属性,其被称为隐式原型 每一个实例对象的隐式原型_ _proto_ _属性指向自身构造函数的显式原型prototype 3. constructor 每个prot…
暂无图片
编程学习 ·

java练习代码

打印自定义行数的空心菱形练习代码如下 import java.util.Scanner; public class daYinLengXing{public static void main(String[] args) {System.out.println("请输入行数");Scanner myScanner new Scanner(System.in);int g myScanner.nextInt();int num g%2;//…
暂无图片
编程学习 ·

RocketMQ-什么是死信队列?怎么解决

目录 什么是死信队列 死信队列的特征 死信消息的处理 什么是死信队列 当一条消息初次消费失败&#xff0c;消息队列会自动进行消费重试&#xff1b;达到最大重试次数后&#xff0c;若消费依然失败&#xff0c;则表明消费者在正常情况下无法正确地消费该消息&#xff0c;此时…
暂无图片
编程学习 ·

项目 cg day04

第4章 lua、Canal实现广告缓存 学习目标 Lua介绍 Lua语法 输出、变量定义、数据类型、流程控制(if..)、循环操作、函数、表(数组)、模块OpenResty介绍(理解配置) 封装了Nginx&#xff0c;并且提供了Lua扩展&#xff0c;大大提升了Nginx对并发处理的能&#xff0c;10K-1000K Lu…
暂无图片
编程学习 ·

输出三角形

#include <stdio.h> int main() { int i,j; for(i0;i<5;i) { for(j0;j<i;j) { printf("*"); } printf("\n"); } }
暂无图片
编程学习 ·

stm32的BOOTLOADER学习1

序言 最近计划学习stm32的BOOTLOADER学习,把学习过程记录下来 因为现在网上STM32C8T6还是比较贵的,根据我的需求flash空间小一些也可以,所以我决定使用stm32c6t6.这个芯片的空间是32kb的。 #熟悉芯片内部的空间地址 1、flash ROM&#xff1a; 大小32KB&#xff0c;范围&#xf…
暂无图片
编程学习 ·

通过awk和shell来限制IP多次访问之学不会你打死我

学不会你打死我 今天我们用shell脚本&#xff0c;awk工具来分析日志来判断是否存在扫描器来进行破解网站密码——限制访问次数过多的IP地址&#xff0c;通过Iptables来进行限制。代码在末尾 首先我们要先查看日志的格式&#xff0c;分析出我们需要筛选的内容&#xff0c;日志…
暂无图片
编程学习 ·

Python - 如何像程序员一样思考

在为计算机编写程序之前&#xff0c;您必须学会如何像程序员一样思考。学习像程序员一样思考对任何学生都很有价值。以下步骤可帮助任何人学习编码并了解计算机科学的价值——即使他们不打算成为计算机科学家。 顾名思义&#xff0c;Python经常被想要学习编程的人用作第一语言…
暂无图片
编程学习 ·

蓝桥杯python-数字三角形

问题描述 虽然我前后用了三种做法&#xff0c;但是我发现只有“优化思路_1”可以通过蓝桥杯官网中的测评&#xff0c;但是如果用c/c的话&#xff0c;每个都通得过&#xff0c;足以可见python的效率之低&#xff08;但耐不住人家好用啊&#xff08;哭笑&#xff09;&#xff09…