oracle数据库创建表时,int型数据为何报错?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库创建表时,int型数据为何报错?相关的知识,希望对你有一定的参考价值。

参考技术A oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集。\\x0d\\x0aint类型只能存储整数;\\x0d\\x0anumber可以存储浮点数,也可以存储整数;\\x0d\\x0anumber(8,1)存储小数位为1位,总长度为8的浮点数,如果小数位数不足,则用0补全;\\x0d\\x0anumber(8)存储总长度为8的整数;\\x0d\\x0aint相当于number(22),存储总长度为22的整数。\\x0d\\x0a所以如果使用INT,不要指定长度。要指定长度,请使用NUMBER(P,S)\\x0d\\x0a另外,NUMBER 如果precision和scale没有指定,即相当于 NUMBER (38,7)。

第五天,数据内型内部方法

1 整形,浮点型

 1 整形(存储整数内型的数据)

int   只能转纯数字的字符串,小数点都不行

比如;  

a = int(“1234.123”) a = int("asdsad")

报错

a = int("12321")

不会报错

注意;小数点也是一个字符

 2 其他进制转10进制(内置方法)

在Python中 用int,可以给它传参数,表示你转的值是什么进制的

例如;

格式 int("类型数字",是几进制的比如 2 就是2进制,8 就是8进制 16,就是16进制)

 

print(int("1100",2))
print(int("13",8))
print(int("c",16)) 

3 10 进制转其他进制(内置方法)

  在Python中是有内置方法可以将10进制数转换成其他进制数;

例如;

bin()  # 10进制转2进制

oct()  # 10进制转8进制

hex()  # 10进制转16进制

 0b 表示 2进制的数

 0o 表示8进制的数

 0x 表示16进制的数

2 浮点型(存储小数内型的数据)

float 只能转换纯数字的数据,可以有小数点

例如;

float("122313")

float("123123.2323")

以上都不会报错

float("asdada")

这个会报错    

3 总结 

1整形,和浮点型都是不可变类型(可变类型;在值变得情况下,id不会变,不可变类型;在值变得情况下 id 也会变)

2他们都是无序的(有索引的,就是有序的,没有索引的就是无序的)

3它们都只能存一个值(一个变量名,只能存一个数据)

2字符串(存储具有描述性的数据)

1 索引取值(只能取,不能改)

列如 

a = "hello world"

 a[0] = e

print(a)

报错

 

切片(从一个大的字符串,取出一个小的字符串,顾头不顾尾,左边的就是头,右边的就是尾)

格式; a[索引:索引:表示隔几个再取的整形数,可以是正数,也可以为复数一般是n-1]

列如;

a = "hello world"

a[0:5]     取出的是  "hello"

a[0:5:1]  就等于  a[0:5]  如果后面没写步长,默认为1

a[0:5:2]  取出的结果就是  "hlo"  此时步长就是2,意思就是隔2-1个的时候就取一个值

 

负数取值;

索引,从左往右,是从0开始数数的,从右往左是从-1开始数数的,索引控制的是范围

步长;如果是正数,那么就会从左往右去取值,如果是负数,那么就会从右往左去取值,步长控制的是方向

所以,看一下如下例子;

 

a = "hello world"

a[-1]  取出的值就是d

a[0:5:-1]  此时是取不出来值得,虽然步长是从右往左在取值,但它是从头开始取得,也就是索引0,索引0就是头

a[5:0:-1]  取出的值就是"olle"注意h是不会取得,因为h 的索引是尾,顾头不顾尾

a[-1:-5:-1] 取出的值"dlro"

 

len() 统计字符串中字符的个数

a = "helllo world"

len(a)  返回的是  11   注意;字符串中的空格也是字符,11包含字符

成员运算

in   not in

in  在里面吗?在返回True

not in   在里面吗?不在返回False

例如;

a = "hello world"

print("he"in a)  输出True

print("asdasd" in a)  输出False

print("asdasd"  not in a)  输出True

 

字符串内置方法;

 

strip()   去掉字符串左右两边的字符;注意;括号内没写字符,去掉的是左右两边的空格

lstrip()       去掉字符串左边的字符;注意;括号内没写字符,去掉的是左右两边的空格

rstrip()       去掉字符串右边的字符;注意;括号内没写字符,去掉的是左右两边的空格

例如;

a = "    hello world     "

a1 = a.strip()

a1 = "hello world"

两边的空格已经没了。

a2 = a.lstrip()

a2 = "hello world     "

左边的空格已经没了

a3 = a.rstrip()

a3 = "     hello world"

右边的空已经没了

如果变量是这种的,如下

a = "$$$$$$hello world$$$$$$$"

要去掉"$"这个符号那么就需要在strp()的括号内输入$这个符号

 

a1 = a.strip("$")

a1 = "hello world"

注意,这个方法,只能去除头,或者尾部的字符,如果是头部,尾部的第一个字符匹配不上,就会去除掉 不会管中间的

 

split() (通过输入一些特殊的分隔符,将字符串切分成一个列表,切分的顺序是从左往右的)

data = ‘jaso n|123| handsome‘

print(data.split(‘|‘))

username,password,info = data.split(‘|‘)

print(username,password,info)

print(data.split(‘o‘)) # 切割的顺序其实从左往右的

print(data.split(‘o‘,1)) # 切割的顺序其实从左往右的

print(data.rsplit(‘o‘,1)) # 切割的顺序其实从右往左的

 

lower()  将所有的大写字母转换部转换成小写字母

upper()  将所有小写字母转换成大写字母

 

startswith 和  endswith

s1 = ‘egon is dsb‘

print(s1.startswith(‘e‘)) # 判断字符串是否以什么什么开头

print(s1.endswith(‘n‘)) # 判断字符串是否以什么什么结尾

 

 

format  的三种玩法(python推荐使用format做格式化输出)

第一种 按位置占位 跟%s原理一致

str1 = ‘my name is my age is ‘.format(‘jason‘,18)

str1 = ‘my name is my age is ‘.format(18,‘jason‘,)

print(str1)

第二种 按索引占位

str1 = ‘my 1 name is 0 my 0 age is 0‘.format(‘egon‘,18)

print(str1)

第三种 指名道姓占位(关键字传参)

str1 = ‘my name name is age my name age is name‘.format(name=‘jason‘,age=18)

print(str1)

 

 

join   将容器类型中的多个元素通过指定字符拼接成一个字符串

data = ‘jason|123|handsome‘

res_list = data.split(‘|‘)

print(res_list)

res_str = ‘$‘.join(res_list) 

l = [‘1‘,‘a‘,‘b‘]

res = ‘|‘.join(l)

print(res)

注意;其中容器的元素要是字符串才可以拼接

 

 

replace  替换

str = ‘egon is dsb and egon is sb he has a BENZ‘

res = str.replace(‘egon‘,‘kevin‘,1)

print(res)

print(str)

 

 

isdigit   # 判断字符串中包含的是否为纯数字

while True:

age = input(‘>>>:‘)

if age.isdigit():

age = int(age)

if age > 28:

print(‘阿姨好‘)

else:

print(‘你他妈的能不能好好输‘)

 

 

find,rfind,index,rindex,count

s = ‘kevin is dsb o and kevin is sb‘

print(s.find(‘dsb‘)) # 返回的是d字符所在的索引值

print(s.find(‘xxx‘)) # 找不到的时候不报错返回的是-1

print(s.find(‘i‘,0,3)) # 还可以通过索引来限制查找范围

print(s.index(‘o‘)) # 返回所传字符所在的索引值

print(s.index(‘i‘,0,3)) # 返回所传字符所在的索引值

print(s.count(‘n‘)) # 统计字符出现的次数

 

center,ljust,rjust,zfill

s9 = ‘jason‘
print(s9.center(12,‘*‘))#返回的是一共12位,jason 放在中间,在他的两边补*  居中对齐

***jason****
print(s9.ljust(6,‘$‘)) #jason 一共6位,jason放在左边,在它的后面补$  左对齐

jason$

print(s9.rjust(5,‘$‘))#jason 一共6位,jason放在右变,在它的前面补$  右对齐

$jason

print(s9.rjust(6‘ ‘))  右对齐
print(s9.zfill(40))#返回的一共40位,在Jason的前面补0

 

expandtabs

s10 = ‘a\tbc‘

print(s10.expandtabs(100))#返回的是q与bc 之间的空格由原来的4格改为100格

 

 

captalize,swapcase,title

s12 = ‘hElLo WoRLD sH10‘

print(s12.capitalize()) # 字符串首字母大写

print(s12.swapcase()) # 大小写互换

print(s12.title()) # 每个单词的首字母大小

 

#5、is数字系列
num1=b‘4‘ #bytes
num2=u‘4‘ #unicode,python3中无需加u就是unicode
num3=‘壹‘ #中文数字
num4=‘Ⅳ‘ #罗马数字
# ‘‘.isnumeric(): unicode,中文数字,罗马数字 只要是表示数字都识别  就是不能识别2进制
print(num2.isnumeric())
print(num3.isnumeric())
print(num4.isnumeric())

# ‘‘.isdecimal(): unicode 只识别普通的阿拉伯数字
print(num2.isdecimal())
print(num3.isdecimal())
print(num4.isdecimal())

# ‘‘.isdigit() :bytes,unicode 通常情况下使用isdigit就已经满足需求了   了解这个就可以了
print(num1.isdigit())
print(num2.isdigit())
print(num3.isdigit())
print(num4.isdigit())

 

 

总结

存一个值

有序的

不可变类型

 

3列表(可存可取)

列表的取值

字符串转列表

例如 

l = ["anc"]

原理;list内部就是一个for循环,将值一个一个的存入列表

 

列表取值(按索引取值,正反取值,)

# l = [1,2,3,4]
# print(l[0:4:1])
# print(l[0::])
# print(l[5::-1])
# print(id(l))
# l[0] = 69
# print(id(l))
# print(l)

 

 

#2、切片(顾头不顾尾,步长)
l = [11,22,33,44,55]
l1 = [99,88,77,66]
# [11,22,33,44,55,99,88,77,66]

# 1.尾部添加一个66
# l.append(66) # 注意append值能将被添加的数据当作列表的一个元素
# print(l)

# 2.任意位置添加元素
# l.insert(2,96) # 通过索引在任意位置添加元素
# print(l) # 注意insert值能将被添加的数据当作列表的一个元素

# 3.添加容器类型数据
# l.append(l1)
# l.insert(-1,l1)
# l.extend(l1) # 内部原理for循环l1一个个追加到列表的尾部
# l.extend([1,])
# print(l)

#3、长度
# print(len(l))
#4、成员运算in和not in
# print( 444 in l)
#5、往列表中添加元素(******)
# append
# insert
# extend

#6、删除
# print(l)
# del l[2] # del适用于所有的删除操作
# print(l)

 

# res1 = l.pop() # 尾部弹出
# res2 = l.pop()
# res3 = l.pop()
# print(res1,res2,res3)


# res1 = l.pop(0) # 可以指定索引 按照索引弹出元素
# print(res1)


# res = l.remove(33) # 指定要删除的元素的值
# print(l)
# print(res)

# s = ‘haha‘
# print(s)
# del s
# print(s)
#7、循环
for i in l:
print(i)

 

 

以上是关于oracle数据库创建表时,int型数据为何报错?的主要内容,如果未能解决你的问题,请参考以下文章

oracle我建表时的数据类型是int,为啥插值的时候小数照样能插不报错?

oracle 中建表时,属性用int好还是number好 ?

ORACLE SQL - 创建表时数据类型无效

oracle 中的啥数据类型会映射到 Java int?

在oracle中,创建表时,不创建主键,有没有默认索引?如果有,是啥索引?

为oracle数据库列创建表时如何使用默认主键作为序列值