MySQL数据库的SQL语句

news2024/11/17 21:48:21

MySQL数据库的SQL语句

  • MySQL的常用数据类型
    • MySQL数据类型及含义
    • char与varchar的区别
  • MySQL的基本命令
    • 登录数据库
    • 查看MySQL数据库版本
    • 查看当前服务器中的数据库
    • 查看MySQL库中的表
    • 查看表的结构(字段)
  • SQL语句
    • SQL简介及分类
    • 创建新的数据库
    • 创建新的表
    • 添加表中各字段内容
    • 查看表中内容
    • 删除库/表
    • 在数据表中删除指定的数据记录
  • SQL语句用法实例
    • 修改表名
    • 扩展表结构(即增加表的纵列,增加字段)
    • 已有表中添加字段
    • 修改字段名及数据类型
    • 删除指定字段
    • 克隆表
    • 清空表,删除表内的所有数据
    • 创建临时表
  • 补充
    • 数据类型的属性
    • MySQL常见约束
    • 如何创建外键约束?

MySQL的常用数据类型

MySQL数据类型及含义

在这里插入图片描述

char与varchar的区别

在这里插入图片描述

  • char(n) 若存入字符数小于n,会使用空格补于其后,查询的时候会再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
  • char(n) 为固定长度,char(n)不管是存入几个字符,都将占用n个字节,varchar是存入的实际字符数n+1个字节(n<=255)或2个字节(n>255),
  • 由于长度占用字节的区别,varchar实际存入字符会比正常存入字符数+1,所以占用空间高,因此char查找效率会很高,varchar查找效率会更低。
  • char插入时可省略,vaechar插入时不会省略,查找时省略。

MySQL的基本命令

登录数据库

mysql -u root -p  # -u 指定用户 -p 该选项后面可以直接跟明文密码进行登录

在这里插入图片描述
在这里插入图片描述

查看MySQL数据库版本

mysql -V    # 查看MySQL数据库的版本

在这里插入图片描述

查看当前服务器中的数据库

show databases;   #注意:所有操作都要加上“;”

在这里插入图片描述

查看MySQL库中的表

use <库名>;  # 切换到指定库
show tables; # 显示指定库中的所有表

在这里插入图片描述

查看表的结构(字段)

use <库名>;  # 切换到库
desc <表>;   # 查看库中表字段(数据)

desc <表>\G;  
#页面显示比较混乱时,使用\G可以将每一行表格的字段竖向分段显示

在这里插入图片描述

SQL语句

SQL简介及分类

SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理邓功能。

  • SQL语言分类
    • DDL:数据定义语言;用于创建数据库对象,如库、表、索引等
    • DML:数据操作语言:用于对表中的数据进行管理
    • DQL:数据查询语言:用于从数据表中查找符合条件的数据记录
    • DCL:数据控制语言:用于设置或者更改数据库用户或角色权限

创建新的数据库

create database <新库名>; #创建新的数据库

在这里插入图片描述

创建新的表

use <库>;               #切换到指定库
create table <新表名>(字段1 数据类型,字段2 数据类型,...字段n 数据类型primary key (主键名));
# 创建表在当前库中 
# primary key (主键名) 可以给某一列设置主键
# 主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键

在这里插入图片描述

添加表中各字段内容

insert into <库名>.<表名>(字段1,字段2,字段3,字段4,字段5) values (字段值1,字段值2,字段值3,字段值4,字段值5);
# 如果字段的数据类型中使用了字符类型(如char、varchar等字符类型),输入字段值时两边需要加上单引号
# 该操作也可以指定某些字段的值,进行添加,未添加的值均按照之前的设定的默认值进行添加

在这里插入图片描述

查看表中内容

select * from <表名>; #当前库中指定表中内容

select * from <库名>.<表名> #查看指定库中表内容


select * from <表名>\G #将表中每一行记录的数据纵向查看

在这里插入图片描述

删除库/表

drop database <库名>;      #删除库
drop table <表名>;         #删除当前库中的指定表

drop table <库名>.<表名>;  #直接删除某库中的某表

在数据表中删除指定的数据记录

delete from <表名> where 条件表达式
#删除指定表中的数据

在这里插入图片描述

SQL语句用法实例

修改表名

alter table <旧表名> rename <新表名>;     #更改表名

在这里插入图片描述

扩展表结构(即增加表的纵列,增加字段)

alter table <表名> add <字段> <数据类型>      #在已有的表中添加相关字段和制约属性
alter table class1 add cardid char(18) default '暂不提供';
#在class1表中添加cardid字段,设置数据类型为字符,最多填写18个字节,设置default默认值为'暂不提供'

在这里插入图片描述
在这里插入图片描述

已有表中添加字段

alter table <表名> add <字段> <数据类型>;

在这里插入图片描述

修改字段名及数据类型

alter table <表名> change <旧字段名> <新字段名> 数据类型;
# 该命令可以更改表结构中的字段名称,并修改字段的数据类型

#如果只想要更改字段的数据类型也可以执行以下命令格式
alter table <表名> change <字段名> <字段名> 数据类型;
#以上两个字段内容一致

在这里插入图片描述
在这里插入图片描述

删除指定字段

alter table <表名> drop <字段>;
#指定表删除指定字段

在这里插入图片描述

克隆表

create table <新表> like <旧表>;
#通过like方法复制旧表的表结构
insert into <新复制表> select * from <旧表>;
使用insert into 进行插入(导入)数据,数据选取使用select * from 提取旧表内容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

清空表,删除表内的所有数据

delete from <表名>;
  • delete 清空表后,返回结果内有删除的记录条目;delete工作时是一行一行的删除记录数据的;
  • 如果表中有自增长字段,使用delete from删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增长

创建临时表

  • 临时表创建成功之后,使用show tables命令是看不到创建的临时表的,临时表会在连接退出后被销毁。如果在退出连接之前,也可以执行增删改查等操作,比如使用drop table 语句将会直接删除临时表。
 create temporary table <表名> (字段1 数据类型,字段2 数据类型,...) 

在这里插入图片描述
在这里插入图片描述

补充

数据类型的属性

在这里插入图片描述

MySQL常见约束

  1. 非空约束(not null)
    非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。
    Null类型特征:所有的类型的值都可以是null,包括int、float 等数据类型

  2. 唯一性约束(unique)
    唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。
    唯一约束不允许出现重复的值,但是可以为多个null。
    同一个表可以有多个唯一约束,多个列组合的约束。
    在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。
    唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。

  3. 主键约束(primary key) PK
    主键约束相当于 唯一约束 + 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。
    每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。
    当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

  4. 外键约束(foreign key) FK
    外键约束是用来加强两个表(主表和从表)的一列或多列数据之间的连接的,可以保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。
    创建外键约束的顺序是先定义主表的主键,然后定义从表的外键。也就是说只有主表的主键才能被从表用来作为外键使用,被约束的从表中的列可以不是主键,主表限制了从表更新和插入的操作。

  5. 默认值约束 (Default)
    若在表中定义了默认值约束,用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL。

  6. 自增约束(AUTO_INCREMENT)
    自增约束(AUTO_INCREMENT)可以约束任何一个字段,该字段不一定是PRIMARY KEY字段,也就是说自增的字段并不等于主键字段。
    但是PRIMARY_KEY约束的主键字段,一定是自增字段,即PRIMARY_KEY 要与AUTO_INCREMENT一起作用于同一个字段。
    当插入第一条记录时,自增字段没有给定一个具体值,可以写成DEFAULT/NULL,那么以后插入字段的时候,该自增字段就是从1开始,没插入一条记录,该自增字段的值增加1。当插入第一条记录时,给自增字段一个具体值,那么以后插入的记录在此自增字段上的值,就在第一条记录该自增字段的值的基础上每次增加1。
    也可以在插入记录的时候,不指定自增字段,而是指定其余字段进行插入记录的操作。

如何创建外键约束?

① 外键的定义
如果一个属性字段X在表一中是主键,而在表二不是主键,则字段X称为表二的外键。

  • 主键表和外键表的理解
    • 以公共关键字作为主键的表为主键表(父表、主表)
    • 以公共关键字作为外键的表为外键表(从表、外表)

② 主外键表的应用实例
创建2个表,一个专业名称的表,一个学生的表,学生所学的专业编号与,专业表中的专业对应编号进行一一对应

create table profession(proid int,proname char(10));
# 创建一个名为profession(专业)的表

create table student (id int primary key,name char(10),age int,proid int not null);
# 创建一个名为student(学生)的表

alter table profession add primary key(proid);
# 给profession表增加主键,设置主键为proid

alter table student add constraint FK_pro foreign key(proid) references profession(proid);
# 给student表增加从键proid,并且绑定profession的主键proid作为主从键绑定
# constraint FK_pro 指定外键的名称为FK_pro

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 验证测试:
    外键表的数据增加
    在这里插入图片描述
    主键表的数据增加

在这里插入图片描述
外键表的数据删除

在这里插入图片描述
主键表的数据删除
在这里插入图片描述

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

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

相关文章

卡尔曼滤波之基本概念和状态观测器

图裂参考原文&#xff1a;https://www.cnblogs.com/odesey/p/16937124.html 1. 为什么使用 Kalman Filters&#xff1f; 1.1 什么是 Kalman Filters&#xff1f; Kalman Filters 是一种优化估计算法。下面使用使用两个例子说明 Kalman Filters 的用处。 例子1&#xff1a; …

电子学会2021年3月青少年软件编程(图形化)等级考试试卷(二级)答案解析

目录 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 二、判断题&#xff08;共10题&#xff0c;每题2分&#xff0c;共20分&#xff09; 三、编程题&#xff08;共2题&#xff0c;共30分&#xff09; 青少年软件编程&#xff08;图形化&a…

Java#32(异常, File)

目录 一.异常 异常: 代表程序出现问题 二.File 1.File的三种构造方法 2.File的常见的成员方法 一.异常 异常: 代表程序出现问题 图解: 从Java文件------>字节码文件的过程就是编译(在这期间的异常就是编译时异常) 从字节码文件------->运行结果的过程就是运行(在这期…

Linux系统调用与API

系统调用是应用程序与操作系统内核之间的接口&#xff0c;它决定了应用程序是如何与内核打交道的。无论程序是直接进行系统调用&#xff0c;还是通过运行库&#xff0c;最终还是会达到系统调用这个层面。 系统调用介绍 1、什么是系统调用 在现代的操作系统里&#xff0c;程序运…

CEC2015:动态多目标野狗优化算法求解CEC2015(提供完整MATLAB代码,含GD、IGD、HV和SP评价指标)

一、动态多目标优化问题简介 现实世界中&#xff0c;许多优化问题不仅具有多属性&#xff0c;而且与时间相关&#xff0c;即随着时间的变化&#xff0c;优化问题本身也发生改变&#xff0c;这类问题称为动态多目标优化问题&#xff08;dynamic multi-objective optimization p…

写一个flutter程序—记录

目录 使用外部package 添加一个Stateful widget Flutter是谷歌的移动UI框架&#xff0c;可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界&#xff0c;Flutter正在被越来越多的开发者和组织使用&#xff0c;并且Flutter是完全…

[附源码]Python计算机毕业设计SSM精品旅游项目管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【Pytorch安装】windows下,安装了torch但是import torch失败

【Pytorch安装】windows下&#xff0c;安装了torch但是import torch失败问题原因解决问题 输入 python 进入python环境&#xff0c;输入 import torch 但是显示找不到这个包 输入 pip list 查看之前是否安装成功 但是可以看到包都在 原因 电脑中先前安装了多个 python &am…

Ajax用法总结

目录 Ajax简介 Ajax使用 xhr内部五种状态 Ajax在IE浏览器上存在的缓存问题 如何发送post请求 如何取消Ajax请求 ​编辑 jQuery封装的Ajax如何使用&#xff1f; Ajax简介 Ajax全称为Asynchous Javascript And XML&#xff0c;即异步的JS和XML&#xff0c;通过Ajax可以在…

Linux进程的调度

目录 调度策略与调度类 实时调度策略 普通调度策略 调度类 sched_class有几种实现&#xff1a; 完全公平调度算法 调度队列与调度实体 调度类是如何工作的&#xff1f; 调度策略与调度类 在Linux里面&#xff0c;进程大概可以分成两种。 一种称为实时进程&#xff0c;…

Redis主从复制+哨兵模式

必读 redis的主从复制是单向的&#xff0c;只能有主节点到从节点&#xff0c;主节点以写为主从节点以读为主不能写入数据&#xff01;因为系统的80%的需求都是读的需求。 redis服务默认自己是主节点&#xff0c;一个主节点由一个或多个从节点&#xff0c;一个从节点只有一个主…

图信号处理论文

图信号处理并且非图神经网络的论文&#xff1a; Donget.al“GraphSignal Processingfor MachineLearning A Review and New Perspectives," ICASSP Tutorial, June 2021. Lorenzoet.al“Adaptiveleast mean squaresestimation ofgraph signals"IEEE Trans. Signal I…

Vue3 学习笔记 —— 破坏式更新、自定义指令 directive

目录 1. 什么叫破坏式更新&#xff1f; 2. Vue3 中的自定义指令 2.1 自定义指令的生命周期 2.1.1 Vue2 Vs Vue3 的自定义指令生命周期 2.1.2 自定义指令的生命周期中&#xff0c;接收的参数 2.2 定义一个自定义指令 2.2.1 在 setup 中定义自定义指令&#xff08;此处为 …

数据结构 树练习题

目录 判断 选择 判断 1.一棵有124个结点的完全二叉树&#xff0c;其 叶结点个数是确定的。 【答案】正确 【解析】完全二叉树 若设二叉树的深度为h 除第 h 层外 其它各层 1&#xff5e;(h-1) 的结点数都达到最大个数(即1~(h-1)层为一个满二叉树) 第 h 层所有的结点都连续集…

【C++】STL

文章目录回调函数&#xff1a;一、STL的诞生二、STL基本概念三、STL六大组件四、STL中容器&#xff0c;算法&#xff0c;迭代器回调函数&#xff1a; 函数被作为参数传递到另一个函数&#xff08;主要函数&#xff09;的那个函数就叫做 回调函数 一、STL的诞生 C的面向对象和…

DHTMLX Diagram JavaScript/HTML5 Pro Library:5.0

Diagram — JavaScript/HTML5 Diagram Library Ω578867473 破解版DHTMLX Diagram comprises a set of interactive HTML5 UI components such as organization charts, flowcharts, decision trees, block diagrams, mind maps, etc. Consisting of nodes and connectors, di…

i.MX 6ULL 驱动开发 二十八:网络设备

一、网络设备的系统框图 MAC&#xff1a;工作在网络模型的数据链路层&#xff0c;通过 RGMII 或 RMII 接口连接 PHY&#xff0c;MAC 控制器中的 MDIO 控制器提供 MDIO 接口&#xff0c;用于访问 PHY 寄存器。 PHY&#xff1a;工作在网络模型的物理层&#xff0c;是 IEEE802.3 …

SVN项目,提交Git保留之前提交记录

&#x1f4c3;目录跳转简介&#xff1a;1.创建文件2.命令下载:3.上传到远程git3.1 创建远程git工程3.2 添加一个新的远程 Git 仓库3.3 拉取远程master的数据合并3.3 推送远程git分支简介&#xff1a; 由于之前直接搞的项目是部署在自己搭建的SVN服务器上&#xff0c;平时创建的…

5. JVM调优工具详解及调优实战(这里有我的实战案例预制构件生产管理平台)

1. Jmap&#xff0c;Jstack&#xff0c;Jinfo命令详解 1.1 Jmap 此命令可以用来查看内存信息&#xff0c;实例个数以及占用内存大小 jps 先查看有哪些java程序 jmap -histo 16492 > ./log.txt jmap -heap 16492 查看堆的信息 查看堆年轻代老年代的使用情况 堆内存dum…

Matlab:tftb-0.2时频工具箱安装小记

Matlab&#xff1a;tftb-0.2时频工具箱安装小记一、安装过程记录1、解压缩&#xff1a;2、将解压缩后的文件夹复制到自己的Matlab安装目录工具箱下&#xff1b;3、打开Matlab设置路径&#xff1a;设置路径4、测试是否安装成功&#xff1a;5、小试牛刀叮嘟&#xff01;这里是小啊…