数据库基础(6) . DDL

3.2.DDL

数据定义语言 DDL : Data Definition Language

用于创建新的数据库、模式(schema)、表(tables)、视图(views)以及索引(indexes)等。

常见的DDL语句包括SHOWCREATEDROPALTER等。

3.2.0.常用关键字

3.2.0.1.操作
  1. **SHOW 展示 ** :

    • SHOW语句通常用来列出数据库中的各种对象,例如数据库、表、列、索引等。
  2. CREATE 创建

    • CREATE语句用于创建新的数据库对象,如数据库、表、索引、视图等。
  3. DROP 移除

    • DROP语句用于删除已存在的数据库对象。
  4. ALTER 调整

    • ALTER语句用于修改现有的数据库对象。它可以用来添加、删除或修改表中的列,改变表的名字,更改存储引擎等。
3.2.0.2.对象
  1. Database(数据库)

    • 数据库是一个组织化的数据集合,可以包含多个相关的数据表。数据库是最高级别的逻辑容器,在其中可以创建多个表、视图、索引等数据库对象。
  2. Table(表)

    • 表是数据库中的主要存储单元,用于存储特定类型的数据集。表由行(记录)和列组成,每一行表示一个实体,每一列表示实体的一个属性。
  3. Column(列 , 字段)

    • 列是表中的一个字段,用于存储某种类型的数据。每个列都有一个名称和一个数据类型。
  4. Key(键)

    • 键是一个或一组列,用于唯一标识表中的记录。主要有以下几种类型的键:
      • Primary Key(主键):用于唯一标识表中的每一行记录。一个表只能有一个主键,并且不能包含空值。
      • Foreign Key(外键):用于建立两个表之间的链接,表示这两个表之间的关系。外键必须参照另一个表的主键或唯一键。
      • Unique Key(唯一键):用于保证列中的值是唯一的,但是允许有空值的存在。
      • Index(索引):虽然索引本身不是键,但它可以帮助加速对表中数据的访问速度。

3.2.1.库结构操作

3.2.1.1.创建数据库

语法 : create database 库名

说明 : 库名 可以是英文, 数字, 中文, 下横杠_, 中横杠- , 但 建议使用 英文 , 多个单词用 下横杠连接

​ 库名不能重复

create database a0;
3.2.1.2.先判断存在再创建

如果 a0 库已经存在 会报错

[Err] 1007 - Can't create database 'a0'; database exists

语法 : create database IF NOT EXISTS 库名 如果不存在相同名字的数据库就创建, 否则只提示完成,但并不重新创建

说明 : IF NOT EXISTS 如果不存在

create database IF NOT EXISTS a0 ;
3.2.1.3.查询数据库

语法 : show databases 注意 database 加 s

show databases;

执行后会以表格形式列出数据库名

3.2.1.4.根据名字数据库

语法 : show databases like 条件 条件可以使用通配符 %进行匹配

show databases like 'a%';

执行后会以表格形式列出数据库名是以 'a’开头的数据库

3.2.1.5.指定使用数据库

语法 : use 库名 通过库名选择当前要使用的数据库

use a0;
3.2.1.6.修改数据库

数据库名是不能被修改的

通常只是用来修改数据库的字符编码

语法 : ALTER DATABASE 库名 内容

ALTER DATABASE a0 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3.2.1.7.删除数据库

语法 : drop database 库名

drop database a0;

数据库 a0 及其所有内容将被删除

注意 :

在执行DROP DATABASE操作之前,确保已经备份了重要的数据,并且确认删除是必要的。

如果只是想临时卸载数据库,可以考虑使用其他方法,如导出数据或将数据库设置为不可用状态,而不是直接删除。

3.2.2.表结构操作

3.2.2.1.建立表

在建立表的同时,

要指定表中的字段信息, 当然对字段的信息后期还可以修改

多个 字段信息之间使用 , 间隔

语法 :

create table 表名
(
字段名1 varchar(20),
字段名2 int
)

添加 学生表

create table student
(
   stu_id int ,
   stu_name       varchar(50) ,
   stu_birth        date
);
3.2.2.2.查询表结构

语法 : desc 表名

desc student;
3.2.2.3.修改字段为主键

语法 : alter table 表名 add primary key (字段名)

alter table student add primary key (stu_id);
3.2.2.4.修改主键为自增

语法 : alter table 表名 modify 主键名 int auto_increment

alter table student modify stu_id int auto_increment;
3.2.2.5.创建时指定主键

也可以在创建时 直接指定主键

create table emp
(
    emp_id              int  primary key  ,
    emp_name        varchar(50),
    emp_age           int 
);

指定主键时也可以指定 自增长

create table person
(    
	per_id int  primary key  auto_increment ,
      per_name varchar(50)
);

也可以单独指定

create table team
(
   team_id       int not null auto_increment ,
   team_title    varchar(50) ,
   stu_count    int ,
   primary key (team_id)
);
3.2.2.6.字段约束

在创建表时,字段的约束是非常重要的组成部分,它们有助于确保数据的完整性和一致性。以下是常见的字段约束及其含义:

  1. NOT NULL

    • 定义:该约束确保字段不能存储空值(NULL)。

    • 示例

      CREATE TABLE users (
          id INT NOT NULL,
          name VARCHAR(50) NOT NULL
      );
      
  2. UNIQUE

    • 定义:该约束确保字段中的值在整个表中是唯一的。可以应用于多个字段,形成组合唯一键。

    • 示例

      CREATE TABLE users (
          email VARCHAR(100) UNIQUE
      );
      
  3. PRIMARY KEY

    • 定义:作为唯一标识符的字段,表中每一行的数据都可以通过主键唯一确定。主键字段不能包含空值,并且必须是唯一的。

    • 示例

      CREATE TABLE users (
          id INT PRIMARY KEY
      );
      
  4. FOREIGN KEY

    • 定义:外键约束用于确保表之间的关系。它引用另一个表的主键。

    • 示例

      CREATE TABLE orders (
          order_id INT PRIMARY KEY,
          user_id INT,
          FOREIGN KEY (user_id) REFERENCES users(id)
      );
      
  5. CHECK

    • 定义:该约束用于限制字段中的值,以满足某些条件。

    • 示例

      CREATE TABLE users (
          age INT CHECK (age >= 18 AND age <= 120)
      );
      
  6. DEFAULT

    • 定义:如果没有给字段赋值,默认值将被自动插入。

    • 示例

      CREATE TABLE users (
          registration_date DATE DEFAULT CURRENT_DATE
      );
      
  7. AUTO_INCREMENT

    • 定义:此属性用于自动生成一个唯一的整数值,通常用于主键字段。

    • 示例

      CREATE TABLE users (
          id INT AUTO_INCREMENT PRIMARY KEY
      );
      
3.2.2.7.查询表
show tables;
3.2.2.8.修改表 增加字段

语法 : alter table 表名 add 字段 字段类型

给 学生 增加 体重 字段

alter table student add weight int;
3.2.2.9.修改表 修改字段类型

语法 : alter table 表名 modify 字段名 改后类型

将 体重 字段类型修改成 浮点数

alter table student modify weight  double;
3.2.2.10.修改表 修改字段名称

语法 : alter table 表名 rename column 原名 to 现名

alter table student rename column weight to stu_weight;
3.2.2.11.修改表 删除一个字段

语法 : alter table 表名 drop column 字段名

删除 体重 字段

alter table student drop column stu_weight;
3.2.2.12.修改表名

语法 : rename table 原名 to 新名

rename table person to people;
3.2.2.13.删除表

语法 : drop table 表名

drop table emp;
3.2.2.14.先判断存在再删除

如果不存在的表 删除会报错

[SQL]drop table emp;
[Err] 1051 - Unknown table 'a0.emp'

可以先判断 再删除

drop table if exists person;
3.2.2.15.添加表同时附带注释

在创建表时 可以使用 comment 关键字来 设置注释

drop table if exists teacher;

create table teacher (
  tea_id int(11) not null  auto_increment comment '教师主键',
  tea_name varchar(50)  comment '教师姓名',
   primary key (tea_id)
) comment = 'teacher 教师表';

3.2.2.16.修改增加注释

通过 alter table

-- 修改字段的注释
alter table student 
modify column stu_name varchar(50) comment '学生姓名';

-- 修改表的注释
alter table student comment 'student 学生';
3.2.2.17. 学生表增加外键
-- 增加外键字段 team_id
alter table student add team_id int;

-- 将 team_id 与 team关联,  外键 起名FK_Reference_1
alter table student add constraint FK_Reference_1 foreign key (team_id)
    references team (team_id) on delete restrict on update restrict;

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

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

相关文章

Vue Cli 脚手架目录文件介绍

小试牛刀 //vetur高亮; vuetab 快速生成 <template><div class"box">我是个盒子<button click"fn">按钮</button></div> </template><script> export default {methods:{fn(){alert("Hello Vue")}} …

基于springboot的家装平台设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

Docker平台搭建方法

Docker平台搭建方法 1.1在VMware中创建两个虚拟机&#xff0c;只需要1个网卡&#xff0c;连接192.168.200.0网络。 虚拟机分配2个CPU,2G内存&#xff0c;60G硬盘&#xff0c;主机名分别为server和client,IP地址分别为192.168.200.137和192.168.200.138。server节点还兼做regis…

cache(二)直接缓存映射

在知乎发现一份不错得学习资料 请教CPU的cache中关于line,block,index等的理解&#xff1f; PPT 地址 https%3A//cs.slu.edu/%7Efritts/CSCI224_S15/schedule/chap6-cache-memory.pptx 课程主页 https://cs.slu.edu/~fritts/CSCI224_S15/schedule/ 0. 缓存定义 这张图展示了缓…

Zookeeper的安装与使用

一、简介 1.1、概念 ZooKeeper 是一个开源的分布式协调服务&#xff0c;主要用于解决分布式系统中的数据一致性问题。它提供了一种可靠的机制来管理和协调分布式系统的各个节点。ZooKeeper 的设计目标是简化分布式应用的开发&#xff0c;提供简单易用的接口和高性能、高稳定性…

SQLI LABS | Less-41 GET-BLIND Based-Intiger-Stacked

关注这个靶场的其它相关笔记&#xff1a;SQLI LABS —— 靶场笔记合集-CSDN博客 0x01&#xff1a;过关流程 输入下面的链接进入靶场&#xff08;如果你的地址和我不一样&#xff0c;按照你本地的环境来&#xff09;&#xff1a; http://localhost/sqli-labs/Less-41/ 本关是堆…

SpringCloud 微服务消息队列灰度方案 (RocketMQ 4.x)

目录 背景遇到的问题 RocketMQ 基础基础消息模型扩展后的消息模型部署模型相关概念点 方案对比影子Topic的方案Tag的方案UserProperty的方案影子Group的方案灰度分区的方案方案对比 灰度分区方案设计适配只有部分灰度的情况所做的功能扩展消费者&#xff08;无灰度&#xff09;…

Simulink对仿真数据进行FFT频谱分析

1 问题引入 在仿真阶段&#xff0c;经常会遇到有些仿真结果的数据需要进行频谱分析&#xff0c;如何快速便捷地操作&#xff0c;这里介绍其中一种简单的方法。主要利用 Simulink 中 Scope 显示的数据进行保存并进行 FFT 频谱分析&#xff0c;按下文操作即可。 2 实战 2.1 将…

Vue前端开发:gsap动画库

gsap它的全称是GreenSock Animation Platform&#xff0c;它是一个功能非常强大的动画平台&#xff0c;它可以对JavaScript操作的所有内容实现动画效果&#xff0c;同时&#xff0c;还解决了不同浏览器中存在的兼容性问题&#xff0c;而且速度和效率都非常快&#xff0c;全球超…

【layui】echart的简单使用

图表类型切换&#xff08;柱形图和折线图相互切换&#xff09; <title>会员数据</title><div class"layui-card layadmin-header"><div class"layui-breadcrumb" lay-filter"breadcrumb"><a lay-href""&g…

[Redis] Redis缓存机制

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

绘制3D图

一个 3D 函数的表面图&#xff0c;其中包含向量场。 Python 代码示例&#xff0c;使用 matplotlib 和 numpy 库来绘制类似的图。 python 复制代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D# 生成网格 x np.linspace(-…

【开源免费】基于SpringBoot+Vue.JS课程答疑系统(JAVA毕业设计)

博主说明&#xff1a;本文项目编号 T 070 &#xff0c;文末自助获取源码 \color{red}{T070&#xff0c;文末自助获取源码} T070&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

C#开发流程

注&#xff1a;检查数据库链接 设置搜索 1.新建模块文件夹 对应应用 右键-添加-新建文件夹 2.新建类 在新建模块下右键 新建-类&#xff0c;修改类名称 修改internal为public 新建所需字段&#xff0c;注意类型声明及必填设置 [SugarColumn(IsNullable false)]public strin…

【Transformer】模型输出模块处理

目录 输出处理模块步骤1. 交叉注意力后的输出向量2. 线性变换&#xff08;投影&#xff09;3. Softmax 操作4. 选择最大概率的单词5. 输出词并进入下一轮预测总结&#xff1a; 线性变换详解1. 交叉注意力后的输出向量2. 线性层的参数3. 线性变换的计算4. Softmax 转换为概率示例…

对话流式数据加载

需求&#xff1a;根据接口返回的数据进行类似打字机渲染的效果 使用的fetch 流式处理 fetch(BASE_URL/api/apps/ this.app_Id /chat-messages, {signal: this.controller.signal,method: POST,headers: {Authorization: Bearer localStorage.getItem(token),Content-Type: …

关于git使用的图文教程(包括基本使用,处理冲突问题等等)超详细

目录 用户签名,初始化git git提交流程图 提交到本地库 版本穿梭 分支操作 分支合并冲突 团队协作 github的使用 推送代码 克隆 拉取代码 团队协作冲突 团队协作之分支管理 推送分支到分支&#xff1a; 拉去远程库分支到本地库&#xff1a; 本地删除远程分支&am…

6、If、While、For、Switch

6、If、While、For、Switch 一、If 1、if-else if (boolean) {代码块 } else if (boolean) {代码块 } else if (boolean) {代码块 } else { // 默认情况代码块 }关于IDEA单元测试控制台不能输入数据的问题&#xff1a; https://blog.csdn.net/m0_72900498/article/details/…

【智谱开放平台-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

贪心算法day05(k次取反后最大数组和 田径赛马)

目录 1.k次取反后最大化的数组和 2.按身高排序 3.优势洗牌 1.k次取反后最大化的数组和 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 代码&#xff1a; class Solution {public int largestSumAfterKNegations(int[] nums, int k) {//如…