与MSSQL对比学习MYSQL的心得(三)--查看字段的长度

SQLSERVER

代码如下:

USE [sss]
GO
SELECT LEN([NAME]) FROM [dbo].[aa]

MYSQL

代码如下:

CREATE TABLE tmp13(vb VARBINARY(10))
INSERT INTO tmp13 (vb) VALUES(12)
SELECT LENGTH(vb) FROM tmp13
INSERT INTO tmp13 (vb) VALUES(1212)

时间: 2014-06-10

与MSSQL对比学习MYSQL的心得(六)--函数

数学函数 1.求余函数MOD(X,Y) MOD(X,Y)返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,他返回除法运算后的精确余数 SELECT MOD(31,8) 2.四舍五入函数TRUNCATE(X,Y) TRUNCATE(X,Y)返回被舍去至小数点后y位的数字x.若y的值为0,则结果不带有小数点或不带有小数部分. 若y设为负数,则截去(归零)x小数点左边起第y位开始后面所有低位的值. SELECT TRUNCATE(1.32,1) TRUNCATE(1.32,1)保留小数点

MySQL 在触发器里中断记录的插入或更新?

下面是一种实现的方法.思路就是想办法在触发器中利用一个出错的语句来中断代码的执行. mysql> create table t_control(id int primary key); Query OK, 0 rows affected (0.11 sec) mysql> insert into t_control values (1); Query OK, 1 row affected (0.05 sec) mysql> create table t_bluerosehero(id i

与MSSQL对比学习MYSQL的心得(八)--插入 更新 删除

同样的,只会讲解跟SQLSERVER不同的地方 插入 将多行查询结果插入到表中 语法 INSERT INTO table_name1(column_list1) SELECT (column_list2) FROM table_name2 WHERE (condition) INSERT INTO SELECT 在SQLSERVER里也是支持的 table_name1指定待插入数据的表:column_list1指定待插入表中要插入数据的哪些列:table_name2指定插入数据是从 哪个表中查询

与MSSQL对比学习MYSQL的心得(五)--运算符

安全等于运算符(<=>) 这个操作符和=操作符执行相同的比较操作,不过<=>可以用来判断NULL值. 在两个操作数均为NULL时,其返回值为1而不为NULL: 而当一个操作数为NULL时,其返回值为0而不为NULL. 下面分别是 SELECT NULL <=>1   SELECT 1<=>0  SELECT NULL <=>NULL 的执行结果 在两个操作数均为NULL时,其返回值为1而不为NULL: LEAST运算符 语法格式为:LEAST(值

与MSSQL对比学习MYSQL的心得(一)--基本语法

这一期主要是学习MYSQL的基本语法,陆续还会有续期的文章,敬请期待 语法的差异 我这里主要说语法的不同 1.默认约束 区别:mysql里面DEFAULT关键字后面是不用加括号的 复制代码 代码如下: --sqlserverCREATE TABLE emp(id INT DEFAULT(12))--mysqlCREATE TABLE emp(id INT DEFAULT 12) 2.设置自增列 区别很大,不过好像mysql的自增列不能设置步长的 MYSQL的自增列一定也要是主键列,不是主键列会报

与MSSQL对比学习MYSQL的心得(四)--BLOB数据类型

MYSQL里的BLOB数据类型 BLOB是一个二进制大对象,用来存储可变数量的数据.BLOB类型分为4种:TinyBlob.Blob.MediumBlob.LongBlob, 这几个类型之间的唯一区别是在存储文件的最大大小上不同. MySQL的四种BLOB类型     类型 大小(单位:字节) TinyBlob                            最大 255Blob                                  最大 65KMediumBlob      

与MSSQL对比学习MYSQL的心得(二)--显示宽度

我们先来看看整数型数据类型的宽度范围 创建一个表 复制代码 代码如下: CREATE TABLE tb_emp( id BIGINT(1)) id字段的数据类型为BIGINT(1),注意到后面的数字1,这表示的是该数据类型指定的显示宽度,指定能够显示的数值中数字的个数. 例如,假设声明一个INT类型的字段 YEAR INT(4) 该声明指明,在year字段中的数据一般只显示4位数字的宽度. 在SQLSERVER里是会报错的 复制代码 代码如下: CREATE TABLE abc(id INT(1

与MSSQL对比学习MYSQL的心得(七)--查询

比较出大家的异同点,从而加深记忆 这一篇<与MSSQL对比学习MYSQL的心得(七)>也是一样,相同的地方略略带过,不同的地方我会给出例子,谢谢大家的支持o(∩_∩)o 这一节主要介绍MYSQL里的基本查询(MYSQL官方参考手册) MySQL中select的基本语法形式: select 属性列表 from 表名和视图列表 [where 条件表达式] [group by 属性名[having 条件表达式]] [order by 属性名[asc|desc]] [limit <offset&

mysql如果数据不存在,则插入新数据,否则更新的实现方法

//如果不存在,则插入新数据 $sql = "INSERT INTO {$ecs->table('cat_lang')} (cat_id,lang_id,cat_name,keywords,cat_desc) VALUES({$cat_id},{$k},'{$val['cat_name']}','{$val['keywords']}','{$val['cat_desc']}') ON DUPLICATE KEY UPDATE cat_name='{$val['cat_name']}',ca

mysql 记录不存在时插入 记录存在则更新的实现方法

mysql 记录不存在时插入在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问题的解决方案. 问题:我创建了一个表来存放客户信息,我知道可以用 insert 语句插入信息到表中,但是怎么样才能保证不会插入重复的记录呢? 答案:可以通过使用 EXISTS 条件句防止插入重复记录. 示例一:插入多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的

mysql 存在该记录则更新,不存在则插入记录的sql

复制代码 代码如下: INSERT table (auto_id, auto_name) values (1, 'yourname') ON DUPLICATE KEY UPDATE auto_name='yourname' ON DUPLICATE KEY UPDATE的使用 如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE.例如,如果列a被定义为UNIQUE,并且包含值1,则以下两

Mysql 错误问题汇总(不断更新中)

1.Mysql errono 1005 : 主外键不是完全一致 , 请检查如下几点: a.字段是否存在 b.类型是否一致(注意unsigned , powerdesign 生成问题) c.数据库引擎是否一致 d.字符编码是否一致 e.windows平台下注意修改lower_case_table_names = 0, windows本身不区分文件大小写,改为0之后就区分了可能造成找不到引用的表 2.Mysql errono 121: 外键约束名称重复 3.记录 Mysql WorkBench 中单

防止mysql重复插入记录的方法

防止mysql重复插入记录的方法有很多种,常用的是ignore,Replace,ON DUPLICATE KEY UPDATE,当然我们也可以在php中加以判断了. 方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: 代码如下: 复制代码 代码如下: INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('test9@163.com'

MySql避免重复插入记录的几种方法

方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: 复制代码 代码如下: INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('test9@163.com', '99999', '9999'); 这样当有重复记录就会忽略,执行后返回数字0 还有个应用就是复制表,避免重复记录: 复制代码 代码如下: INSERT IGNORE INT

mysql视图之创建可更新视图的方法详解

本文实例讲述了mysql视图之创建可更新视图的方法.分享给大家供大家参考,具体如下: 我们知道,在mysql中,视图不仅是可查询的,而且是可更新的.这意味着我们可以使用insert或update语句通过可更新视图插入或更新基表的行. 另外,我们还可以使用delete语句通过视图删除底层表的行.但是,要创建可更新视图,定义视图的select语句不能包含以下任何元素: 聚合函数,如:min,max,sum,avg,count等. DISTINCT子句 GROUP BY子句 HAVING子句 左连接或

mysql如何优化插入记录速度

插入记录时,影响插入速度的主要是索引.唯一性校验.一次插入记录条数等.根据这些情况,可以分别进行优化,本节将介绍优化插入记录速度的几种方法. 一. 对于MyISAM引擎表常见的优化方法如下: 1. 禁用索引.对于非空表插入记录时,MySQL会根据表的索引对插入记录建立索引.如果插入大量数据,建立索引会降低插入记录的速度.为了解决这种情况可以在插入记录之前禁用索引,数据插入完毕后在开启索引.禁用索引的语句为: ALTER TABLE tb_name DISABLE KEYS;  重新开启索引的语句

mysql使用GROUP BY分组实现取前N条记录的方法

本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法.分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法. 这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~): 结果: 方法一: 复制代码 代码如下: SELECT a.id,a.SName,a.ClsNo,a.Score FROM aa a LEFT J

Mysql update多表联合更新的方法小结

下面我建两个表,并执行一系列sql语句,仔细观察sql执行后表中数据的变化,很容易就能理解多表联合更新的用法 student表 class表 1. 执行 UPDATE student s , class c SET s.class_name='test00',c.stu_name='test00' WHERE s.class_id = c.id student表 class表 2. 执行 UPDATE student s JOIN class c ON s.class_id = c.id SET

利用Java的MyBatis框架获取MySQL中插入记录时的自增主键

第一步: 在Mybatis Mapper文件中添加属性"useGeneratedKeys"和"keyProperty",其中keyProperty是Java对象的属性名! <insert id="insert" parameterType="Spares" useGeneratedKeys="true" keyProperty="id"> insert into spares