首页 > 数据库 >数据库系统------sql语句

数据库系统------sql语句

时间:2024-09-25 12:01:08浏览次数:7  
标签:unique varchar name -- sql ------ table 数据库系统 null

创建

1

以上的图就是sql中创建表的大致使用方法啦,每一个椭圆或者圆就是sql固定的语法,然后矩形就是我们自己自定义的,然后箭头代表着输入的顺序,如果箭头又回到某个起始处,表示这可以是一个循环,比如定义多个列,以下就带大家一起走一遍这个流程吧

我们按照这个图的输入顺序一个一个写

ok,第一个进入到一个椭圆,我们抄下来

create table

下一步进入到一个矩形,可以输入表名,那我就定义一个学生表

create table Student

下一步是一个圆,我们抄下来

create table Student (

下一步是一个矩形,可以输入列名,那我就定义一个名字列

create table Student (
  name

下一步是一个矩形,可以输入列的类型,我们定义为varchar(10),表示变长,最多10个字符

create table Student (
  name varchar(10)

下一步的箭头分叉,表示有多种选择,换句话说你可以不写not null, unique这些,这里为了演示,我就写了,大家知道能够忽略就行,sql中-- 表示注释

-- not null 表示该列的值不能为空
-- unique 表示该列的值唯一,即不能重复
-- default 表示默认,后面可以自己设置默认值,如果列没有初始值,就会自动使用默认值
-- 这三个可以一起使用
create table Student (
  name varchar(10) not null unique default Jack

上一步我们直接写了了三个椭圆,若依这里是到default写完后,下一步又是一个分叉,我们这里走左边(即输入一个逗号)就构成了一个循环,表示再定义三个列,一个年龄,一个学号,一个系名

create table Student (
  name varchar(10) not null unique default Jack,
  age int,
  id char(5) not null unique,
  dept_name varchar(20) not null,

ok,我们又回到那个箭头分叉处了,这里我们选择结束列的定义,然后进入主码的定义,同样这里也可以省略,这里就快一点了我们就不一步一步输入了,我们将id列设置为主码

create table Student (
  name varchar(10) not null unique default Jack,
  age int,
  id char(5) not null unique,
  dept_name varchar(20) not null,
  primary key (id),

ok,然后我们进入外码的定义,同样这里也可以省略,我们将dept_name列设置为外码,并且假定已经有一个表department了, 外键名我们就省略了

create table Student (
  name varchar(10) not null unique default Jack,
  age int,
  id char(5) not null unique,
  dept_name varchar(20) not null,
  primary key (id),
  foreign key (dept_name) references department, -- 表示dept_name是引用自表department

这里我们进入了 on delete 的范围了,然后同样可以省略,因为它已经设置了默认值,就是那个有下划线的,不过为了演示,我们不省略它

-- on delete 约束用于定义在删除父表(即引用表)中的记录时,子表(即被引用表)中相关记录的处理方式
-- restrict 当尝试删除父表中的记录时,如果子表中存在相关的记录,则会阻止删除操作
-- cascade 当父表中的记录被删除时,子表中所有相关的记录也会被自动删除
-- set null 当父表中的记录被删除时,子表中相关记录的外键列会被设置为 NULL
create table Student (
  name varchar(10) not null unique default Jack,
  age int,
  id char(5) not null unique,
  dept_name varchar(20) not null,
  primary key (id),
  foreign key (dept_name) references department on delete cascade

下一步我们进入到check范围,同样可以省略,也可以循环,我们这里就写一个就行了

-- check 约束用来限制列值
create table Student (
  name varchar(10) not null unique default Jack,
  age int,
  id char(5) not null unique,
  dept_name varchar(20) not null,
  primary key (id),
  foreign key (dept_name) references department on delete cascade,
  check (age >= 18 and age <= 50) --- 确保年龄在18到50岁

在下一步就结束了,我们输入右括号和分号,就表示这个表的定义完成了

create table Student (
  name varchar(10) not null unique default Jack,
  age int,
  id char(5) not null unique,
  dept_name varchar(20) not null,
  primary key (id),
  foreign key (dept_name) references department on delete cascade,
  check (age >= 18 and age <= 50)
);

总结

  • create table 表名 (...); 这样的格式表示创建表,括号内是表的具体定义,分号表示表的定义的结束
  • 逗号用来表示表中每行语句的结束
  • 主要就是 列的定义主码的定义外码的定义 以及 check的定义, 有些是可以省略的
  • 最后,最重要的一点是,每个数据库的sql语句可能会有点差别,具体的语法大家一定要去看相关资料,不过大致的创建过程是一样的

查询

2

这个看的方法和上一节的是一样的,这里我就给个例子,然后说下每个子句的作用

-- select 用来挑选最后返回的结果列
-- distinct 表示去除重复行
-- as 表示重命名
select distinct name as distinct_name, count(id) as num_student
from Student -- from表示来源表
where age = 20 -- 对选中的记录进行筛选
group by dept_name -- 表示根据系名进行分组,这会对每个分组进行count(id)计数
having num_student > 100 -- 只选择那些有100人以上的系
order by id desc; -- order by 表示排序,然后desc是降序,asc是升序(默认)

总结

这里只演示了些比较简单的,还有连接表,嵌套查询等这里就不演示

然后,需要注意的是where子句是对行进行筛选,having子句是对组进行筛选,两者操作的对象是不一样的

修改

update

用于更新表中的现有记录

update table_name
set column1 = value1, column2 = value2, ...
where condition;

delete

用于删除表中的数据,不是删除表!!

delete from table_name
where condition;

insert

用于向表中插入新记录

insert into table_name (column1, column2, ...)
values (value1, value2, ...);

drop

删除表

drop table table_name;

总结

以上都是展示基础用法,更高级的用法请大家查阅相关资料

标签:unique,varchar,name,--,sql,------,table,数据库系统,null
From: https://www.cnblogs.com/dylaris/p/18430864

相关文章

  • Linux 启动系统的过程中使用rd.break 在断点前进入shell
    参考:https://man7.org/linux/man-pages/man7/dracut.cmdline.7.html使用rd.break={cmdline|pre-udev|pre-trigger|initqueue|pre-mount|mount|pre-pivot|cleanup}droptoashellbeforethedefinedbreakpointstarts介绍rd.break参数允许您在内核启动过程中......
  • 使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
    在 Kubernetes集群中部署微服务在 5G电信中至关重要。但是,它也带来了重大的安全风险。虽然防火墙规则和代理提供了初始安全性,但Kubernetes中的默认通信机制(例如未加密的网络流量和缺乏访问控制)本质上是不安全的。这种不安全性可能会危及敏感数据。因此,在每个微服务Pod中实......
  • 使用 NCache 将 Java 微服务扩展到极致性能
            微服务已成为软件开发领域的一种变革性架构方法,提供了从整体结构到更加模块化和可扩展的系统的范式转变。微服务的核心是将复杂的应用程序分解为更小的、可独立部署的服务,这些服务可以无缝通信,从而提高敏捷性、灵活性和易维护性。这种分散的方法使开发人员能够专注......
  • Java 性能调优:调整 GC 线程以获得最佳结果
        垃圾回收(GC)在Java的内存管理中起着重要作用。它有助于回收不再使用的内存。垃圾回收器使用自己的线程集来回收内存。这些线程称为GC线程。有时,JVM最终可能会有太多或太少的GC线程。在这篇文章中,我们将讨论为什么JVM最终会拥有太多/太少的GC线程,它的后果,以及解......
  • 什么是带有示例的 Java 中的交错数组?
    Java中的交错数组交错数组,也称为数组数组,是一种数据结构,其中数组用于存储其他数组。交错数组的主要特征是主数组的每个元素可以具有不同的大小,从而允许在二维结构中使用可变的列长度。为了理解Jagged数组的概念,让我们考虑一个例子。假设我们想要存储有关学生及其各自成绩的信息......
  • 使用 AuraDB 免费版构建 Java 微服务
        对于今天的冒险,我们希望构建一个Java微服务,它连接到Neo4jAuraDBFree数据库中的图形数据并与之交互。我们的数据是 Goodreads数据集的精简版本,其中包括书籍、作者和评论信息。虽然书籍和作者非常适合MongoDB等文档数据库,但一旦您将评论添加到组合中,关系的细微差别......
  • 直播平台美颜功能开发方案:基于视频美颜SDK的集成详解
    本篇文章,小编将于大家共同探究视频美颜SDK的美颜功能开发方案,帮助开发者深入理解其集成过程及关键技术。 一、美颜功能的重要性在竞争激烈的直播市场中,直播平台如何提升用户体验至关重要。美颜功能不仅能够改善主播的形象,提升观众的观看体验,还能增强互动性,增加用户留存率。优秀的......
  • 像JSON一样使用ProtoBuf,空间还能缩小60%,性能提升100%
    引言在前面《释放你九成的带宽和内存:GZIP在解决Redis大Key方面的应用》一文中我使用GZIP算法可以将JSON格式数据的大小缩小88%从而节省了大量的存储和带宽资源,本文介绍另一种JAVA对象序列化神器——ProtoBuf(ProtocolBuffers(),它是由Google开发的一种用于序列化结构化数据的高效、......
  • 了解 Java 中的浮点精度问题
    Java浮点数看起来很熟悉在 Java 中,我们有两种类型的浮点数:和.所有 Java开发人员都知道它们,但无法回答以下模因中描述的简单问题:floatdouble你够机器人吗?您对Float和Double了解多少?float并表示浮点数。使用32位,而使用64位,可用于十进制或小数部分。但这实际上意味着什......
  • 嵌入式C语言自我修养:C语言的面向对象编程思想
    ⭐关联知识点:C和C++的区别代码复用与分层思想什么是代码复用呢?(1)函数级代码复用:定义一个函数实现某个功能,所有的程序都可以调用这个函数,不用自己再单独实现一遍,函数级的代码复用。(2)将一些通用的函数打包封装成库,并引出API供程序调用,实现了库级的代码复用;(3)将一些类似的应用程序抽象成......