聚集网(jujiwang.com) - 收录免费分类目录信息软文发布网址提交
免费加入

MySQL 中的时间戳操作:使用函数、查询和示例进行详细说明 (mysql中DISTINCT的用法)

文章编号:10750时间:2024-09-29人气:


mysql中DISTINCT的用法

简介

时间戳是表示特定时间的数字,通常以 Unix 时间戳的形式存储,它从 1970 年 1 月 1 日午夜开始以秒为单位计数。

在 MySQL 中,时间戳是使用 TIMESTAMP DATETIME 数据类型存储的。这些数据类型允许您存储日期、时间和时区信息。

时间戳函数

MySQL 提供了多种函数来处理时间戳,包括:

  • NOW() :返回当前时间戳。
  • CURDATE() :返回当前日期。
  • CURTIME() :返回当前时间。
  • TIMESTAMPADD(unit, interval, timestamp) :将指定的时间间隔添加到时间戳中。
  • TIMESTAMPDIFF(unit, timestamp1, timestamp2) :计算两个时间戳之间的差异。

示例


SELECT NOW(); -- 获取当前时间戳SELECT CURDATE(); -- 获取当前日期SELECT CURTIME(); -- 获取当前时间SELECT TIMESTAMPADD(HOUR, 1, NOW()); -- 将 1 小时添加到当前时间戳SELECT TIMESTAMPDIFF(DAY, '2023-01-01', '2023-02-01'); -- 计算两个日期之间的天数

时间戳查询

使用函数

您还可以使用时间戳在 MySQL 查询中过滤和排序数据。例如:


SELECT  FROM orders WHERE order_date > NOW() - INTERVAL 30 DAY; -- 获取过去 30 天内的所有订单SELECT  FROM users ORDER BY last_login_date DESC; -- 按用户最后登录日期降序排序

DISTINCT 用法

DISTINCT 关键字可用于从查询结果中删除重复的行。在处理时间戳数据时,这非常有用,因为它可以帮助您避免重复的时间戳。

示例


SELECT DISTINCT order_date FROM orders; -- 获取所有不同的订单日期SELECT DISTINCT last_login_date FROM users; -- 获取所有不同的用户最后登录日期

结论

MySQL

时间戳操作是 MySQL 中一项重要任务。通过使用函数和查询,您可以轻松处理时间戳数据,并根据时间范围过滤和排序数据。 DISTINCT 关键字还可以帮助您从查询结果中删除重复的行。


探究MySQL数据库中的logs表详解mysql中logs表

探究MySQL数据库中的logs表详解MySQL是一种当今最流行的关系型数据库管理系统,用于存储和管理数据。 在MySQL中,表是一个核心的概念,可以理解为一个以二维表格形式组织数据的集合。 在这些表中,logs表是一个特殊的表,它用于存储系统中产生的所有事件日志。 此外,logs表还是MySQL中一个相当重要的表,因为它包含了系统中的所有操作记录和事件日志,这些信息是系统管理者进行系统维护和故障排查的重要依据。 那么,如何使用MySQL来创建和管理logs表呢?这里我们先来了解一下logs表的基本结构和属性,然后再通过一些示例来演示如何对其进行操作。 logs表的基本结构和属性logs表一般包含以下基本属性:id、user_id、user_ip、event、data和created。 其中,id是logs表的唯一标识符,其数据类型为整型,并且通过主键约束来保证数据的唯一性。 user_id是用户或者客户端的标识符,user_ip是用户或者客户端的网络地址,event是事件类型的描述,data是事件数据的附加说明信息,created则是事件发生的时间戳。 此外,在实际应用中,logs表还可以根据具体需求添加其他属性,如event_type、operation_type、module_name等。 创建logs表在MySQL中,使用CREATE TABLE语句可以创建新的表。 下面是一个创建logs表的示例代码:CREATE TABLE `logs` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘主键’,`user_id` int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘用户ID’,`user_ip` varchar(20) NOT NULL DEFAULT ” COMMENT ‘用户IP’,`event` varchar(1000) NOT NULL DEFAULT ” COMMENT ‘事件’,`data` text COMMENT ‘数据’,`created` int(10) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘时间’,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT=’日志表’;通过该语句,我们可以创建一个名为logs的新表,该表包含上述基本属性,并且使用InnoDB引擎作为存储引擎,并且使用utf8mb4字符集。 在创建表时,我们还可以设置表的注释,以方便后续的管理和维护。 插入数据在创建logs表之后,我们就可以开始将数据插入表中以记录日志信息。 在MySQL中,一般使用INSERT INTO语句来向表中插入数据,下面是一个常用的插入数据的示例:INSERT INTO `logs` (`user_id`, `user_ip`, `event`, `data`, `created`) VALUES (‘123’, ‘192.168.0.1’, ‘用户登录’, ‘{“username”: “test”, “status”: “success”}’, UNIX_TIMESTAMP());通过该语句,我们可以向logs表中插入一条用户登录的日志信息,该信息包括用户ID、用户IP、事件描述、事件数据和时间戳。 需要注意的是,其中事件数据是JSON格式的字符串,在使用时需要进行合理转换。 查询数据在记录了大量的日志信息之后,我们需要从logs表中提取出来一些有用的信息用于分析和决策。 在MySQL中,通常使用SELECT语句来查询表中的数据。 下面是一个查询logs表中所有事件类型的示例:SELECT DISTINCT `event` FROM `logs` ORDER BY `event` ASC;通过该语句,我们可以查询logs表中所有事件类型的列表,并按照事件类型的字母顺序排序。 需要注意的是,该查询语句还使用了DISTINCT关键字来去除重复的事件类型,以便于后续的分析处理。 删除数据在一些特殊情况下,我们需要从logs表中删除一些已经记录的日志信息。 在MySQL中,一般使用DELETE语句来删除表中的数据。 下面是一个删除指定事件类型的示例:DELETE FROM `logs` WHERE `event`=’用户登录’;通过该语句,我们可以删除logs表中所有事件类型为“用户登录”的日志信息。 需要注意的是,该操作是不可逆的,可能会导致数据的丢失,因此在进行删除操作时一定要谨慎操作。 总结在今天的文章中,我们详细探讨了MySQL数据库中的logs表的创建、插入、查询和删除操作。 通过深入了解logs表的基本结构和属性,我们可以更好地利用MySQL来管理和维护系统的日志信息。 相信这篇文章能够对想要深入学习MySQL和系统管理的读者有一些帮助。

sql查询两个字段相同的记录

两种方法,一种是查询重复的数据,只查询重复记录,不管其余信息,如ID什么的:

MySQL入门门门?[第一篇](附Docker使用教程)

MySQL是最流行的关系型数据库

先明确两个概念

数据库的定义:数据库是“按照数据结构来组织、存储和管理数据的仓库”。 是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 俗称Database(DB)

数据库管理软件:对数据库进行管理和控制,包括了增删查改等操作,使用和维护数据库。俗称DataBase Management System(DBMS)

安装配置启动MySQL

可能是Windows,Mac,Linux,Dokcer等安装方式,网上的安装教程很多 为了快速启动学习,演示Docker进行安装(Docker本体安装自行搜索),安装后可以使用Navicat Premiun,SQLyog之流的图形化工具去管理使用,出于学习目的,这里只使用命令行

docker?run?--name?testDbContainer?-v?~/testDb:/root?-e?MYSQL_ROOT_PASSWORD=?-e?MYSQL_DATABASE=testDb?-p?3306:3306?-d?mysql:8.0.29-oracle`

这段命令的作用是启动一个MySQL的容器,如果当前没有对应镜像会先下载,然后启动并输出容器ID,3306是MySQL默认端口

--name [customName]指定了容器名字

-e MYSQL_ROOT_PASSWORD=[password]指定了root用户的密码

-e MYSQL_DATABASE=[testDb]创建一个名为testDb的数据库

-p 3306:3306指定了宿主机(冒号前)与容器(冒号后)之间的端口映射,可以理解为访问启动Docker的机子(就是我们使用的机子,宿主机)的3306端口,就是访问容器里的3306端口,容器可以理解为一台完整的主机,可以选择自己想使用的端口号

-d表示在后台运行,MySQL:8.0.29-oracle指定了镜像名及版本(此版本M1可用)

docker ps -a可以查看所有Docker的容器列表,包括没有运行的容器

docker exec -it [容器Id/容器名称] /bin/bash 这段命令中exec是execute的缩写(执行)。 -i是交互模式。 -t是分配终端。 docker的options可以连起来缩写(-it)。 目标容器可以用id或者名称指定,id不一定要输全,输入到保证没有其他容器id重复即可。 -v 宿主机路径:容器路径指定了数据卷的映射,简单理解为我当前本机的目录就是容器主机里的对应目录,访问容器内的目录等同于访问宿主机。 /bin/bash指要运行的命令。 总结就是通过exec命令对指定的容器执行脚本命令并提供一个可交互的终端,在bash中输入exit可以退出终端交互

mysql -uroot -p 在终端中输入命令,通过账号密码登陆mysql,出现下图所示输出就配置环境完毕,可以开始MySQL的学习之旅

开始入门

主要学习的是SQL语句 -- 结构化查询语言(Structured Query Language) 这里要捋清楚数据库-数据库管理系统-SQL语言三者的关系

数据库是存放数据的地方,一个文件(特定结构)就可以看成一个数据库

数据库管理系统是专门用来管理数据库的软件,可以增删查改(CRUD)操作数据库

SQL编写后通过DBMS编译执行来达到操作数据库的目的 CRUD补充 C增(Create)R查(Retrieve,不是Read)U更新(Update)D删除(Delete)

SQL的分类

数据库查询语言 DQL(Data Query Language)

数据库操纵语言 MDL(Data Manipulation Language)

insert,delete,update

数据库定义语言 DDL(Data Definition Language)

create,drop,alert

事务控制语言 TCL Transactional Control Language)

commit,rollback

数据控制语言 DCL(Data Control Language)

grant,revoke

查看使用的数据库版本

select version();

查看当前所有数据库

show database; (SQL语句遇分号才执行,且不分大小写)会自带4个默认的数据库,下图名为demo的数据库就是通过docker命令启动时创建的

使用数据库

use [数据库名]; 执行后会提示当前使用数据库已发生改变

select database(); 查看当前使用的数据库

创建数据库

create database [数据库名]; 执行后会输出执行状态,下图表示创建成功

查看当前数据库所有的表

show tables; 当前还没有任何表,执行后只会输出Empty set (0.00 sec)

创建表及插入数据在这之前需要先认识MySQL中的数据类型比较常见的类型类型描述char (255)定长字符,不管实际存储值是多少,分配的存储空间大小都是给定的字符长度空间,示例表示最多存储255个字符,速度快varchar (255)可变长度字符,会动态的根据实际存储数据分配存储空间,示例表示最多存储255个字符,速度稍慢,因为动态分配计算过程需要时间int最长11位,数字整数类型,等同于Java中的int,int(3)表示最大存储三位数?text长文本数据bigint等同于Java中的longfloat等同于Java中的floatdouble等同于Java中的doubledate短日期类型,只有年月日datetime长日期类型,包含年月日时分秒毫秒clob字符大对象,最多可以存储4G的字符串,clob是Character Large Object的缩写blob二进制大对象,用于存流媒体数据,插入时要使用IO流,blob是Binary Large Object的缩写

类型列表并不全,其他不常用的可以有需要用到时再查看,这里只做一个简单认识

创建语法格式为create table [表名] (字段名 数据类型 [可选列约束], ...以此排列);

CREATE?TABLE?t_user?(????id?INT?PRIMARY?KEY?auto_increment,????username?VARCHAR?(?10?)?UNIQUE?);

上述语句表示创建一个名为t_user的表,其中有两个字段,一个叫id到为int类型,作为该表的主键(非空且不能重复,后面约束会讲),id的值自增1。 username字段则为可变长度字符,最多10个字符且不能有重名。

此时再执行show tables就能看见表名的输出

查看表结构,创建后,可以通过desc [表名]查看表的结构(不是表数据),分别列出了每个字段的结构配置

在字段名后加上default跟上值,表示username字段当没有传值时,默认会使用配置的default值填充,sql中的字符串用单引号包裹,效果不演示了

create?table?t_user?(????id?int?primary?key?auto_increment,????username?varchar?(?10?)?default?test);insert 插入语法

语法结构为insert into [表名] (字段名) values(按顺序对应字段的值);

这里有两个要点,第一:字段名可以忽略,但忽略后,需要把所有的字段都一一填写在values中,示例 insert into t_user values(1,JackMa);

第二:被自增约束的字段可以不传入,values后面可以一次插入多行数据,只需要用逗号进行隔开,用小括号包裹另一行的值,示例 insert into t_user(username) values(aaa),(bbb),(ccc);

这段语句表示向t_user表插入三条数据 这里列举一些使用特性

字段类型/函数/规则说明/特性mysql的日期格式%Y=年,%m=月,%d=日,%h=时,%i=分,%s=秒 注意大小写now()获取当前系统时间date_format(字段,格式)可以将日期转换成特定格式,如查询时可以将日期字段使用函数进行特定格式处理! str_to_date(日期字符串,格式)当插入时如果日期符合%Y-%m-%d(2000-01-01)格式,则可以不需要使用str_to_date函数,等价于这样写insert into t_user (username, age, gender,created_at) values(J12fs, 15, 1,str_to_date(2020-01-21,%Y-%m-%d));date,datetimeinsert时可以使用now()函数,date会取当天,datetime会取当前年月日时分秒,使用示例insert into t_user (username, age, gender,created_at) values(J13fs, 15, 1, now());update 更新/修改语法

语法结构为update [表名] set 字段名 = 值,字段名 = 值 where 条件 条件语句不加会导致整张表进行更新,使用时一定要加上条件,如where id = 1才进行更新这段语句表示将性别是男的数据都设置年龄为30岁

delete 删除数据

语法结构为delete from [表名] where 条件 条件语句不加会导致整张表进行删除,使用时一定要加上条件,如where id = 1才进行删除这段语句表示将所有id=2的数据进行删除

drop 删除表

drop table [表名] 执行后整张表包括数据都会被删除,可以加上一个判断条件,drop table if exists t_user;,加入了if exists关键字,表名只有表存在情况下才会进行删除表操作,没有表时执行删除会报错

alert 修改表结构

尽量做到设计表时就处理好表结构,这里8说了

select 查询数据(DQL重中之重)

在查询前,需要有数据进行查询,所以先执行下面这段SQL语句,先堆数据

drop?table?if?exists?t_user;create?table?t_user?(????id?int?primary?key?auto_increment,????username?varchar(10)?unique,????age?int(3),????gender?int(1)?comment?1表示男,0表示女);insert?into?t_user?(username,?age,?gender)?values(Jack,?15,?1),(Mike,?20,?1),(Susan,?22,?0);

插入数据有两种方式

一种是手动的执行每一行sql(直接复制粘贴也会自动执行)

使用读取SQL文件的方式,将上面SQL保存到sql后缀的文件文件当中,使用source [文件地址];的方式进行批量导入,由于使用了Docker,并且进行了数据卷映射-v ~/testDb:/root,这样容器内也可以读取宿主机的本地文件,所以按照我的配置,只要把文件保存到宿主机的~/testDb目录下,再在容器中的bash执行source /root/就能批量执行sql文件中的语句

说了导入顺便讲讲导出SQL的命令,先exit退出mysql回到bash中,输入以下命令mysqldump [数据库名称] > [目标文件地址] -uroot -p,提示是说明文密码不安全可以忽略,由于我进行了容器的数据卷映射,所以可以去宿主机查看导出文件查看被映射的宿主真机对应的文件夹,对应的文件便有了

select语句

最基本的查询语法格式select 1个或多个字段名 from [表名],可以使用*通配符,表示查询所有字段,执行时会被解析成id,username,age,gender。select和from是关键字,字段名和表名是标识符,查询多个字段用逗号隔开,为了演示使用了*,实际中不建议使用,可读性差,效率相对低

给字段设置别名

查询时将字段转成其他名字进行查看,as关键字可以省略,字段名与别名使用空格隔开即可

字段名可以进行数学计算

表达式会设置为默认别名,对应的列数据也进行了数学运算

条件查询

select (一个或多个字段名) from [表名] where (一个或多个条件); | 操作符 | 操作符描述 | | --- | --- | | = | 等于,select * from t_user where id = 1; 查询id等于1的数据 | | !=,<> | 不等于,两种写法等价,select * from t_user where id <> 1; 查询id不等于1的数据 | | < | 小于,select * from t_user where id < 2; 查询id小于2的数据| | = | 等于,select * from t_user where id > 1; 查询id大于1的数据| | >= | 大于等于,select * from t_user where id >= 2; 查询id大于等于2的数据| | <= | 小于等于,select * from t_user where id <= 1; 查询id小于等于1的数据| | between ... and ... | 等价于 x >= 1 and x <= 2的写法,需要遵循左小右大 select * from t_user where id between 1 and 2; 等规则,否则会报错,查询id>=1且id<=2的数据| | and | 并且,只有and左右两边的表达式都成立才算复合条件 select * from t_user where id = 1 and age > 10; 查询id等于1且年龄大于10的数据| | or | 或者,or任意一边的表达式成立都算复合条件 select * from t_user where id = 1 and age > 10; 查询id等于1或者年龄大于10的数据| | in | 包含,可以替换or实现同等查询效果 select * from t_user where username in (Jack, Mike); 查询usernmae等于Jack或者等于Mike的数据| | like | 模糊查询,支持%或者下划线,百分号表示匹配任意个字符,下划线表示匹配一个字符,想匹配的字符中就有下滑线时,需要使用`\进行转义,select * from t_user where username like %c_k%;` 查询usernmae包含c_k的数据,c_k的前面或者后面有没有字符都可以

排序

select * from t_user order by 字段名 排序方式,字段名 排序方式排序可选的值有asc和desc,不写排序方式默认为升序(等于同写了asc)

多个字段排序只需要用逗号进行分割,规则为只有前面的排序结果为相等时,才会采用后面的排序条件,如order by age asc,id desc,age相等的话就会使用id进行排序

还可以根据查询字段的序号进行排序,默认从1开始,order by后的字段名用序号替代,可读性差且依赖字段,不建议使用

数据处理函数

又被称为单行处理函数,一个输入对应一个输出,一些常用的函数列举,可以用在select后的字段,也可以用在where条件后的字段 | 函数 | 语法作用 | | --- | --- | | lower | 将目标字段数据转为小写 select lower(username) from t_user; | | upper | 将目标字段数据转为大写 select lower(username) from t_user; | | substr | 将username是J开头的数据查出,可以做到和like相同的功能 select * from t_user where substr(username,1,1) = J; 语法:substr(字段名,字符索引1开始,截取多少个不写的则相当于截剩余部分) | | concat | 字符串拼接,将username字段的查询结果转为小写开头,结合了substr和lower select concat(lower(substr(username,1,1)),substr(username,2)) result from t_user; 语法格式:concat(字符,字符,...字符) | | length | 取字符长度 select length(username) len from t_user; | | trim | 如果字符前后有空格则去掉 select trim(username) len from t_user; | | round | 四舍五入(支持正负数),将查出数据的年龄进行个位数的四舍五入 select round(age,-1) from t_user; | | rand | 生成随机数,生成0-100的随机数,套了层round进行四舍五入 select round(rand() * 100) from t_user; | | ifnull | 空值处理,需要注意在所有数据库中,涉及和null进行数学运算的结果都是null,当年龄为空时将结果集的值设为100,不会修改源数据 select ifnull(age,100) from t_user; | | | sql中的switch case语句,如果年龄为20的则年龄乘以2,否则原值输出 select case age when 20 then age*2 else age end as result from t_user; |

分组函数

又称为多行处理函数,输入多行最终输出一行,与单行处理函数相反

group by 分组

将表按照一个字段或多个字段进行分组group [字段1,字段2...], 在使用分组函数前需要先对表进行group by分组,当没有写group by时默认整张表为一组,分组函数也不能写在where关键字后面,因为涉及到执行顺序问题select sum(age) result,gender from t_user where id > 1 group by gender order by result desc; 这段SQL的执行顺序为,先1 from,2 where,3 group by,4 select,5 order by,当执行到where时此时表还没有进行分组,所以不能将分组函数应用到where 条件中,这段SQL会先将id>1的筛选掉,然后进行性别分组查询,分组后将组里的年龄求和最后按照求和的结果降序排列

如果有group by语句,则select后面跟随的只能是被排序的字段和分组函数

联合字段使用逗号进行隔开即可,会将两个字段合并起来当成一个字段进行分组

having 过滤

having需要配合group by,无法单独使用,可以对分组后的数据进行筛选,having的执行时机在group by 之后,select之前 select sum(age) result,gender from t_user where id > 1 group by gender having result > 50 order by result desc; 直接在上面的示例加一句having result > 50,则数据会将年龄综合低于50的筛选掉

distinct

将查询结果相同的去重,distinct关键字只能出现在selec之后字段之前select distinct age from t_user; 这段代码会将年龄相同的数据从结果集中筛选掉,如果有多个字段就表示联合去重(多字段联合起来相同才会去重)

第一篇先?到这 : )

原文:

mysql如何在select语句中对time类型的值进行比较?

SELECT * FROM table WHERE time_to_sec(time)

以上为比较方法。

在Oracle系统中,select语句的基本语法格式如下:

select [distinct] [*, column_name [alias], …] from tablename Where {conditions} group by {conditions} having order by expressions} [ASC/DESC];

查询所有列:

select * from table;

查询指定列:select colum1,colum2 from table;

取消重复行:select distinct deptno,job from emp;

使用表达式:可以在查询列中使用表达式来连接字符串(使用 || 连接字符串)、改变显示格式(如使用函数to_char)、计算显示的数据(如使用+,-,×,/)等。

举例: select * from emp; select ename ,sal,deptno from emp; select deptno from emp; select distinct deptno from emp;

MySQL——常见的一些列类型,表的增删查改操作,表的复制

一、常见列类型(字段类型)1.数值类型 :1° 整型①tinyint [1 byte;有符号-128~127,无符号0~255] ②smallint [2 bytes;有符号-2^15~2^15 - 1,无符号0~2^16 - 1] ③mediumint [3 bytes;有符号-2^23~2^23 - 1,无符号0~2^24 - 1] ④int [4 bytes;有符号-2^31~2^31 - 1,无符号0~2^32 - 1] ⑤bigint [8 bytes;有符号-2^63~2^63 - 1,无符号0~2^64 - 1] PS : 1>Δ默认均为有符号数。 若想定义无符号数,需要在定义字段的类型时,在后面添加一个UNSIGNED。 2>以上范围均为补码可表示的范围。 3>bit类型默认为无符号数,使用格式为“bit(M)”,其中M表示指定的位数,默认值是1,实际范围是1~64;使用bit类型的字段,查询时以二进制的形式显示;当需要存入0或者1时,可以考虑使用bit(1)来节省空间。 2° 浮点型①float [single precision, 4 bytes] ②double [double precision, 8 bytes] ③decimal [M, D],M决定了数的长度(M最大65),D决定了其中的小数位数(D最大30);如果D是0,表示无小数点或分数部分;若D被省略,默认是0;若M被省略,默认是10;2.文本类型(字符串类型) : ①char [0~255(字符)],固定长度字符串(即分配的空间大小是固定的);这里的范围就是字符数的范围(不管中英文)。 ②varchar [0~ (0 ~ 2^16 - 1)(字节)],可变长度字符串(即分配的空间大小决定于实际的占用情况;这里的范围是字节的范围。 实际最大字节是 - 3 = ,因为要预留出1~3个字节用于存储字段的大小,在不同编码中最终对应的字符数不同。 ③text [0 ~ 2^16 - 1] ,更简单,存放文本内容时可以考虑,可以将TEXT类型视为VARCHAR类型。 PS : TEXT类型没有默认值。 ④longtext [0 ~ 2^32 - 1] PS : 实际使用时,括号中传入的一定是字符数。 一般来讲,使用varchar类型更好;但是,若某个字段已明确为定长,使用char类型可以提高查询速度。 3.二进制类型 : ①blob [0 ~ 2^16 - 1] ②longblob [0 ~ 2^32 - 1] PS : 一般不会直接存储二进制数据。 4.日期类型 : ①date [日期,年月日] ②time [时间,时分秒] ③datetime [年月份 时分秒 YYYY-MM-DD HH:mm:ss] ④timestamp [时间戳],可在定义时间戳类型的字段时加入以下约束——NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,其中,NOT NULL表示不为空;DEFAULT...表示默认是当前时间戳;ON UPDATE...表示以后每次修改记录(INSERT, UPDATE),时间戳会自动更新为修改时的当前时间戳。 二、表的基本操作1.创建表 :1° 基本语法CREATE TABLE table_name ( field1 data_type, field2 data_type, field3 data_type... ) CHARACTER SET 字符集 COLLATE 校对规则 ENGINE 引擎; 其中—— ①field : 字段名,表示指定的列名。 ②data_type : 字段的数据类型,表示指定的列类型。 ③CHARACTER SET : 若不指定则为表所在数据库的字符集。 ④COLLATE : 若不指定则为表所在数据库的排序规则。 PS : 创建表时,要根据需保存的数据创建相应的列,并根据字段的数据类型定义相关的列类型。 2° 代码演示现有三张一模一样的表(table_0,table_1,table_2),表的具体内容如下图所示 : 删除表的代码如下 : 2.删除表 : 1° 基本语法①删除整张表—— DROP TABLE table_name; ②只删除表数据(不可使用WHERE)—— TRUNCATE TABLE table_name; ③只删除数据(可使用WHERE)—— DELETE FROM table_name WHERE...;3.修改表 : 1° 基本语法①添加列—— ALTER TABLE table_name ADD column data_type [DEFAULT expr], ADD column data_type [DEFAULT expr]...; ②修改列的类型—— ALTER TABLE table_name MODIFY column data_type [DEFAULT expr], MODIFY column data_type [DEFAULT expr]...; ③修改列的名字—— ALTER TABLE table_name CHANGE 旧列名 新列名 data_type NOT NULL DEFAULT ; ④删除列—— ALTER TABLE table_name DROP column, DROP column ...; PS : ①修改表名—— RENAME TABLE 旧表名 TO 新表名; ②修改表字符集—— ALTER TABLE 表名 CHARACTER SET 字符集; ③查看表的结构—— DESC 表名; (可以查看表的列的情况)4.复制表 : 1° 基本语法①表数据的复制—— INSERT INTO table_name(column_1, column_2...) SELECT (column_1, column_2...) FROM table_name; 该语句可以将查询到的表中的指定数据复制到当前表中,亦可以通过该语句进行自我复制(蠕虫复制)。 通过蠕虫复制可以为表中添加海量数据,可用于SQL语句性能的测试。 ②表结构的复制—— CREATE TABLE table_name LIKE table2_name; PS : 表的去重—— 1>先创建一张临时表,该表的表结构与要去重的表相同。 (使用LIKE); 2>通过DISTINCT关键字处理后,把要去重的表中的数据复制到临时表一份; 3>清除掉要去重的表中的全部记录; 4>将临时表中的记录复制到要去重的表一份; 5>删除临时表;2° 代码演示演示Ⅰ—— 表的复制现有一张员工表如下 :要求建立一张新表demo,并将该员工表中的数据复制到新表demo中,代码如下 : 运行效果 : 演示Ⅱ—— 表的去重对演示Ⅰ中的demo表进行多次蠕虫复制,复制后,demo表中的记录总数如下图所示 :先对demo表进行去重操作,代码如下 :运行效果 : (END-----------------------------------------------------------------------------;



相关标签: 查询和示例进行详细说明中的时间戳操作使用函数mysql中DISTINCT的用法MySQL

上一篇:MySQL时间戳最佳实践确保准确性一致性和性

下一篇:MySQL时间戳高级指南从初学者到专家的深入

内容声明:

1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违法信息,如您发现违法内容,请联系我们进行举报处理!
4、本文地址:http://www.jujiwang.com/article/206e487a8c5b8b636178.html,复制请保留版权链接!


温馨小提示:在您的网站做上本站友情链接,访问一次即可自动收录并自动排在本站第一位!
随机文章
可拓展的整站模板:满足您的不断增长的业务需求 (可拓展性)

可拓展的整站模板:满足您的不断增长的业务需求 (可拓展性)

随着您业务的发展,您的网站也必须随之发展,一个可拓展的整站模板可以为您提供所需的灵活性,以轻松满足您的不断增长的需求,可拓展性的好处无需重新设计,您可以根据需要添加或删除页面、功能和内容,而无需重新设计整个网站,易于维护,可拓展的模板通常使用模块化设计,使您可以轻松更新和管理您的网站内容,提高效率,通过使用可拓展的模板,您可以节省在网...。

本站公告 2024-09-26 08:53:04

利用jssplit轻松分隔文本:面向开发者的简便工具 (利用js语句实现九九乘法表)

利用jssplit轻松分隔文本:面向开发者的简便工具 (利用js语句实现九九乘法表)

在文本处理中,分隔文本往往是必不可少的任务,传统的字符串分割操作虽然简单,但对于复杂的分隔需求来说却显得不够灵活,而jssplit则是一款轻量级的JavaScript工具,为开发者提供了更加便捷和强大的文本分隔功能,jssplit的优点支持多种分隔符,除了常见的空格、逗号和分号外,还可以使用正则表达式指定任意复杂的分隔规则,分隔后输出...。

本站公告 2024-09-15 08:37:00

SQL 索引策略:为不同 (sql server 索引策略)

SQL 索引策略:为不同 (sql server 索引策略)

<,考虑创建复合索引,同时使用多个列,以提高复杂查询的性能,维护索引以确保它们是最新的,监控索引使用情况以识别需要调整或删除的索引,结论索引是优化SQLServer数据库性能的关键组件,通过选择正确的索引策略,可以显著减少查询时间并提高应用程序的整体响应能力,遵循这些最佳实践并定期监控和调整索引,可以确保数据库保持最佳性能,...。

技术教程 2024-09-14 14:17:20

从初学者到专家:使用grep正则表达式进行全面文本分析 (从初学者到专家的典型工作任务包括)

从初学者到专家:使用grep正则表达式进行全面文本分析 (从初学者到专家的典型工作任务包括)

简介grep是一种强大的文本搜索实用程序,它使用正则表达式,regex,来匹配和查找文本数据中的模式,正则表达式是一种强大的搜索语法,允许用户指定要搜索的特定文本模式,本文将引导您从初学者到专家使用grep正则表达式进行全面文本分析,初学者典型工作任务,查找单个单词或短语匹配文本行中的特定模式基本正则表达式,字面文本,使用引号将要匹配...。

最新资讯 2024-09-11 22:38:34

C 语言程序设计基础:初学者友好,一步一步学习 (c语言程序设计)

C 语言程序设计基础:初学者友好,一步一步学习 (c语言程序设计)

1.简介C语言是一种通用高级编程语言,由丹尼斯·里奇,DennisRitchie,于1972年开发,它是一种结构化编程语言,广泛用于开发操作系统、嵌入式系统和软件应用程序,C语言以其高效、可移植性和灵活性而闻名,它被认为是学习编程语言的坚实基础,因为它提供了对编程概念和计算机体系结构的深入理解,2.安装和配置要在计算机上使用C语言,您...。

本站公告 2024-09-10 22:45:51

深入 Java 编程:利用小游戏源代码提升你的技能 (深入java虚拟机)

深入 Java 编程:利用小游戏源代码提升你的技能 (深入java虚拟机)

深入Java编程需要练习和实际经验,虽然学习教程和阅读文档非常重要,但通过编写实际项目可以让你对语言和其功能有更深入的理解,小游戏是为学习编程提供了一个绝佳的平台,它们相对较小,可以快速编写和测试,同时涵盖了广泛的编程概念,包括,变量和数据类型流程控制面向对象编程图形编程俄罗斯方块,这是一个益智游戏,玩家控制从上方掉落的方块,以形成水...。

最新资讯 2024-09-09 15:34:28

PHP开发人员的完整职业指南:入门、建立技能和寻找工作 (PHP开发人员面试问题)

PHP开发人员的完整职业指南:入门、建立技能和寻找工作 (PHP开发人员面试问题)

入门成为一名PHP开发人员的最佳方法是通过在线课程或认证,以下是一些推荐的资源,CourseraPHP特化课程UdemyPHP课程EdurekaPHP认证课程你还可以通过阅读书籍、文章和博客文章来学习PHP,以下是一些有用的资源,PHP官方手册PHP正确方法Laravel文档建立技能成为一名成功的PHP开发人员需要具有以下方面的技能,...。

技术教程 2024-09-09 12:09:14

C语言新手救星:免费下载初学者学习指南,消除编程恐惧 (c语言从新手到高手)

C语言新手救星:免费下载初学者学习指南,消除编程恐惧 (c语言从新手到高手)

对于编程新手来说,C语言可能是一项令人生畏的任务,但是,有了正确的指导,学习C语言并消除编程恐惧也并非不可能,为了帮助初学者踏上C语言编程之旅,我们提供了一份免费的学习指南,涵盖所有基本概念,从基础语法到高级数据结构,指南的内容C语言简介变量和数据类型运算符和表达式控制流,if,else、switch等,函数和数组字符串和指针文件操作...。

本站公告 2024-09-08 11:40:47

HTML 源代码的标题革命:释放创造力和参与度的力量 (html源代码大全)

HTML 源代码的标题革命:释放创造力和参与度的力量 (html源代码大全)

随着HTML5的出现,HTML代码的标题元素发生了巨大的变化,引入了一个新的标题级别,hgroup,,同时还增强了现有级别的语义和灵活性,这些变化为web开发人员提供了前所未有的标题定制和组织选项,让他们的网站更具吸引力、用户友好且易于访问,标题元素的演变HTML4,标题元素为到,HTML5,新标题元素hgroup被引入,现有元素获得...。

本站公告 2024-09-07 04:28:13

强大的视频播放引擎:播放高清视频、流媒体和交互式内容 (强大的视频播放器有哪些)

强大的视频播放引擎:播放高清视频、流媒体和交互式内容 (强大的视频播放器有哪些)

随着网络带宽的不断提升,视频内容在互联网上变得越来越流行,为了,如3D视频播放和音效增强,GOMPlayer,GOMPlayer是一款免费的、功能全面的视频播放器,支持各种视频格式和编解码器,它还提供了一些方便的功能,如字幕搜索和多媒体转换,这些视频播放器都提供了强大的功能,可以满足不同的视频播放需求,您需要根据您的具体需求来选择最适...。

最新资讯 2024-09-06 19:25:31

提升您的 PHP 开发技能:立即下载免费的源代码 (提升您的用户体验就差一步成功了)

提升您的 PHP 开发技能:立即下载免费的源代码 (提升您的用户体验就差一步成功了)

用户体验提升仅一步之遥作为一名PHP开发人员,您一直致力于提高代码质量、效率和应用程序性能,有时候您还需要一些额外的东西来提升您的用户体验,这就是免费源代码发挥作用的地方,免费源代码是一段可供任何人使用、修改和分发的代码,它可以帮助您快速轻松地添加新功能、修复错误或提高应用程序的速度,以下是免费源代码可以为您实现的一些好处,提高代码质...。

最新资讯 2024-09-05 22:04:53

需要哪几个步骤 我要建立一个网站 (需要哪几个步骤)

需要哪几个步骤 我要建立一个网站 (需要哪几个步骤)

一、购买域名新手建立网站,域名是必不可少的,简洁的域名能让人记忆深刻,选择域名大部分都以为主,也有很多新的后缀域名,域名后缀不同价格也不同,一般以年为单位,新手可以到阿里域名平台购买,二、购买虚拟主机虚拟主机和服务器可以用来装载网站程序,是网站建设必不可少的部分,对于新手来说选择虚拟主机比较好,虚拟主机我们常称为,空间,价格低廉,操作...。

技术教程 2024-09-02 00:15:38