首页 > 数据库 >SQL语句增删改操作(适用于MySQL)

SQL语句增删改操作(适用于MySQL)

时间:2024-01-14 10:02:58浏览次数:32  
标签:name 22 -- INTO SQL 插入 userinfo MySQL 增删

假如想要的数据库名为students

数据表名为userinfo,字段格式为

id(主键自增),name(varchar),sex(varchar),age(int),birthday(datetime),des(varchar)

除主键外皆可为空,则有以下代码:

创建数据库和表

细节剖析:

  • 自增ID:AUTO_INCREMENT;
  • 设置主键:PRIMARY KEY;
  • 唯一性约束:UNIQUE
  • 非空约束:NOT NULL
  • 设置默认值:DEFAULT 0
  • 当前时间戳:CURRENT_TIMESTAMP
  • 评论/注释:COMMENT
  • 如果该表已创建过,正常返回:IF NOT EXISTS
  • 1.1 直接创建表:
create database students
go
use students
go
[IF NOT EXISTS] userinfo-- 不存在才创建,存在就跳过
create table userinfo(
id primary key identity(1001,1),
name varchar(20),
sex varchar(2),
age int,
birthday datetime DEFAULT CURRENT_TIMESTAMP COMMENT,--默认生日为当前时间戳
des varchar(200)
)
  • 1.2 从另一张表复制表结构创建表: CREATE TABLE tb_name LIKE tb_name_old
  • 1.3 从另一张表的查询结果创建表: CREATE TABLE tb_name AS SELECT * FROM tb_name_old WHERE options

修改数据表

ALTER TABLE 表名

{ ADD COLUMN <列名> <类型> -- 增加列
| CHANGE COLUMN <旧列名> <新列名> <新列类型> -- 修改列名或类型
| ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT } -- 修改/删除 列的默认值
| MODIFY COLUMN <列名> <类型> -- 修改列类型
| DROP COLUMN <列名> -- 删除列
| RENAME TO <新表名> -- 修改表名
| CHARACTER SET <字符集名> -- 修改字符集
| COLLATE <校对规则名> } -- 修改校对规则(比较和排序时用到)

例如给表加一个注册时间字段

ALTER TABLE userinfo ADD COLUMN  registertime datetime;

删除数据表

DROP TABLE [IF EXISTS] 表名;

插入记录

插入记录的方式汇总:

  • 普通插入(全字段):INSERT INTO table_name VALUES (value1, value2, ...)
  • 普通插入(限定字段):INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)
  • 多条一次性插入:INSERT INTO table_name (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ...
  • 从另一个表导入:INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]

插入单条数据

INSERT INTO userinfo VALUES('张三','男',22,'2000-1-1 0:0:0','插入单条记录')

插入多条数据

INSERT INTO userinfo VALUES('张三','男',22,'2000-1-1 0:0:0','插入多条记录'),('李四','男',22,'2000-1-1 0:0:0','插入多条记录'),('王二','男',22,'2000-1-1 0:0:0','插入多条记录'),

根据字段名插入部分数据

INSERT INTO userinfo (name,age) VALUES('张三',22)

从另一个表导入数据

INSERT INTO userinfo SELECT * FROM table_name2 [WHERE key=value]

使用replace代替insert插入

replace into 跟 insert into功能类似,不同点在于:replace into 首先尝试插入数据到表中,

  1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据;
  2. 否则,直接插入新数据。

要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。

REPLACE INTO userinfo VALUES('张三','男',22,'2000-1-1 0:0:0','插入单条记录')

更新记录

把名字张三改为李四 

设置为新值

UPDATE userinfo SET name='李四' WHERE name='张三'

根据已有值替换

UPDATE userinfo SET name=replace(name, '张三', '李四') [WHERE name='张三']

replace与update的区别 replace对一整条记录的值做修改 update可以只修改某个或者某些记录的值

删除记录

删除记录的方式汇总:

  • 根据条件删除:DELETE FROM tb_name [WHERE options] [ [ ORDER BY fields ] LIMIT n ]
  • 全部删除(表清空,包含自增计数器重置):TRUNCATE tb_name

时间差:

  • TIMESTAMPDIFF(interval, time_start, time_end)可计算time_start-time_end的时间差,单位以指定的interval为准,常用可选:
  • SECOND 秒
  • MINUTE 分钟(返回秒数差除以60的整数部分)
  • HOUR 小时(返回秒数差除以3600的整数部分)
  • DAY 天数(返回秒数差除以3600*24的整数部分)
  • MONTH 月数
  • YEAR 年数

删除年龄大于22岁的用户

DELETE FROM userinfo WHERE TIMESTAMPDIFF(YEAR, start_time, submit_time) > 22;

下一篇接SQL索引、查询等操作

个人整理请勿照搬,转载请注明本文链接

 



标签:name,22,--,INTO,SQL,插入,userinfo,MySQL,增删
From: https://blog.51cto.com/u_16371710/9238202

相关文章

  • .NET中轻松应用SQLite:零配置数据库引擎的完美指南
     SQLite是一种轻量级的嵌入式数据库引擎,它在.NET中被广泛使用。SQLite是一个零配置的数据库引擎,不需要服务器,可以直接在应用程序中使用。下面是一个简单的示例,演示如何在.NET中使用SQLite,并提供了常见的查询、增加、修改和删除功能。首先,你需要在项目中安装 System.D......
  • WAF绕过-漏洞利用篇-sql注入+文件上传-过狗
    目前安全狗已更新到4.0版本,来学习下bypass绕过方法1.文件上传绕过Content-Disposition–用于接受表单数据,一般可以任意修改,甚至删除name–接受到的表单名,不可修改filename–上传文件名,可以修改Content-Type–MIME类型,视情况定,需要考虑网站上传验证是否处理像之前的插入脏数......
  • docker 安装mysql
    dockersearchmysql    #查找镜像源dockerpullmysql:latest   #拉取image解决方案1.先创建一个简单的mysql容器实例dockerrun-p3306:3306--namesample-mysql-eMYSQL_ROOT_PASSWORD=123456-dmysql:5.72.复制里面的/etc/mysql文件夹dockercpsample......
  • [GXYCTF2019]BabySQli
    [GXYCTF2019]BabySQli打开是一个登录页面任意输入账号密码提示wronguser输入admin提示wrongpass,说明有admin的账号并且在页面源代码中发现一串经过编码后的字符串经过base32和base64解码后得到SQL语句使用万能密码进行尝试,得到donothackme!的结果根据源码提示,我......
  • Jmeter 如何连接mysql数据库?
    1首先安装jmeterjdbc插件JDBC驱动包下载教程:https://blog.csdn.net/qq_50896685/article/details/1291548012安装好后将插件放在lib目录ext目录下 3jmeter如何连接?首先添加一个jdbcconnectionconfigure 这里有三个字段需要配置,第一个环境变量名字,后面jdbcreques......
  • 用于PostgreSQL索引维护的有用查询
    PostgreSQL拥有丰富的索引功能,并且有很多文章解释索引的语法、用法和价值。在本文中,我将编写基本且有用的查询来查看数据库索引的状态。人们开发数据库一段时间后,当需要对软件架构进行更改时,他们忘记了以前的索引清理。这种方法会造成混乱,有时还会因为索引太多而降低数据库速度。......
  • 如何通过Navicat把MySQL远程数据库导入到本地数据库
    前提:先安装好MySQL、Navicat。1.打开Navicat,新建连接,连接名由自己取,我取的是localhost,如下填写好各项信息,测试连接,连接成功。那本地数据库就建好了。2.在localhost下新建目标数据库,写好数据库名3.点击Navicat的【工具】菜单,选择【数据传输】,细心选好源库和目标库,然后按提示一......
  • SQL Join的一些总结
    SQLJoin的一些总结 1.1.1摘要Join是关系型数据库系统的重要操作之一,SQLServer中包含的常用Join:内联接、外联接和交叉联接等。如果我们想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的数据,这时我们应该考虑使用Join,因为Join具体联接表或函数进行查询的特......
  • 网络攻击技术开篇——SQL Injection
    网络攻击技术开篇——SQLInjection 1.1.1摘要     日前,国内最大的程序员社区CSDN网站的用户数据库被黑客公开发布,600万用户的登录名及密码被公开泄露,随后又有多家网站的用户密码被流传于网络,连日来引发众多网民对自己账号、密码等互联网信息被盗取的普遍担忧。  ......
  • SQL Server 高性能写入的一些总结
    SQLServer高性能写入的一些总结 1.1.1摘要在开发过程中,我们不时会遇到系统性能瓶颈问题,而引起这一问题原因可以很多,有可能是代码不够高效、有可能是硬件或网络问题,也有可能是数据库设计的问题。本篇博文将针对一些常用的数据库性能调休方法进行介绍,而且,为了编写高效的SQ......