mysql使用方法_Mysql的常用用法

一、mysql中limit的用法详解[数据分页常用]

在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。

None.gifSELECT * FROM table  LIMIT [offset,] rows | rows OFFSET offset

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。

None.gifmysql> SELECT * FROM table LIMIT 5,10;  // 检索记录行 6-15

None.gif

None.gif//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1: 

None.gifmysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.

None.gif

None.gif//如果只给定一个参数,它表示返回最大的记录行数目: 

None.gifmysql> SELECT * FROM table LIMIT 5;     //检索前 5 个记录行

None.gif

None.gif//换句话说,LIMIT n 等价于 LIMIT 0,n。

二、mysql中sql文件的编辑和如何导入导出sql文件

1、MYSQL中SQL文件的编辑:

随便使用一种编辑器都可以编辑,保存的sql文件后缀为:.sql。

sql中的内容参考下面例子,创建数据库 : job5db

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

DROP DATABASE IF EXISTSjob5db;CREATE DATABASE job5db DEFAULT CHARACTER SETutf8;USEjob5db;

##创建用户表CREATE TABLEt_user (user_id INT AUTO_INCREMENT PRIMARY KEY,user_name VARCHAR(30),

passwordVARCHAR(32)

)ENGINE=InnoDB;

##创建投票记录表CREATE TABLEt_vote (

vote_idINT AUTO_INCREMENT PRIMARY KEY,

vote_topicVARCHAR(30),

vote_stateVARCHAR(10),

vote_max_can_selectINT,

vote_total_countINT,

vote_total_option_countINT,

create_timetimestamp defaultnow(),

start_timedatetime,

end_timedatetime)ENGINE=InnoDB;

##创建投票项表CREATE TABLEt_option (

option_idINT AUTO_INCREMENT PRIMARY KEY,

option_nameINT,

option_countVARCHAR(23),

vote_idINT,foreign key(vote_id) referencest_vote(vote_id)

)ENGINE=InnoDB;

##插入初始化数据INSERT INTO t_user (user_name,password)VALUES('admin','123456');COMMIT;

View Code

2.从SQL文件中导入数据到MYSQL中:

1>首先,我们应该在cmd中进入mysql指令界面中,格式很简单 ,就是  mysql -u[用户名] -h[主机所在地址,默认不写是localhost] -p   然后输入密码即可

xVEtgsAwMY+++atOSfxbeUW34nSWQEAd0DprNI3pqb0iTo6KwDgDni+Zz0JOisA4Pz+Dxcp9UxtzqBxAAAAAElFTkSuQmCC

2>直接使用source [所在的路径//*.sql]将SQL文件进行导入,接下来就会输出一大串的Query OK之类的信息了。

06a61fe2ea1844a736f8bb77aab40b4f.png

3、MYSQL中将数据库导出成SQL文件:

其实很简单的,就是一条语句就可以了,首先我们打开cmd,不用进mysql指令界面,直接按照下列格式将导出语句敲进去,然后再输入密码即可了:

mysqldump -h[主机所在IP] -u[用户名] -p [要导出的数据库]>[导出的路径//[文件名].sql]

好吧,直接这样看可能有点抽象,我们来举个例子,目前我的MYSQL中有一个数据库bookinfodb,现在我要将它导出并且保存到D盘中。

a6d1c56a53162d040eb7f69a447dbdf5.png

这个时候我们再到D盘目录下,我们就可以看到多了一个test.sql文件了

8d17b39e16c372ffb759f3504ba18061.png

三、Mysql获取表中最后一行记录的语句?

排序后取得第一条记录

SELECT * FROM tb ORDER BY id DESC LIMIT 1

【注】在JDBC中有可以在执行时,取得插入时产生的主键:

1 //方法一:

2 long key =-1L;3 Statement statement =connection.createStatement();4 statement.executeUpdate(YOUR_SQL_HERE,Statement.RETURN_GENERATED_KEYS);5 ResultSet rs =statement.getGeneratedKeys();6 if(rs !=null&&rs.next()){7 key = rs.getLong(1);8 }9

10 //方法二:

11 PreparedStatement ps =con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);12 statement.executeUpdate();13 ResultSet rs =statement.getGeneratedKeys();14 //方法三:下面这种可精确取得某个字段

15 PreparedStatement ps = con.prepareStatement(sql, new String[]{"USER_ID"})

四、MySQL级联删除和更新

首先,目前在产品环境可用的MySQL版本(指4.0.x和4.1.x)中,只有InnoDB引擎才允许使用外键,所以,我们的数据表必须使用InnoDB引擎。

下面,我们先创建以下测试用数据库表:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

CREATE TABLE`roottb` (

`id`INT(11) UNSIGNED AUTO_INCREMENT NOT NULL,

`data`VARCHAR(100) NOT NULL DEFAULT '',PRIMARY KEY(`id`)

) TYPE=InnoDB;CREATE TABLE`subtb` (

`id`INT(11) UNSIGNED AUTO_INCREMENT NOT NULL,

`rootid`INT(11) UNSIGNED NOT NULL DEFAULT '0',

`data`VARCHAR(100) NOT NULL DEFAULT '',PRIMARY KEY(`id`),INDEX(`rootid`),FOREIGN KEY (`rootid`) REFERENCES roottb(`id`) ON DELETE CASCADE) TYPE=InnoDB;

View Code

注意:

1、必须使用InnoDB引擎;

2、外键必须建立索引(INDEX);

3、外键绑定关系这里使用了“ ON DELETE CASCADE”,意思是如果外键对应数据被删除,将关联数据完全删除,更多信息请参考MySQL手册中关于InnoDB的文档;

五、mysql update语句问题:You can't specify target table 'user' for update in FROM clause

原因是mysql不支持从选择的表再去修改,所以构造个临时表来解决问题

Error Code: 1093. You can't specify target table 'ws_product' for update in FROM clause

这个是我们在使用update或者delete语句时,在where条件里面加入的子查询导致的。例如如下的update语句:

update product set type = 'static' where id in (

select id from product where first_name ='superman'

);

修改上述语句为下面这样,该问题可以解决:

update ws_product set type = 'static' where id in (

select id form (

select id from ws_product where first_name ='superman'

) xx

);

注意,这样一定要给最里面的子查询定义一个别名,不然会报另外一个错误:

Error Code: 1248. Every derived table must have its own alias

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

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

相关文章

MTK 移植泰文输入法

1.移植zi输入法 1.1 在文件..\make\XXX_GPRS.mak中 讲输入方式改为MMI_ZI XXX_LANGUAGE EN_SM_THAI INPUT_METHOD MMI_XI 1.2在MMI_feature.h 打开相应的ZI语言输入法的宏开关, #if defined(CFG_MMI_LANG_THAI) && ((CFG_MMI_LANG_THAI __ON__)||(CFG_MM…

java中无法推断类型参数_Java中的推断异常

java中无法推断类型参数借用和窃取其他语言的概念和想法总是很高兴的。 Scala的Option是我真正喜欢的一个主意,因此我用Java编写了一个实现。 它包装了一个可能为null或不为null的对象,并提供了一些可用于某种分类功能的方法。 例如,isDefine…

H3C 三种生成树协议特性的比较

转载于:https://www.cnblogs.com/fanweisheng/p/11153361.html

使用HazelCast进行休眠缓存:基本配置

以前,我们对JPA缓存,机制以及hibernate提供的内容进行了介绍 。 接下来是一个使用Hazelcast作为二级缓存的休眠项目。 为此,我们将在JPA中使用一个基本的spring boot项目。 Spring Boot使用休眠作为默认的JPA提供程序。 我们的设置将非常接…

mysql事务实战_mysql事务隔离级别详解和实战

A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据但是 在A事务中查询的话 查到的都是操作之后的数据没有提交的数据只有自己看得到,并没有update到数据库。查看InnoDB存储引擎 系统级的隔离级别 和 会话级的隔离级别:mysql> sele…

微云 linux_编年史与微云

微云 linux总览 我面临的一个常见问题是: 如果是单个作者,多个读者,如何缩放基于Chronicle的系统。 尽管有解决此问题的方法,但很有可能根本不会有问题。 微云 这是我用来描述单个线程来完成当前由多个服务器完成的工作的术语。 …

H3C 计算子网内可用主机地址数

转载于:https://www.cnblogs.com/fanweisheng/p/11153665.html

mysql中两次排序_MySQL中的两种排序方式: index和filesort

index :通过有序索引顺序扫描直接返回有序数据,不需要额外的排序,操作效率较高。filesort:通过对返回数据进行排序,filesort 并不代表通过磁盘文件排序,而是说明进行了一个排序操作,至于排序操作…

Java命令行界面(第2部分):args4j

在上一篇文章中 ,我研究了如何使用Apache Commons CLI在Java应用程序中解析命令行参数。 在本文中,我将使用另一个库args4j进行相同的操作。 args4j采用了一种不同于Commons CLI的方式来指定Java应用程序应期望的命令行参数。 尽管Commons CLI期望代表选…

mysql my.cnf在哪里_my.cnf配置文件在哪

my.cnf配置文件在linux上是位于路径“/etc/my.cnf”下,在window上则位于安装目录的根目录下;可以使用命令“mysql --help”查看关于MYSQL对应配置文件“my.cnf”搜索顺序。一般linux上都放在 /etc/my.cnf ,window 上安装都是默认可能按照上面的路径还是没…

深入学习Mybatis框架(二)- 进阶

1.动态SQL 1.1 什么是动态SQL&#xff1f; 动态SQL就是通过传入的参数不一样,可以组成不同结构的SQL语句。 这种可以根据参数的条件而改变SQL结构的SQL语句,我们称为动态SQL语句。使用动态SQL可以提高代码重用性。 1.2 XML方式的实现 1.2.1 需要使用到的标签 <if> 用于判…

近似线性依靠matlab_不要仅仅依靠单元测试

近似线性依靠matlab当您构建一个复杂的系统时&#xff0c;仅仅测试组件是不够的。 这很关键&#xff0c;但还不够。 想象一下一家汽车厂生产和进口最高质量的零件&#xff0c;但组装好汽车后再也没有启动发动机。 如果您的测试用例套件几乎不包含单元测试&#xff0c;那么您将永…

戏说 .NET GDI+系列学习教程(三、Graphics类的方法的总结)

转载于:https://www.cnblogs.com/WarBlog/p/11157395.html

从关系数据库到Elasticsearch的索引数据– 1

Elasticsearch提供强大的搜索功能&#xff0c;并支持数据的分片和复制。 因此&#xff0c;我们希望将数据库中可用的数据索引到Elasticsearch中。 有多种方法可以将数据索引到Elasticsearch中&#xff1a; 使用Logstash将源设置为DB&#xff0c;将接收器设置为Elasticsearch&…

mysql 求bit 某位为1_mysql按位的索引判断值是否为1

DELIMITER $$DROP FUNCTION IF EXISTS value_of_bit_index_is_true$$/*计算某个数字的某些索引的位的值是否都为1&#xff0c;索引类似1,2,3,4*/CREATE FUNCTION value_of_bit_index_is_true(number INT, idxies VARCHAR(50)) RETURNS INT(11)BEGIN/*将1,2,3,4,5,6这样的字符串…

python math.asin

import mathmath.asin(x) x : -1 到 1 之间的数值。如果 x 是大于 1&#xff0c;会产生一个错误。 #!/usr/bin/pythonimport math print "asin(0.64) : ", math.asin(0.64)print "asin(0) : ", math.asin(0)print "asin(-1) : ", math.asin(-1)p…

消息队列mysql redis那个好_Redis与RabbitMQ作为消息队列的比较

简要介绍RabbitMQRabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种&#xff0c;最初起源于金融系统&#xff0c;用于在分布式系统中存储转发消息&#xff0c;在易用性、扩展性、高可用性等方面表现不俗。消息中间件主要用于组件之间的解耦&#xff0c;消息的发送者无需…

mysql 添加远程连接_为 mysql 添加远程连接账户

1、以管理员身份登录mysqlmysql -u root -p2、选择mysql数据库use mysql3、创建用户并设定密码create user [email protected] identified by ‘123456‘4、使操作生效flush privileges5、使操作生效flush privileges6、用新用户登录mysql -u test -p允许用户从远程访问数据库的…

包装类型与包装类别_包装的重要性

包装类型与包装类别我记得大约15年前开始学习Java的时候。 我读到了很多有关“包装”和“命名空间”的东西&#xff0c;但我完全不了解。 可悲的是&#xff1a;虽然包装的某些方面几乎为行业中的每个人所了解&#xff0c;但其他方面却不是。 因此&#xff0c;让我们看一下哪些软…

isinstance和issubclass

目录 一、isinstance与type二、issubclass一、isinstance与type 在游戏项目中&#xff0c;我们会在每个接口验证客户端传过来的参数类型&#xff0c;如果验证不通过&#xff0c;返回给客户端“参数错误”错误码。 这样做不但便于调试&#xff0c;而且增加健壮性。因为客户端是可…