mysql怎么获取自动递增的主键

mysql怎么获取自动递增的主键,第1张

每张表只能有1个自动增长字段,这个自动增长字段即可作为主键,也可以用作非主键使用,但是请注意将自动增长字段当做非主键使用时必须必须为其添加唯一索引,否则系统将会报错。例如:

-- 将自动增长字段设置为主键

create table t1 (id int auto_increment Primary key,sid int);

-- 将自动增长字段设置为非主键,注意必须显式添加Unique键

create table t2 (sid int primary key,id int auto_increment Unique);

-- 将自动增长字段设置为非主键如果未添加唯一索引将会报错,如下面语句

create table t3 (sid int primary key,id int auto_increment);

注释

oracle使用的是 –(两个 ) 批量注释 //

mysql使用的是 # 批量注释 //

通配符的使用

mysql和oracle都支持通配符 % 用以模糊查询 mysql还可以用instr(para para )函数来做匹配查询 速度更快 para 是原字符串 可以是表的字段 para 是需要匹配到的字符串

自增长数据类型的处理

oracel没有自动增长的数据类型 需要建立序列号 插入记录时 对该序列号使用nextval方法获取数据值

mysql有自动增长的数据类型 插入记录时不用 *** 作该字段 自动获取增长值

字符串单引号双引号的处理

oracel只能使用单引号包起字符串

mysql对字符串可以使用单引号和双引号 两个都支持

按位与函数

oracle的按位与 *** 作是 bitand() 按位或 bitor() 按位异或 bitxor()

eg select bitand( ) from dual ;

mysql的按位与是 & 按位或 | 按位异或 ^

eg select & ;

from子句

mysql可以没有from字句 oracle则是需要的 如查询系统当前时间:

oracle:

select sysdate from dual

mysql:

select sysdate();

查询结果数据分页

orale使用rowmum限制查询返回的总行数 是oracle系统顺序分配查询返回的行的编号 返回的第一行分配的是

因为rownum总是从 开始 当rownum=n或rownum>n时(n> 的自然数) 系统认为是false条件 所以无法查到 即rownum只支持小于判断 用于返回多少条以内的记录 如果想要返回的记录是一个区间 需要定义一个子查询 并且为子查询的rownum命名一个别名 如想要返回一个表的第二条和第三条记录:

select from (select rownum no col col from table where rownum=

另外 rownum不能以任何表的名称作为前缀

mysql使用limit分页 limit 子句可以被用于强制 select语句返回指定的记录数 limit接受一个或两个数字参数 参数必须是一个整数常量 第一个参数指定第一个返回记录行的偏移量 可缺省 默然为 第二个参数指定返回记录行的最大数目 初始记录行的偏移量是

eg select from table limit ; #检索记录行

#为了检索从某一个偏移量到记录集的结束所有的记录行 可以指定第二个参数为

select from table limit ; # 检索记录行 last

#如果只给定一个参数 它表示返回最大的记录行数目

select from table limit ; # 检索前 个记录行 换句话说 limit n 等价于 limit n

日期字段处理

orale日期字段只有date mysql日期字段分date和time两种

oracle的时间系统函数是sysdate

mysql:

current_date/curdate() 以 YYYY MM DD 或YYYYMMDD格式返回今天日期值 取决于函数是在一个字符串还是数字上下文被使用

current_time/curtime() 以 HH:MM:SS 或HHMMSS格式返回当前时间值 取决于函数是在一个字符串还是在数字的上下文被使用

now()/sysdate() 以 YYYY MM DD HH:MM:SS 或YYYYMMDDHHMMSS格式返回当前的日期和时间 取决于函数是在一个字符串还是在数字的上下文被使用

now()/sysdate()函数以 YYYY MM DD HH:MM:SS 返回当前的日期时间 可以直接存到datetime字段中 curdate()以 YYYY MM DD 的格式返回今天的日期 可以直接存到DATE字段中 CURTIME()以 HH:MM:SS 的格式返回当前的时间 可以直接存到TIME字段中

查询一个表 其日期字段date_col的值系统时间 天以内

oracle

SELECT FROM table WHERE date_col >= sysdate –

mysql:

select from table where to_days(date_col) >= to_days(now()) – ;

select date_sub(now() interval day); # select date_add(now() interval day); date_add 是增加

日期格式

oracle 使用to_char()函数

select to_char(sysdate yyyy mm dd ) from dual;

select to_char(sysdate hh :mi:ss ) from dual;

mysql 使用date_format() 或 time_format()

select date_format(now() %Y %m %d );

lishixinzhi/Article/program/Oracle/201311/18066

mysql是没有下标这个概念(至少目前接触到的,没有看到),有截取字符串内置函数

Oracle倒是有下标概念:table变量(下标):=值;

begin

var_nums(0):=2000;

var_nums(1):=2002;

end

这里记录一个问题

在MySQL中,我们要查看前3条记录的话,是使用limit

简单的分页也可以使用力limit来完成

这都比较常见,如果我们想要获取数据的前10%呢?

在SQLServer中,我们可以直接使用top 10 percent 就可以了,但在MySQL中,我们得另想办法

前10%的数据,我们得知道数据一共有多少,那我们就知道该获取多少条记录了,然后还得知道记录的行号。

@row_num这个变量,是按行来的,所以我们再where条件中使用的时候,他是最后1条记录的行号,及总记录数

总记录数乘以50%,就是前50%的记录数,这样,我们就获取了前X%数据,做完收工。

以上就是关于mysql怎么获取自动递增的主键全部的内容,包括:mysql怎么获取自动递增的主键、mysql和oracle常用内容比较、mysql 如何获取数据的下标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9304062.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存