数据库的操作,以及sql之DML

首先,创建表以及插入数据

create table t_text(id int primary key auto_increment,name varchar(20) unique not null,gender char(5) not null check(gender in ("男","女")),deed varchar(255) not null default "事例不详");
insert into t_text (id, name, gender, deed) VALUES
(1, '贾宝玉', '男', '荣国府的公子,与林黛玉的爱情故事令人唏嘘。'),
(2, '林黛玉', '女', '才情出众,多愁善感,最终因病早逝。'),
(3, '薛宝钗', '女', '贤淑端庄,最终与贾宝玉成婚。'),
(4, '孙悟空', '男', '齐天大圣,保护唐僧西天取经,神通广大。'),
(5, '唐僧', '男', '取经团队的核心人物,慈悲为怀。'),
(6, '猪八戒', '男', '贪吃懒惰,但也有勇有谋,是孙悟空的得力助手。'),
(7, '沙僧', '男', '忠诚老实,负责挑担和保护唐僧。'),
(8, '刘备', '男', '蜀汉开国皇帝,仁德之君。'),
(9, '关羽', '男', '忠义之士,武艺高强,被尊为武圣。'),
(10, '张飞', '男', '勇猛善战,性格豪爽。'),
(11, '诸葛亮', '男', '蜀汉丞相,智慧过人,被誉为卧龙先生。'),
(12, '宋江', '男', '梁山泊首领,人称及时雨。'),
(13, '林冲', '男', '八十万禁军教头,武艺高强。'),
(14, '武松', '男', '打虎英雄,性格刚烈。'),
(15, '鲁智深', '男', '花和尚,力大无穷,行侠仗义。');

1.数据库约束

1.1主键约束

primary:主键约束

auto_increment:自增属性

一个表中只能有一个主键,主键字段非空且唯一,主键是一个表中唯一确定一行数据的字段。   

当建立主键约束时,MySQL为主键创建对应的索引——主键索引,主键约束名总为PRIMARY。     

主键约束还有一种写法:

create table t_text(id int auto_increment,name varchar(20),primary key(id));

插入数据测试:

insert into t_text values(1,"曹操","男","宁可我负天下人,不可天下人负我");
insert into t_text values(16,"曹操","男","宁可我负天下人,不可天下人负我");
delete from t_text where id = 16;-- 删除id为16的语句# 因为有auto_increment自增属性,可以写null
insert into t_text values(null,"曹操","男","宁可我负天下人,不可天下人负我");# 因为存在自增,所以可以这样写
insert into t_text(name,gender,deed) values("华佗","男","在世神医");

测试结果:

代码报错:主键非空且唯一,id为1已经存在,所以报错。

1.2唯一约束

唯一约束的作用,是保证该字段的值是唯一的,值不允许重复。

unique:唯一约束

唯一约束条件确保所在字段或者字段组合不出现重复值

唯一性约束条件的字段允许出现一个NULL
同一张表内可建多个唯一约束
唯一约束可由多列组合而成
建唯一约束时MySQL会为之建立对应的索引——唯一索引。
如果不给唯一约束起名,该唯一约束默认与列名相同。

唯一约束的另一种写法:

create table t_text(id int auto_increment,name varchar(20),primary key(id),unique(name));

插入数据测试:

insert into t_text values(null,"曹操","男","宁可我负天下人,不可天下人负我");
insert into t_text values(null,"项羽","男","虞姬的真爱");

测试结果:(在测试主键约束的时候我们已经插入了一条name为"曹操"的数据)

代码报错:已经存在name="曹操"的数据,而name为unique,该值是唯一的,所以该条插入语句报错。

1.3默认值约束

给给定的字段设置默认值

 默认值约束的写法:

create table t_text(id int primary key auto_increment,name varchar(20) unique,deed varchar(255) default "事例不详");

插入数据测试:

# 存在自增,id可以写default
insert into t_text values(default,"刘禅","男","扶不起的阿斗");# 存在默认值约束,deed可以写成default
insert into t_text values(default,"孙尚香","女",default);# 可以不写id、deed,id默认自增,deed为默认值
insert into t_text(name, gender) values("孙膑","男");

测试结果: 

1.4非空约束

不允许字段的值为空

create table t_text(id int primary key auto_increment,name varchar(20) unique not null,gender char(5) not null,deed varchar(255) not null default "事例不详");

插入数据测试:

# id、deed,都有默认值
insert into t_text(name, gender) values("赵云","男");# gender存在非空约束,又没有默认值约束,这里没有gender会报错
insert into t_text(name,deed) values("马超","西凉猛将,曾与张飞大战不分胜负,后归顺刘备。");# gender存在非空约束,又没有默认值约束,这里没有gender会报错
insert into t_text(gender) values("黄忠");

测试结果:

1.5检查约束

:检查约束在MySQL8之前是不生效的,当然也不报错

create table t_text(id int primary key auto_increment,name varchar(20) unique not null,gender char(5) not null check(gender in ("男","女")),deed varchar(255) not null default "事例不详");

插入数据测试:

# gender的值只能为"男"或者"女"
insert into t_text values(null,"貂蝉","美女","以连环计离间董卓与吕布,促成董卓覆灭。");insert into t_text values(null,"貂蝉","女","以连环计离间董卓与吕布,促成董卓覆灭。");

测试结果:

2.修改表的结构---ALTER

修改列类型
    ALTER TABLE 表名 MODIFY 列名 列类型;   -- 注意存在值的情况,类型不一定能成功
增加列
    ALTER TABLE 表名 ADD 列名 列类型;
删除列
    ALTER TABLE 表名 DROP 列名;
列改名
    ALTER TABLE 表名 CHANGE 旧列名 新列名 列类型;
更改表名
    ALTER TABLE 表名 RENAME 新表名;
    RENAME TABLE 表名 TO 新表名;

2.1修改列类型

案例: ALTER TABLE 表名 MODIFY 列名 列类型;

alter table t_text modify gender varchar(5) not null;

 类型修改前:

类型修改后:

注意:修改列类型时,需注意值情况,例如:

首先先添加一列:alter table t_text add number int default 0;

然后试着将gender的类型修改为int类型,将number的类型修改为char类型

alter table t_text modify gender int;-- "男"无法修改为int类型

alter table t_text modify number char(2);

alter table t_text modify number int;

所以,修改时需注意列的值是否可以转换为该类型

alter table t_text add number int default 0;
desc t_text;alter table t_text modify gender int;alter table t_text modify number char(2);
alter table t_text modify number int;
desc t_text;alter table t_text drop number;-- 删除列

 刚添加完列:

 修改后:

 2.2增加列

案例:ALTER TABLE 表名 ADD 列名 列类型;

alter table t_text add number int default 0;

 增加列前:

增加列后:



2.3删除列

案例:ALTER TABLE 表名 DROP 列名;

alter table t_text drop number;

删除列后:

2.4更改列名

案例:ALTER TABLE 表名 CHANGE 旧列名 新列名 列类型;

alter table t_text change name hero_name varchar(20);

 更改过后:

2.5更改表名

案例:ALTER TABLE 表名 RENAME 新表名;
           RENAME TABLE 表名 TO 新表名;

alter table t_text rename t_test;
raname table t_test to t_text;

将 t_text更改为t_test

 将 t_test更改为t_text

3.sql之DML

3.1增加语句

增加语句:给某张表进行数据插入

语法:

insert INTO table_name[(field1 [, field2 ……]) values(value1 [, vaule2 ……])  [,()]];

# 插入多条数据
insert into t_text VALUES
(null, '赵云', '男', '长坂坡单骑救主,七进七出曹军,刘备麾下五虎上将之一。'),
(null, '马超', '男', '西凉猛将,曾与张飞大战不分胜负,后归顺刘备。'),
(null, '黄忠', '男', '定军山斩杀夏侯渊,老当益壮的五虎上将之一。'),
(null, '周瑜', '男', '东吴大都督,赤壁之战以火攻大破曹操,智勇双全。'),
(null, '吕布', '男', '武力冠绝天下,但反复无常,最终被曹操处决。'),
(null, '貂蝉', '女', '以连环计离间董卓与吕布,促成董卓覆灭。'),
(null, '司马懿', '男', '曹魏权臣,多次抵御诸葛亮北伐,奠定晋朝基业。'),
(null, '孙尚香', '女', '孙权之妹,刘备之妻,性格刚烈,善武艺。'),
(null, '庞统', '男', '号“凤雏”,献计取西川,中箭身亡于落凤坡。'),
(null, '董卓', '男', '残暴军阀,挟持汉献帝,后被吕布刺杀。'),
(null, '张辽', '男', '威震逍遥津,曹魏名将,以少胜多击败孙权。'),
(null, '徐庶', '男', '刘备早期谋士,因母被曹操挟持而被迫归曹。'),
(null, '典韦', '男', '曹操护卫,宛城之战力战身亡,勇猛过人。'),
(null, '许褚', '男', '曹操虎卫,赤膊战马超,以勇力著称。'),
(null, '荀彧', '男', '曹操首席谋士,战略家,后因反对称魏公而自尽。'),
(null, '姜维', '男', '诸葛亮继承人,九伐中原延续蜀汉大业。'),
(null, '邓艾', '男', '曹魏名将,偷渡阴平灭蜀汉,功高震主被杀。'),
(null, '钟会', '男', '与邓艾共灭蜀汉,后谋反失败被杀。'),
(null, '袁绍', '男', '官渡之战败于曹操,北方割据势力首领。'),
(null, '华佗', '男', '神医,为关羽刮骨疗毒,后因曹操猜忌被杀。');插入单条数据
insert into t_text values(null,"虞姬","女",default); -- 因为存在自增和唯一约束
insert into t_text(hero_name,gender) values("孙权","男");

3.2删除语句和TRUNCATE

注意:请注意删除的条件,如果不带条件,则删除全表数据

语法:

delete from table_name [where 条件];  -- 如果不带条件,清空全表数据
truncate table table_name; -- 清空全表,注:truncate删除数据是不经过数据字典

案例:

delete from t_text where id = 51;
delete from t_text where id = 52;

3.3更新语句

修改表中的数据

语法:

update table_name set 字段1=新值 [, 字段2=新值, 字段3=字段3 + 1]   [where 条件];

案例:

update t_text set deed = "取经绊脚石" where hero_name = "唐僧";
select * from t_text where hero_name="唐僧";

replace语句

该语句是集更新和插入为一体的一个语句。

如果表中没有这条数据,则执行插入,否则执行更新。

# 插入
replace into t_text(id, hero_name, gender, deed) values(100, "红孩儿", "男",default);
select * from t_text where hero_name="红孩儿";# 更新
replace into t_text(id, hero_name, gender, deed) values(100, "哪吒", "男","风火轮,乾坤圈");
select * from t_text where id=100;

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

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

相关文章

vue2前端日志数据存储(indexedD)自动清理3天前的数据

前言:关于Dexie.js这个前端本地数据库,如何使用IndexedDB来存储数据,并且设置到期自动清理的机制。首先,我需要回忆一下Dexie.js的基本用法,以及IndexedDB的特性。IndexedDB是浏览器中的一种非关系型数据库&#xff0c…

【MySQL篇】索引特性,索引的工作原理以及索引的创建与管理

目录 一,初识索引 二,MySQL与磁盘交互的基本单位 三,MySQL中数据文件的特性 四,理解page和索引 五,聚簇索引和非聚簇索引 六,索引操作 查询索引 创建主键索引 唯一索引的创建 普通索引的创建 全文…

springboot项目启动常见的问题以及配置以及一些使用技巧

1.配置仓库 这里要把xml文件从国外的镜像源改成国内的镜像源。改镜像源可以查看这篇文章 点击查看 2.更改文件类型 方法一:右键文件找到Mark Dircetory as可以更改文件类型 方法二: 3.springboot本地Maven仓库的位置 4.pom.xml文件报红错误怎么办 这…

【初探数据结构】二叉树的顺序结构——堆的实现详解(上下调整算法的时间复杂度分析)

💬 欢迎讨论:在阅读过程中有任何疑问,欢迎在评论区留言,我们一起交流学习! 👍 点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏,并分享给更多对数据结构感…

流量分析2

一,webshell流量 [GKCTF 2021]签到 先看协议分级,大部分是tcp,里面有http的基于的行文本数据占了很大的比重,看看里面有什么 过滤http的流量 点击一条流量,里面的内容进去后面有基于行的文本数据, 先解he…

头歌实践教学平台--【数据库概论】--SQL

一、表结构与完整性约束的修改(ALTER) 1.修改表名 USE TestDb1; alter table your_table rename TO my_table; 2.添加与删除字段 #语句1:删除表orderDetail中的列orderDate alter table orderDetail drop orderDate; #语句2:添加列unitPrice alter t…

在 React 中,组件之间传递变量的常见方法

目录 1. **通过 Props 传递数据**2. **通过回调函数传递数据**3. **通过 Context API 传递数据**4. **通过 Redux 管理全局状态**5. **通过事件总线(如 Node.js 的 EventEmitter)**6. **通过 Local Storage / Session Storage**7. **通过 URL 查询参数传…

Redis + 布隆过滤器解决缓存穿透问题

Redis 布隆过滤器解决缓存穿透问题 1. Redis 布隆过滤器解决缓存穿透问题 📌 什么是缓存穿透? 缓存穿透指的是查询的数据既不在缓存,也不在数据库,导致每次查询都直接访问数据库,增加数据库压力。 例如&#xff1…

Vue动态添加或删除DOM元素:购物车实例

Vue 指令系列文章: 《Vue插值:双大括号标签、v-text、v-html、v-bind 指令》 《Vue指令:v-cloak、v-once、v-pre 指令》 《Vue条件判断:v-if、v-else、v-else-if、v-show 指令》 《Vue循环遍历:v-for 指令》 《Vue事件处理:v-on 指令》 《Vue表单元素绑定:v-model 指令》…

vue h5实现车牌号输入框

哈喽,大家好,最近鹏仔开发的项目是学校校内车辆超速方面的统计检测方面的系统,在开发过程中发现有个小功能,就是用户移动端添加车牌号,刚开始想着就一个输入框,提交时正则效验一下格式就行,最后…

硬件基础(5):(3)二极管的应用

文章目录 [toc]1. **整流电路****功能**:**工作原理**:**应用实例**:电路组成:整流过程:电路的应用: 2. **稳压电路****功能**:**工作原理**:**应用实例**:电路组成及功能…

Wireshark网络抓包分析使用详解

序言 之前学计网还有前几天备考华为 ICT 网络赛道时都有了解认识 Wireshark,但一直没怎么专门去用过,也没去系统学习过,就想趁着备考的网络相关知识还没忘光,先来系统学下整理点笔记~ 什么是抓包?抓包就是将网络传输…

安心联车辆管理平台源码价值分析

安心联车辆管理平台源码的价值可从技术特性、功能覆盖、市场适配性、扩展潜力及商业化支持等多个维度进行分析。以下结合实际应用进行详细解读: 一、技术架构与开发优势 主流技术栈与高性能架构 源码采用成熟的前后端分离架构,后端基于Java技术&#xff…

【操作系统】Docker如何使用-续

文章目录 1、概述2、巩固知识2.1、基础命令2.2、容器管理2.3、镜像管理2.4、网络管理2.5、Compose 3、常用命令 1、概述 在使用Docker的过程中,掌握常用的命令是至关重要的。然而,随着时间的推移,我们可能会遗忘一些关键的命令或对其用法变得…

ElementUI el-menu导航开启vue-router模式

有没有小伙伴遇到这么一种情况:ElementUI el-menu导航中,开启vue-router 的模式后,点击触发事件而不进行路由跳转? 别慌!下面直接说解决方案: 借助路由守卫进行判断 给el-menu绑定切换事件,给…

【leetcode hot 100 17】电话号码的字母组合

分析:当设计关键字“所有组合”时,要考虑深度优先遍历、广度优先遍历(层次遍历),其中: 深度优先搜索: 自顶向下的递归实现深搜定义子问题在当前递归层结合子问题结果解决原问题 广度优先搜索 利…

Vue 2 探秘:visible 和 append-to-body 是谁的小秘密?

🚀 Vue 2 探秘:visible 和 append-to-body 是谁的小秘密?🤔 父组件:identify-list.vue子组件:fake-clue-list.vue 嘿,各位前端探险家!👋 今天我们要在 Vue 2 的代码丛林…

C++学习之路:从头搞懂配置VScode开发环境的逻辑与步骤

目录 编辑器与IDE基于vscode的C开发环境配置1. 下载vscode、浅尝编译。番外篇 2. 安装插件,赋能编程。3. 各种json文件的作用。c_cpp_properties.jsontask.jsonlaunch.json 总结&&彩蛋 编辑器与IDE 上一篇博客已经介绍过了C程序的一个编译流程,从…

PPT 转高精度图片 API 接口

PPT 转高精度图片 API 接口 文件处理 / 图片处理,将 PPT 文件转换为图片序列。 1. 产品功能 支持将 PPT 文件转换为高质量图片序列;支持 .ppt 和 .pptx 格式;保持原始 PPT 的布局和样式;转换后的图片支持永久访问;全…

VSCode 抽风之 两个conda环境同时在被激活

出现了神奇的(toolsZCH)(base) 提示符,如下图所示: 原因大概是:conda 环境的双重激活:可能是 conda 环境没有被正确清理或初始化,导致 base 和 toolsZCH 同时被激活。 解决办法就是 :conda deactivate 两次…