DDL\DML

news2024/12/28 18:33:01

查询字段

1、查询指定字段

select 字段1, 字段2 ,...] from 表名;

select ename, sal from emp;

select ename from emp;

2、查询全部字段

select * from 表名;

select * from emp;

条件查询

使用 where 语句,放在 from 后        

select * from emp where 条件;

select * from emp where empno>7500;

运算符

3、算术运算符:+ - * / %

# 员工年工资

select * from emp where sal * 12 > 20000;

4、比较运算符:

 5、逻辑运算符:and or not

select * from emp where job = 'salesman' and sal > 1500;

存储在表中的数据是一种类型的数据,不同类型的数据应放到不同的表中,否则会使以后的检索和访问很困难。

数据库中的每个表都有一个名字,用来标识自己。此名字是唯一的, 这表示数据库中没有其他表具有相同的名字。

表由一个或多个列组成。每一列存储一列特定的信息,列称为字段,每个列都有相应的数据类型。数据类型定义列可以存储的数据种类。例如,某一列中需要存储数字,该列的数据类型应该定义为数值类型。

数据类型

1、整型

2、浮点型和定点型

 3、日期时间类型

 4、字符型

DDL(数据定义语言)

Data Definition Language,用于定义和管理数据库中的对象和结构,如表、列、索引等。

创建表

create table [if not exists] 表名(

    字段1 字段类型 [列级约束条件],

    字段2 字段类型 [列级约束条件],

    ...

    [表级约束条件]

);

create table users(

  id int,

  name varchar(20)

);

查看表

1、显示数据库中的表

show tables;

2、查看表的基本结构

desc 表名;

desc users;

3、查看数据库/表的创建语句

show create database 数据库名;

show create table 表名;

修改表

理想状态下,当表中存储数据以后,该表就不应该再被更新。在表的设计过程中需要花费大量时间来考虑,以便后期不对该表进行大的改动。

1、添加字段

alter table 表名

add column 新列名 数据类型 [约束条件] [first | after 列名];

2、修改字段的类型

alter table 表名

modify column 列名 数据类型 [约束条件];

3、修改字段的位置

alter table 表名

modify column 列名 数据类型 first | after 列名;

4、修改字段名

alter table 表名

change column 旧列名 新列名 数据类型 ;

5、删除字段

alter table 表名

drop column 列名

重命名表

alter table 旧表名

rename to 新表名;

删除表

drop table [if exists] 表1[, 表2, 表3...];

DML(数据操作语言)

Data Manipulation Language,用于操作数据库中的实际数据,如插入、更新、删除和查询数据。

插入数据

插入完整的行,所有字段,每一个字段都必须提供一个值,如果某个字段没有值,应该使用 NULL,每个字段必须以他们在表中定义的顺序给出。这种语法简单,但是不安全,应该避免使用。

insert into 表名

values (

    字段1的值,

    字段2的值,

    ...

);

更安全的方法是,在表名后的括号中给出字段名,values 中的值的顺序与前面给出的字段的顺序相同,一一对应。不需要与表中定义的顺序相同,没有值的字段可以不提供。

insert into 表名 (

    字段1,

    字段2,

    ...

)

values (

    字段1的值,

    字段2的值,

    ...

);

values 后面可以跟多个括号,括号间用逗号分隔,每个括号代表要插入的一条数据。

单条 insert 语句插入多条数据比多条 insert 语句快。

更新数据

update 表名

set 字段1 = 字段1的值,

     字段2 = 字段2的值,

     ...

where 限制条件;

记得加 where 限制条件,否则更新整个表中的每一条数据。

删除数据

delete from 表名

where 限制条件;

同样,不加限制条件会删除整个表中每一条数据。

物理删除,无法恢复。

注意:在对 update 或 delete 使用 where 前,应该先用 select 语句进行测试,保证它的过滤结果是正确的。

约束

constraint

约束类型

非空约束

默认约束

唯一约束

主键约束

外键约束

关键字

not null

default

unique

primary key

foreign key

非空约束

NOT NULL,是否不可以为空(NULL),NULL 值就是没有值或缺值,非空就是不可以在插入时不给出该列的值,该列必须有值。

  1. 创建表时设置非空约束

create table 表名(

    字段名 字段类型 not null,

    ...

);

drop table if exists users;

create table users(

    id int not null,

    name varchar(20)

);

# 报错,id没有默认值,不允许为空

insert into users(name) values("李四");

  1. 已有字段添加非空约束

alter table 表名

modify column 字段名 字段类型 not null;

  1. 删除非空约束(修改为允许为空)

alter table 表名

modify column 字段名 字段类型;

注意:不要混淆 NULL 值和空串,NULL值是没有值,空串是 ''(两个单引号,中间没有字符)

默认约束

       DEFAULT如果在插入行时没有给出值,通过 DEFAULT 指定此时使用的默认值。

create table 表名(

    字段名 字段类型 default 默认值,

    ...

);

drop table if exists users;

create table users(

    id int not null default 666,

    name varchar(20)

);

# 不报错

insert into users(name) values("李四");

select * from users;

唯一约束

       用于确保特定列或列组合的唯一性,被约束的列的值在整个表中是唯一的,唯一约束默认允许空值(null),因此多个空值不违反唯一约束。

  1. 列级

create table 表名(

    字段名 字段类型 unique,

    ...

);

drop table if exists users;

create table users(

    id int not null default 666,

    name varchar(20) unique

);

insert into users(id, name) values(1, "李四");

insert into users(id, name) values(2, "李四");

insert into users(id) values(3);

insert into users(id) values(4);

  1. 表级,可以给约束起名,可以创建多列的唯一约束(联合唯一约束)

create table 表名(

    字段1 字段类型,

    字段2 字段类型,

    ...

    [constraint 约束名] unique(字段1[, 字段2, ...])

);

drop table if exists users;

create table users(

    id int not null default 666,

    name varchar(20),

    unique(id, name)

);

insert into users(id, name) values(1, "李四");

insert into users(id, name) values(2, "李四");

insert into users(id, name) values(1, "张三");

insert into users(id, name) values(1, "李四");#报错

insert into users(name) values("李四");

insert into users(name) values("李四");#报错

insert into users(id) values(5);

insert into users(id) values(5);

  1. 已有字段添加唯一约束

alter table 表名

modify 字段名 字段类型 unique ;

alter table 表名

add [constraint 约束名] unique(字段名) ;

  1. 删除唯一约束

alter table 表名

drop index 约束名;

alter table 表名

drop key 约束名;

主键约束

       唯一标识表中每行的这个列(或这组列)称为主键。主键用来表示一个特定的行。没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只涉及相关的行。

因此:

  1. 每一个表都应该定义主键
  2. 主键的值不应该修改
  3. 不使用可能会修改值的列作为主键(与业务无关,通常使用 id 作为主键)

特点:

  1. 唯一性:主键要求每一行数据的主键值都必须是唯一的,不允许有重复值。
  2. 非空性:主键要求主键列的值不能为空,即不能为 NULL。
  3. 单一性:每个表只能有一个主键。主键可以由一个列或多个列组成,形成复合主键
  4. 列级

create table 表名(

    字段名 字段类型 primary key,

    ...

);

drop table if exists users;

create table users(

    id int primary key,

    name varchar(20) unique

);

insert into users(id, name) values(1, "张三");

insert into users(id, name) values(1, "李四");

insert into users(name) values("王五");

insert into users(id) values(2);

  1. 表级,可以给约束起名,可以创建多列的联合主键

create table 表名(

    字段1 字段类型,

    字段2 字段类型,

    ...

    [constraint 约束名] primary key(字段1[, 字段2, ...])

);

  1. 删除主键

alter table 表名

drop primary key;

自动递增

auto_increment:设置 auto_increment 的列,当每增加一行时自动增量。每个表只允许一个 auto_increment 列。

create table 表名(

    字段1 字段类型 auto_increment

);

drop table if exists users;

create table users(

    id int primary key auto_increment,

    name varchar(20) unique

);

insert into users(name) values("李四");

insert into users(name) values("张三");

insert into users(id,name) values(5, "王五");

insert into users(name) values("赵六");

外键约束

外键为表中的某一字段,该字段是另一表的主键值,外键用来在两个表的数据之间建立联结,一个表中可以有一个或多个外键。外键的作用是保持数据的一致性、完整性。

注意:

  1. 外键字段可以为null,外键为空的数据也叫孤儿数据
  2. 有了外键引用之后,表分为父表和子表
    • 创建表时先创建父表,再创建子表
    • 插入数据时,先插入父表数据,再插入子表数据
    • 删除时先删除子表,再删除父表
  3. 子表外键类型要与父表外键类型一致

在子表创建外键:

[constraint 外键名] foreign key (列名) references 主表名(主键);

create table student(

    id int primary key auto_increment,

    name varchar(20) unique

);

create table score(

    id int primary key auto_increment,

    student_id int ,

    degree int,

    constraint fk1 foreign key (student_id) references student(id)

);

insert into score(student_id, degree) values(1, 90);#报错

insert into student(name) values("李四");

insert into score(student_id, degree) values(1, 90);

insert into score(degree) values(90);

delete from student where id=1;#报错

delete from score where student_id=1;

delete from student where id=1;

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

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

相关文章

UI 自动化稳定性用例实战经验分享!

目录 前言: 大家常说 UI 自动化不稳定,那又如何提高稳定性呢? 操作界面非预期的弹框、广告、浮层 测试系统的 A/B 策略 总结: 前言: 稳定性测试是软件测试的一个重要方面,它旨在评估软件在不同负载和…

[BSidesCF 2020]Had a bad day1

进入环境,一上来就是一段激励的话,没有啥特别的,源码中也没有看见啥有用的提示 但主要是有,参数的传递,加上前面的index.php,想到了PHP伪协议,或许我们可以直接查看一下隐藏源码 报错了&#xf…

nfs服务器的描述,搭建和使用

前言 这是我在这个网站整理的笔记,关注我,接下来还会持续更新。 作者:RodmaChen nfs服务器的描述,搭建和使用 NFS概述工作原理优缺点 nfs服务器搭建服务端客户端 NFS概述 NFS(Network File System)是一种基…

GPT-3.5:ChatGPT的奇妙之处和革命性进步

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

【Koa】[NoSQL] Koa中相关介绍和使用Redis MongoDB增删改查

目录 NoSQL非关系型数据库关系型数据库(RMDB)介绍非关系型数据库(NoSQL)介绍Redis & MongoDB 在 Koa 中使用 Redis (了解)Redis 的安装和使用在 Koa 中连接 和 调用 Redis 在 Koa 中使用 MongoDBMongoDB 的安装MongoShell 操作…

day35KMP算法

1.什么是KMP算法 解决字符串匹配问题;看文本串是否出现过模式串; 文本串:aabaabaaf; 模式串:aabaaf; 暴力解法:两层for循环,时间复杂度:O(m*n) m n分别是长度; kmp解决&a…

HTML中的焦点管理

前言 焦点作为页面交互中的重要一环,涉及到的知识点也比较多,有必要做一个统一的总结。 HTML 中的可获取焦点的元素 具有 href 属性的 HTMLAnchorElement/HTMLAreaElement非禁用态的 HTMLInputElement/HTMLSelectElement/HTMLTextAreaElement/HTMLBut…

C++实现简单内存池

/写一个简单的内存池class Cgirl { public:int bh;//编号int xw;//胸围static char* m_pool; //内存池的初始地址//内存池初始化函数、static bool initpool() {cout << "调用初始化函数\n\n";m_pool (char*)malloc(18);//向堆内存空间申请18字节if (m_pool …

100天精通Golang(基础入门篇)——第17天:深入解析Go语言中的指针

&#x1f337; 博主 libin9iOak带您 Go to Golang Language.✨ &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &#x1f30a; 《I…

F#奇妙游(17):F#与真空一维平面大地抛石飞行力学

F#还能干点啥 距离上一次更新已经过去了很久&#xff08;40分钟之久&#xff01;&#xff09;&#xff0c;这段时间我在学习F#&#xff0c;并且在工作&#xff08;划掉&#xff0c;躺肥并没有工作要做&#xff09;中使用F#。 那干点啥呢&#xff1f;还是老本行吧&#xff0c;…

ELK 使用kibana查询和分析nginx日志

背景&#xff1a;使用kibana查询和分析nginx请求日志&#xff0c;方便开发人员查询系统日志和分析系统问题。 setp 1、定义Index patterns 2、定义Discover(Search 查询数据) 3、定义Visualizations 3.1 定义Vertical Bar 3.2 、Choose a source 3.3、定义图表 4、定义…

spring boot中常用的安全框架 Security框架 利用Security框架实现用户登录验证token和用户授权(接口权限控制)

spring boot中常用的安全框架 Security 和 Shiro 框架 Security 两大核心功能 认证 和 授权 重量级 Shiro 轻量级框架 不限于web 开发 在不使用安全框架的时候 一般我们利用过滤器和 aop自己实现 权限验证 用户登录 Security 实现逻辑 输入用户名和密码 提交把提交用户名和…

mysql的存储引擎以及适用场景

目录 mysql的体系结构 存储引擎简介 三种存储引擎的区别 如何选择使用哪种的存储引擎&#xff1f; mysql的体系结构 连接层 最上层是一些客户端的链接服务&#xff0c;主要完成一些类似于连接处理&#xff0c;授权认证&#xff0c;以相关的安全方案。服务器也会为安全接入每…

位运算修行手册

*明明自觉学会了不少知识&#xff0c;可真正开始做题时&#xff0c;却还是出现了“一支笔&#xff0c;一双手&#xff0c;一道力扣&#xff08;Leetcode&#xff09;做一宿”的窘境&#xff1f;你是否也有过这样的经历&#xff0c;题型不算很难&#xff0c;看题解也能弄明白&am…

Spring中事务失效的8中场景

1. 数据库引擎不支持事务 这里以 MySQL为例&#xff0c;MyISAM引擎是不支持事务操作的&#xff0c;一般要支持事务都会使用InnoDB引擎&#xff0c;根据MySQL 的官方文档说明&#xff0c;从MySQL 5.5.5 开始的默认存储引擎是 InnoDB&#xff0c;之前默认的都是 MyISAM&#xff…

【node】使用express+gitee搭建图床,并解决防盗链问题

首先创建一个gitee的项目&#xff0c;详细步骤我就不一一说明 注解&#xff1a;大家记得将这个项目开源&#xff0c;还有记得获取自己的私钥&#xff0c;私钥操作如下&#xff1a; node依赖下载&#xff1a; "axios": "cors": "express"…

FPGA设计时序分析一、时序路径

目录 一、前言 二、时序路径 2.1 时序路径构成 2.2 时序路径分类 2.3 数据捕获 2.4 Fast corner/Slow corner 2.5 Vivado时序报告 三、参考资料 一、前言 时序路径字面容易简单地理解为时钟路径&#xff0c;事实时钟存在的意义是为了数据的处理、传输&#xff0c;因此严…

记一次简单的MySql注入试验

试验环境&#xff1a; 1.已经搭建好的php服务器&#xff0c;并可以通过访问到localhost/index.php&#xff1b; 2.已经安装好数据库&#xff0c;并创建表test&#xff0c;表内有name、age等字段&#xff0c;并随便创建几个假数据用于测试&#xff1b;如图&#xff1a; 开始测…

docker 禅道 远程链接 MySQL

主要的坑在下边 红色字体&#xff1a;认真看 第一种方法 搜索镜像 docker search zentao 拉取镜像 docker pull easysoft/zentao:latest 启动容器 –name [容器名] 设置容器名称 -p [主机端口]:80 绑定端口 -v /home/zentao/zentaopms:/www/zentaopms 挂载数据目录 /h…

idea中Easy Code模版配置

首先找到模版位置 找到使用的模版&#xff0c;我用的是MybatisPlus-H,这是我新建的一个模版 controller.java.vm模版 ##导入宏定义 $!{define.vm}##设置表后缀&#xff08;宏定义&#xff09; #setTableSuffix("Controller")##保存文件&#xff08;宏定义&#xff…