DDL\DML

查询字段

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;

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

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

相关文章

PostgreSQL 的事务管理和并发控制机制解析

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

Prompt Engineering论文梳理(主要为2022年)

AutoPrompt (EMNLP2020) Shin T, Razeghi Y, Logan IV R L, et al. Autoprompt: Eliciting knowledge from language models with automatically generated prompts[J]. arXiv preprint arXiv:2010.15980, 2020. 基本架构,original input t…

关联分析-Apriori

关联分析-Apriori 1. 定义 关联分析就是从大规模数据中,发现对象之间隐含关系与规律的过程,也称为关联规则学习。 2. 相关概念 2.1 事务、项与项集 订单号购买商品0001可乐、薯片0002口香糖、可乐0003可乐、口香糖、薯片 以上面的订单为例&#xf…

elasticsearch使用记录

参考文章:https://elasticsearch-py.readthedocs.io/en/v8.8.2/ 参考文章:https://cuiqingcai.com/6214.html 参考文章:https://www.cnblogs.com/cupleo/p/13953890.html elasticsearch版本:8.8.2(软件包发行版) python版本&#…

MySQL 读写分离

目录 一、什么是读写分离? 二、为什么要读写分离呢? 三、什么时候要读写分离? 四、主从复制与读写分离 五、MySQL 读写分离原理 六、企业 使用MySQL 读写分离场景 1)基于程序代码内部实现 2)基于中间代理层实现…

React重新渲染的触发机制及其优化策略

React是一个用于构建用户界面的JavaScript库,它的核心特点之一是使用虚拟DOM(Virtual DOM)来实现高效的组件渲染。那组件重新渲染的机制是如何呢?基于这些机制,如果进行优化呢? 虚拟DOM是一个用JavaScript对…

"科技与狠活"企业级无代码开发MES系统,一周实现数字化

随着科技的不断发展,企业级无代码开发平台成为了一种新型的解决方案,能够有效降低软件开发门槛,提升开发效率。在制造业领域,MES系统(Manufacturing Execution System)作为一种关键的生产管理工具&#xff…

C# 全局响应Ctrl+Alt+鼠标右键

一、简述 某些应用,我们希望全局自定义热键。按键少了会和别的应用程序冲突,按键多了可定用户操作不变。因此我计划左手用CtrlAlt,右手用鼠标右键呼出我自定义的菜单。 我使用键盘和鼠标事件进行简单测试(Ctrl鼠标右键&#xff…

[SQL系列] 从头开始学PostgreSQL 自增 权限和时间

[SQL系列] 从头开始学PostgreSQL 事务 锁 子查询_Edward.W的博客-CSDN博客https://blog.csdn.net/u013379032/article/details/131841058上一篇介绍了事务,锁,子查询 事务有点像是原子操作,需要有完整性,要么全都完成了&#xff…

2023年深圳杯数学建模A题影响城市居民身体健康的因素分析

2023年深圳杯数学建模 A题 影响城市居民身体健康的因素分析 原题再现: 以心脑血管疾病、糖尿病、恶性肿瘤以及慢性阻塞性肺病为代表的慢性非传染性疾病(以下简称慢性病)已经成为影响我国居民身体健康的重要问题。随着人们生活方式的改变&am…

flutter开发实战-RepaintBoundary实现Widget截图功能

flutter开发实战-RepaintBoundary实现Widget截图功能 在开发中,遇到需要使用截图,像iOS可以截图UIView获取到UIImage,在flutter中可以使用RepaintBoundary实现截图功能 相机拍摄的图片: RepaintBoundary截图后的图片 一、Re…

Docker 全栈体系(七)

Docker 体系(高级篇) 五、Docker-compose容器编排 1. 是什么 Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调…

python selenium爬虫自动登录实例

拷贝地址:python selenium爬虫自动登录实例_python selenium登录_Ustiniano的博客-CSDN博客 一、概述 我们要先安装selenium这个库,使用pip install selenium 命令安装,selenium这个库相当于机器模仿人的行为去点击浏览器上的元素&#xff0…

测试技术之测试用例质量的评估

第一,凭证测试用例的方式评估其品质,主要搜罗: 1)测试用例与需要规格剖析中需要条款的可追溯性,好比:咱们要求每一个需要条款至少有1个测试用例与之对于应。目的是为了评估测试的需要拆穿困绕率,以及合成需…

抖音seo源码开发源代码开发技术分享

一、 抖音SEO源码开发,需要掌握以下技术: 抖音API接口:抖音提供了丰富的API接口,包括用户信息、视频信息、评论信息等。 数据爬取技术:通过抓包分析抖音接口的数据结构,可以使用Python等编程语言编写爬虫程…

【低代码专题方案】iPaaS运维方案,助力企业集成平台智能化高效运维

01 场景背景 随着IT行业的发展和各家企业IT建设的需要,信息系统移动化、社交化、大数据、系统互联、数据打通等需求不断增多,企业集成平台占据各个企业领域,成为各业务系统数据传输的中枢。 集成平台承接的业务系统越多,集成平台…

Practice1|1207. 独一无二的出现次数、1365. 有多少小于当前数字的数字、941. 有效的山脉数组

1207. 独一无二的出现次数 1.题目: 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。 示例 1: 输入:arr [1,2,2,1,1,3…

FPGA-DFPGL22学习7-gpio

系列文章目录 FPGA-DFPGL22学习6-led 文章目录 系列文章目录前言一、原理图1)key2)beeptouch端口对应1)key2)beeptouch 二、程序设计1)KEY2)beeptouch 三、程序编写1.KEY代码:2.beeptouch代码: 结论 前言 和原子哥一起学习FPGA …

JAVA面试总结-Redis篇章(四)——双写一致性

JAVA面试总结-Redis篇章(四)——双写一致性 问:redis 做为缓存,mysql的数据如何与redis进行同步呢?第一种情况,如果你的项目一致性要求高的话 采用以下逻辑我们应该先删除缓存,再修改数据库&…

「深度学习之优化算法」(十八)头脑风暴算法

1. 头脑风暴算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   可能大家对“头脑风暴”这个词不怎么熟,毕竟是外来词汇,其大概含义就是分组讨论,畅所欲言。   头脑风暴算法(Brain Storm Optimization)是根据人们进行“头脑风暴”讨论困难问题的解决方案的过…