数据库基础(6) . DDL

devtools/2024/11/6 21:36:30/

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;

http://www.ppmy.cn/devtools/131846.html

相关文章

Spring Boot驱动的导师双选系统:设计与实现

第一章 绪论 1.1 选题背景 如今的信息时代&#xff0c;对信息的共享性&#xff0c;信息的流通性有着较高要求&#xff0c;尽管身边每时每刻都在产生大量信息&#xff0c;这些信息也都会在短时间内得到处理&#xff0c;并迅速传播。因为很多时候&#xff0c;管理层决策需要大量信…

聚合 SDK 广告的工作原理及优势

聚合 SDK 广告的工作原理通常包括以下几个主要步骤&#xff1a; 1. 集成聚合 SDK&#xff1a;开发者将聚合 SDK 集成到其应用程序中。 2. 配置参数&#xff1a;开发者在聚合 SDK 中设置各种参数&#xff0c;例如广告平台的优先级、广告类型偏好、出价策略等。 3. 应用启动与请…

Python实例:爱心代码

前言 在编程的奇妙世界里,代码不仅仅是冰冷的指令集合,它还可以成为表达情感、传递温暖的独特方式。今天,我们将一同探索用 Python 语言绘制爱心的神奇之旅。 爱心,这个象征着爱与温暖的符号,一直以来都在人类的情感世界中占据着特殊的地位。而通过 Python 的强大功能,…

算子级血缘助企业数据管理“自动化、精细化、智能化”

经过这么多年的数字化转型&#xff0c;数据已成为驱动企业决策优化和运营效能提升的核心要素。在这个过程中&#xff0c;数据的发掘和利用&#xff0c;已经成为企业实现精细化运营、智能化决策的重要环节。因此&#xff0c;构建一个更高效、全面、精准的数据管理体系&#xff0…

sqlalchemy连接mysql数据库

create_engine() 是 SQLAlchemy 中用于创建数据库连接的函数&#xff0c;它接受多个参数来配置连接池、日志输出等方面。你提到的 create_engine(DATABASE_URI, echoTrue, pool_size5, max_overflow2, pool_timeout30) 中的各个参数的含义如下&#xff1a; 1. DATABASE_URI 意…

L1G3000 提示工程(Prompt Engineering)

什么是Prompt(提示词)? Prompt是一种灵活、多样化的输入方式&#xff0c;可以用于指导大语言模型生成各种类型的内容。什么是提示工程? 提示工程是一种通过设计和调整输入(Prompts)来改善模型性能或控制其输出结果的技术。 六大基本原则: 指令要清晰提供参考内容复杂的任务拆…

[C++从小白到大牛]第三篇:3分钟带你入门C++(下)

目录 7->内联函数 7.1 概念 7.2特性 8->auto关键字 8.1 类型别名思考 8.2 auto简介 8.3 auto的使用细则 8.3 auto不能推导的场景 9->基于范围的for循环 9.1 范围for的语法 9.2 范围for的使用条件 10->指针空值 10.1 C98中的指针空值 您的专属鼓励师 7…