精华内容
下载资源
问答
  • mysql之常量数据类型

    千次阅读 2019-04-11 12:49:54
    一、列的数据类型 1.数字类(int后面的数字并代表存放的数字的长度,只代表显示的宽度,可以关注) 数字类关注: 1、存储什么类型的数字 整数:正数、负数 Create table t1(id int(正负都可以),id1 int ...

    一、列的数据类型
    1.数字类(int后面的数字并不代表存放的数字的长度,只代表显示的宽度,可以不关注)
    数字类关注:
    1、存储什么类型的数字
    整数:正数、负数
    Create table t1(id int(正负都可以),id1 int unsigned(正数));
    在int中插入小数,自动删除小数点后面的
    2、存储的值的范围
    mysql> help int
    Name: ‘INT’
    Description:
    INT[(M)] [UNSIGNED] [ZEROFILL]
    这里的M并不代表数字的长度或者范围,只表示显示宽度,可以不关注
    A normal-size integer. The signed range is -2147483648 to 2147483647.
    The unsigned range is 0 to 4294967295.

    数字类数据有:
    1.1、整型: 5种
    每个整型类型可以指定一个最小显示宽度。这个宽度并不表示存储的值有多大
    (官网搜索:data types)
    在这里插入图片描述
    类型 取值范围
    tinyint[(display size)] -128 ----- 127
    smallint[(display size)] -32 768 ----- 32 767 (几万)
    mediumint[(display size)] -8 388 608 — 8 388 607 (几百万)
    integer[(display size)] -2 147 483 648 ----- 2 147 483 647 (几十亿)
    bigint[(display size)] -9 223 372 036 854 775 808 -----
    9 223 372 036 854 775 807 (天文数字)
    例2:
    CREATE TABLE width(c4 INTEGER(4));
    INSERT INTO width VALUES(1);
    SELECT * FROM width;
    INSERT INTO width VALUES(10000);
    SELECT * FROM width;
    值超过显示宽度,显示宽度自动增加
    1.2、小数类型(常用)
    decimal[(precision[,scale])]
    precision:精度,不包含小数点的数字总位数(1–30)。不指定默认为10
    scale:小数位数。如果不指定,默认为0
    该类型的同义词:dec,numeric,fixed

    decimal[(P/M[,D])]:表示可以存储D位小数的P/M位数
    precision(P/M):有效数字数的精度,支持范围(1-65),不指定默认为10
    scale:小数位数,支持范围(1-30)如果不指定,默认为0
    该类型的同义词:dec,numeric,fixed
    MySQL要求P/M>=D
    只想要小数:P/M=D
    只想要整数:(P/M,0),0可省略
    此时插入整数可以;
    插入小数也可以,但会对第一位小数四舍五入,取整数

    mysql> help decimal
    Name: ‘DECIMAL’
    Description:
    DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

    A packed “exact” fixed-point number. M is the total number of digits
    (the precision) and D is the number of digits after the decimal point
    (the scale). The decimal point and (for negative numbers) the - sign
    are not counted in M. If D is 0, values have no decimal point or
    fractional part. The maximum number of digits (M) for DECIMAL is 65.
    The maximum number of supported decimals (D) is 30. If D is omitted,
    the default is 0. If M is omitted, the default is 10.
    UNSIGNED, if specified, disallows negative values.
    All basic calculations (+, -, *, /) with DECIMAL columns are done with
    a precision of 65 digits.

    1.3、Float (不常用)
    1.小数位数不是固定的
    2.超出存储范围,近似值进行存储
    0-23 6
    24-53 15

    mysql> help float
    Name: ‘FLOAT’
    Description:
    FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

    A small (single-precision) floating-point number. Permissible values
    are -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to
    3.402823466E+38. These are the theoretical limits, based on the IEEE
    standard. The actual range might be slightly smaller depending on your
    hardware or operating system.
    M is the total number of digits and D is the number of digits following
    the decimal point. If M and D are omitted, values are stored to the
    limits permitted by the hardware. A single-precision floating-point
    number is accurate to approximately 7 decimal places.
    UNSIGNED, if specified, disallows negative values.
    Using FLOAT might give you some unexpected problems because all
    calculations in MySQL are done with double precision. See
    http://dev.mysql.com/doc/refman/5.7/en/no-matching-rows.html.

    float[(length) | (,)]
    double[(precision) | (,)]
    主要用来存储小数点前后有很多位数字的值。它和小数类型的区别在于小数点的位置可以在任何地方,即小数点是“浮动的”。由于对一个浮点数字来说,可用的存储空间有限,如果一个数字非常大或非常小,将存储这个数字的近似值而不是实际值
    浮点数又分为单精度和双精度。区别在于值所保留的存储空间数量不同
    在一个浮点数据类型中可以指定长度,来确定具体的浮点类型:长度在0—24之间的是单精度浮点数,长度在25—53之间的是双精度浮点数

    create table c(id float(25));——只有M的时候,M>24才会自动变成double。
    create table d(id float(29,3));——整数位7位后数据不准

    一个单精度浮点,数字精确到小数点后7位。即对第8位进行四舍五入,保留到第七位
    双精度浮点,数字精确到小数点后15位。
    例:
    create table g(id float(10,9));
    insert into g values(1.123456789);
    insert into g values(1.123456789123);
    insert into g values(1.123456739123);
    在这里插入图片描述

    测试float类型的精确度
    例:
    create table f(id float(10,2));
    insert into f values(12345678.13);
    insert into f values(12345678.16);
    insert into f values(12345678.564);
    insert into f values(12345678.568);
    insert into f values(12345678.168);
    在这里插入图片描述

    例3:使用浮点数据类型
    CREATE TABLE measurements(
    nr INTEGER,
    measurement_value FLOAT(1));

    INSERT INTO measurements
    VALUES(1,99.99),
    (2,99999.99),
    (3,99999999.99),
    (4,99999999999.99),
    (5,99999999999999.99),
    (6,0.999999),
    (7,0.9999999),
    (8,99999999.9999),
    (9,(1.0/3));
    SELECT * FROM measurements;
    在这里插入图片描述
    在这里插入图片描述
    结果中,第1,6行存储的是实际值,第2,3,4,5,7,8,9行存储的是近似值而不是实际值
    将上例中的float(1)改为float(30),再插入同样的数据,观察结果:第1,2,3,4,6,7,8行保存的是实际值,第5,9行存储近似值

    如果使用两个参数来指定浮点类型,那么它的含义是指定显示浮点值的宽度(1—255)和小数位数(0—30)。该类型自动成为一个单精度浮点数
    例4:
    CREATE TABLE measurements(
    nr INTEGER,
    measurement_value FLOAT(17,3));

    INSERT INTO measurements
    VALUES(1,99.99),
    (2,99999.99),
    (3,99999999.99),
    (4,99999999999.99),
    (5,99999999999999.99),
    (6,0.999999),
    (7,0.9999999),
    (8,99999999.9999),
    (9,(1.0/3));

    SELECT * FROM measurements;
    在这里插入图片描述
    可见,所有的值在小数点后面有3位 。具有宽度和小数位数的float的同义词是real和float4。Double也是float的同义词。指定double等于指定了float(30)
    注意:精确存储用decimal,模糊存储用float

    2、位类型(用的很少,可以不看)
    BIT [(LENGTH)]
    存储基于位的值。Length取值范围1—64.默认为1
    案例:
    存储人员信息表,包括:姓名,手机号码,性别(男女)(0,1),是否考上大学(是否)(0,1),是否找到工作(是,否)(0,1),在本地还是外省(本地,外省)(0,1),工资范围(<1000,1000-2000,2000-3000,>3000)(00,01,10,11),可以将以上信息归为三列,姓名,手机号码,属性,其中属性为bit类型的,例如:
    姓名 手机号码 属性(bit)
    张三 13910001 111011
    在这里插入图片描述
    例5:
    CREATE TABLE an_bit (id BIT(8));
    INSERT INTO an_bit VALUES (b’11’);

    不能这样查询:
    SELECT * FROM an_bit;
    可以看到十进制的值:
    SELECT id+0 FROM an_bit;
    可以看到二进制的值:
    SELECT bin(id+0) FROM an_bit;
    可以看到十六进制的值:
    SELECT hex(id+0) FROM an_bit;

    例:
    create table tt(id bit(8));
    insert into tt values(b’111’);
    insert into tt set id=b’11’;

    不能这样查询:select id from tt;
    可以看到十进制、二进制、八进制、十六进制的值
    select id,(id+0),bin(id+0),oct(id+0),hex(id+0) from tt;

    在这里插入图片描述
    3、字符串类型
    char[(length)]:固定长度字符串。值少于长度则在尾部自动填充空格。length的单位是 字符,底层具体几个字节不确定。取值范围0—255
    varchar[(length)](常用,短):可变长度字符串。length的单位是字符。取值范围0—65535
    long varchar(长):可变长度字符串。最大长度2的24次方减1个字符
    Longtext(长):可变长度字符串。最大长度4G个字符
    对于char和varchar,如果长度为0,则只能存储null值或者空字符串’’值
    TEXT,最大65535(2^16-1),但是建表时最大到4294967295,根据大小自由变换(tinytext/text/mediumtext/longtext),一般用于存储文字
    TINYTEXT:最大255 (2^8 − 1)个字符
    MEDIUMTEXT:可变长度字符串。最大长度16,777,215(2^24-1)个字符
    LONGTEXT :可变长度字符串。最大长度4,294,967,295 (2^32-1)个字符
    在这里插入图片描述
    text是varchar的同义词。mediumtext是long varchar的同义词
    当要存储的数据较长时,选择哪一种数据类型根据具体的长度选择long varchar或者longtext。

    4、日期,时间
    日期类型
    date : 4字节
    datetime: 8字节
    time : 3字节
    timestamp (微秒): 4字节
    year[(2) | (4)] : 1字节

    在这里插入图片描述
    5、二进制大对象类型
    binary:定长二进制字符串, 255个字符
    varbinary:可变长二进制字符串,65535个字符
    blob,最大65535(2^16-1)个字节,但是建表时最大到4294967295,根据大小自由变换(tinyblob/blob/mediumblob/longblob),一般用于存储二进制数据,如图片,音频,文件等
    TINYBLOB :最大255 (2^8 − 1)个字节
    MEDIUMBLOB :可变长度二进制字符串。最大长度16,777,215(2^24-1)个字节LONGBLOB :最大长度4,294,967,295 (2^32-1)个字节
    long varbinary: 2的24次方减1个字符
    long blob(存放照片,文件): 2的32次方-1个字符
    注意:
    在数据库中存放照片的方法:
    1、存放照片时可以在数据库中只存放照片的名字,在目录中存放真实的照片。(推荐使用)
    2、在数据库中直接用blob或long blob存放照片
    注意:在数据库中删除表 drop table t1,t2,t3;

    6、使用ENUM和SET类型
    定义数据库列时,可以使用ENUM(enumeration,枚举)和SET(集合)类型。通过它们,可以变通的实现CHECK约束
    它们两者的区别是:使用ENUM,只能选一个值;
    使用SET,可以选多个值
    它们的相同点是:ENUM和SET中的值都必须是字符串类型
    6.1、ENUM类型(用的多)
    例:sex列的取值只能是M或F
    CREATE TABLE players_small(
    playerno INTEGER PRIMARY KEY,
    NAME char(15) NOT NULL,
    initials char(3) NOT NULL,
    birth_date DATE,
    sex ENUM(‘M’,‘F’));

    INSERT INTO players_small VALUES(24,‘John’,‘p’,‘1985-04-22’,‘M’);
    INSERT INTO players_small VALUES(25,‘Marry’,‘q’,‘1981-07-01’,‘F’);

    – 小写m可以自动转为大写
    INSERT INTO players_small VALUES(111,‘Tom’,‘t’,‘1982-11-11’,‘m’);
    INSERT INTO players_small VALUES(201,‘Chen’,‘p’,‘1972-02-12’,NULL);

    INSERT INTO players_small VALUES(199,‘king’,‘s’,‘1970-02-12’,‘X’);
    错误代码: 1265
    DATA truncated FOR COLUMN ‘sex’ AT ROW 1

    SELECT * FROM players_small;
    在这里插入图片描述
    在内部存储ENUM值时,MYSQL给ENUM中的每个值一个顺序号码。第一个值的顺序号码是1,第二个值的顺序号码是2,以此类推。当排序或比较ENUM的时候,使用这些顺序号码进行。
    SELECT * FROM players_small
    ORDER BY sex ;
    可见,排序并不是按照字母顺序把F放在前面,M放在后面
    在这里插入图片描述
    6.2、SET类型(用的少)
    具有SET类型的一个列可以包含set列表中的多个值(最多64个)
    例:假设球队可以在多个分级中比赛
    CREATE TABLE teams_new(
    teamno INTEGER NOT NULL,
    playerno INTEGER NOT NULL,
    division SET(‘first’,‘second’,‘third’,‘fourth’));

    INSERT INTO teams_new VALUES(1,27,‘first’);可以取一个
    INSERT INTO teams_new VALUES(2,27,‘first,third’);也可以取多个
    INSERT INTO teams_new VALUES(4,27,NULL);

    INSERT INTO teams_new VALUES(3,27,‘first,third,sixth’);
    错误代码: 1265
    DATA truncated FOR COLUMN ‘division’ AT ROW 1

    SELECT * FROM teams_new;
    在这里插入图片描述
    二、添加数据类型选项
    在某些字符串类型和所有的数字类型后面,可以指定一个数据类型选项,以改变数据类型的属性和功能。
    对于字符串类型,可以添加两个类型选项:character set和collate
    对于bit之外的所有数字类型,可以添加一个或几个类型选项:unsigned zerofill auto_increment、serial default value
    1.unsigned:无符号的,表示只允许正数
    例6:
    CREATE TABLE penaltiesdef(
    paymentno INTEGER UNSIGNED NOT NULL PRIMARY KEY,
    playerno INTEGER UNSIGNED NOT NULL,
    payment_date DATE NOT NULL,
    amount DECIMAL(7,2) UNSIGNED NOT NULL);
    2.zerofill: 填充0 。影响数字的显示方式:如果一个数字的宽度小于所允许的最大宽度,这个值前面会用0填充,如果大于所允许的最大宽度就不会填充了。如果声明了zerofill,该列会自动设为unsigned
    例7:
    DROP TABLE width;
    CREATE TABLE width(c4 INTEGER(4) ZEROFILL);
    INSERT INTO width VALUES(1);
    INSERT INTO width VALUES(200);
    SELECT * FROM width;
    在这里插入图片描述
    3.auto_increment:自动增长。只适应于整数类型。一个表中只有一个列可以是自动增长的。
    例:创建一个表,其主键是自动增长的
    CREATE TABLE aa(
    seqno int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(30) NOT NULL);
    当在insert语句中为Auto_increment列指定了null值,或者没有指定值时,MySQL自动为其赋值:
    insert into aa values(NULL,‘beijing’),(NULL,‘shanghai’),(NULL,‘tianjin’);
    SELECT * FROM aa;
    在这里插入图片描述
    MySQL会记住给出的最后一个顺序号码是多少。当要分配一个新的顺序号码时,最后一个顺序号码被找到,并且列中的最大值被确定。新的顺序号码就是这两个值中的最大者加1。
    delete from aa ;
    insert into aa values(NULL,‘beijing’),(NULL,‘shanghai’),(NULL,‘tianjin’);
    select * from aa;
    在这里插入图片描述
    可见,即使删除了表中的所有行,插入新行时,编号还是从原来的位置继续。要想再次从1开始,必须删除整个表并重新创建。

    当在INSERT语句中指定了AUTO_INCREMENT列的值时,MySQL会使用它:
    例9:
    INSERT INTO city_names VALUES(8,‘成都’);
    INSERT INTO city_names VALUES(NULL,‘武汉’);
    SELECT * FROM city_names;
    在这里插入图片描述
    例10:
    DELETE FROM city_names;
    INSERT INTO city_names VALUES(NULL,‘北京’);
    INSERT INTO city_names VALUES(NULL,‘上海’);
    SELECT * FROM city_names;
    在这里插入图片描述
    可见,即使删除了表中的所有行,插入新行时,编号还是从原来的位置继续。要想再次从1开始,必须删除整个表并重新创建
    默认情况下,顺序号码从1开始并且每次加1。可以分别使用两个系统变量来改变默认行为:
    例11:设定顺序号码从10开始,每次加10
    SET @@auto_increment_offset = 10, – 起始值
    @@auto_increment_increment=10; – 每次加几
    CREATE TABLE t10(
    seqno INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY );
    INSERT INTO t10 VALUES(NULL),(NULL);
    SELECT * FROM t10;
    在这里插入图片描述
    4.Serial default value:是auto_increment not null unique的缩写
    create table tt (id int serial default value);
    在这里插入图片描述
    三、列选项
    定义列时,除了指定列名字、数据类型、大小之外,还可以指定列选项
    1、DEFAULT
    例21:创建penalties表,其中amount列的默认值为50,payment_date列的默认值为1990年1月1号
    CREATE TABLE penalties_default(
    paymentno INTEGER NOT NULL PRIMARY KEY,
    playerno INTEGER NOT NULL,
    payment_date DATE DEFAULT ‘1990-01-01’,
    amount DECIMAL(7,2) NOT NULL DEFAULT 50.00);
    列一旦定义了默认值,当插入一个新行到表中并且没有给该列明确赋值时,它将自动得到默认值
    INSERT INTO penalties_default(paymentno,playerno) VALUES(15,27);
    SELECT * FROM penalties_default;
    在这里插入图片描述
    也可以在INSERT和UPDATE语句中使用DEFAULT关键字显式地给列赋默认值:
    INSERT INTO penalties_default(paymentno,playerno,payment_date,amount)
    VALUES(16,27,DEFAULT,DEFAULT);
    UPDATE penalties_default
    SET amount = DEFAULT;
    函数default(column)可以得到一个列的默认值。
    例:UPDATE penalties_default
    SET amount = year(default(payment_date))*10;
    2、comment:用来给列添加注释。最多255个字符。注释会保存到数据字典中。例22:
    CREATE TABLE penalties_comment(
    paymentno INTEGER NOT NULL PRIMARY KEY
    COMMENT ‘罚款编号’,
    playerno INTEGER NOT NULL
    COMMENT ‘球员编号’,
    payment_date DATE DEFAULT ‘1990-01-01’
    COMMENT ‘罚款日期’,
    amount DECIMAL(7,2) NOT NULL DEFAULT 50.00 COMMENT’金额’);
    例23:从数据字典查询注释信息
    SELECT column_name,column_comment
    FROM information_schema.columns
    WHERE table_name=‘PENALTIES_comment’;
    在这里插入图片描述
    四、表选项
    在CREATE TABLE语句中,可以在表结构的后面指定几个表选项
    1、engine:指定表使用的存储引擎。存储引擎决定了数据如何存储以及如何访问,还有事务如何处理。MySQL允许对每个表使用不同的存储引擎。如果在create table语句中没有指定存储引擎,则使用默认的存储引擎
    例24:查询所有支持的存储引擎
    SHOW ENGINES;
    例25:
    CREATE TABLE sexes(
    sex char(1) NOT NULL) ENGINE = INNODB;
    2、auto_increment:该选项决定了当向表中插入第一行时,自增列得到的第一个值是多少
    例26: 创建表city_names,其主键列从10开始编号
    DROP TABLE city_names;
    CREATE TABLE city_names(
    seqno INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
    NAME VARCHAR(30) NOT NULL) AUTO_INCREMENT = 10;
    INSERT INTO city_names VALUES(NULL,‘北京’);
    INSERT INTO city_names VALUES(NULL,‘上海’);
    INSERT INTO city_names VALUES(NULL,‘天津’);
    SELECT * FROM city_names;
    在这里插入图片描述
    3、comment:给表添加注释
    例27:
    CREATE TABLE mycomm(
    column_a INTEGER) COMMENT ‘测试表’;

    SELECT table_name,table_comment
    FROM information_schema.tables
    WHERE table_name=‘MYCOMM’;
    在这里插入图片描述
    五、约束
    可以为列定义约束。约束主要是防止非法数据进入到表中,确保数据的正确性和一致性(统称数据完整性)。约束也可以防止一个表被删除
    约束的类型:5种
    NOT NULL:非空约束(尽量都加入,强烈建议使用)
    UNIQUE:唯一性约束(这个列的值唯一,可以为空值,一个表可以有多个unique)
    PRIMARY KEY:主键约束(一个表只能有一个primary key,这个列数值唯一,不能为空)
    FOREIGN KEY:外键约束
    CHECK:检查约束
    约束定义的时间:
    1、使用CREATE TABLE语句
    2、表已经创建完了,使用ALTER TABLE语句
    约束定义的语法:
    列级别:CREATE TABLE table_name(column_name data_type [[NOT NULL] |[UNIQUE [KEY] | PRIMARY KEY] |CHECK(expr)],…)
    表级别:CREATE TABLE table_name(column_name data_type [NOT NULL],
    column_name data_type [not null],…,
    [CONSTRAINT constraint_name] PRIMARY KEY (col_name,…)| [CONSTRAINT constraint_name] unique (col_name,…) |
    [CONSTRAINT constraint_name] foreign KEY (col_name) REFERENCES tbl_name (index_col_name)|check(expr)
    注意:NOT NULL约束只能在列级别定义,作用在多个列上的约束只能定义在表级别,例如复合主键约束。列级别上不能定义外键约束,并且不能给约束起名字,由MySQL自动命名(NOT NULL除外)。表级别上定义的约束可以给约束起名字(CHECK约束除外)
    1、NOT NULL约束
    具有非空约束的列不允许有NULL值
    CREATE TABLE test_nn(
    id INTEGER NOT NULL);
    约束直接对DML操作带来影响
    INSERT INTO test_nn(id) VALUES(1);
    INSERT INTO test_nn(id) VALUES(NULL);
    错误代码: 1048
    COLUMN ‘id’ cannot be NULL

    UPDATE test_nn SET id=NULL WHERE id = 1
    错误代码: 1048
    COLUMN ‘id’ cannot be NULL
    2、UNIQUE约束
    具有唯一性约束的列不允许有重复值。
    在创建唯一性约束的时候,如果不给唯一性约束名称,就默认和列名相同
    CREATE TABLE test_uk( id INTEGER UNIQUE);
    INSERT INTO test_uk(id) VALUES(1);
    INSERT INTO test_uk(id) VALUES(2);
    INSERT INTO test_uk(id) VALUES(1);
    错误代码: 1062
    DUPLICATE entry ‘1’ FOR KEY ‘id’
    UPDATE test_uk
    SET id = 1
    WHERE id = 2;
    错误代码: 1062
    DUPLICATE entry ‘1’ FOR KEY ‘id’

    INSERT INTO test_uk(id) VALUES(NULL);
    INSERT INTO test_uk(id) VALUES(NULL);
    SELECT * FROM test_uk;
    可见,唯一性约束的列可以有多个null值。因为null <> null

    查询数据字典,查看唯一键约束的信息
    SELECT * FROM information_schema.TABLE_CONSTRAINTS
    WHERE table_name=‘test_uk’;
    3、PRIMARY KEY
    具有主键约束的列不允许有null值,并且不允许有重复值。
    Primary key = not null + unique
    主键:用来唯一的标示表中的每一行。其类型一般为整型或者字符串
    每个表最多只允许一个主键。主键名总是PRIMARY。
    CREATE TABLE test_pk(id INTEGER PRIMARY KEY);

    INSERT INTO test_pk(id) VALUES(1);
    INSERT INTO test_pk(id) VALUES(2);
    INSERT INTO test_pk(id) VALUES(2);
    错误代码: 1062
    Duplicate entry ‘2’ for key ‘PRIMARY’
    UPDATE test_pk
    SET id = 1
    WHERE id = 2;
    错误代码: 1062
    Duplicate entry ‘1’ for key ‘PRIMARY’

    INSERT INTO test_pk(id) VALUES(NULL);
    错误代码: 1048
    Column ‘id’ cannot be null
    查询数据字典,查看主键约束的信息
    SELECT * FROM information_schema.TABLE_CONSTRAINTS
    WHERE table_name=‘test_uk’;
    4、FOREIGN KEY:
    外键:
    1、外键是一个约束
    2、外键约束什么呢?
    外键约束一个表的一个列的数值来自于另外一个表的一个列的数值
    案例:现有学生表,科目表
    要求成绩表里面的学号这个列里面的所有数值(学号),必须来自于学生表 里面的学号这个列里面的数值
    例如:create table chengji (s_id int,k_id int,chengji decimal(5,2),constraint i_fi foreign key(s_id)references xuesheng(s_id),constraint i_f2 foreign key (k_id) references kemu(k_id));
    3、外键引用的一定是另外一个表的主键或者唯一键
    创建的外键,约束在哪里找到呢?
    Show databases;
    Use information_schema;
    Show tables;
    Select * from TABLE_CONSTRAINTS;
    外键约束规则:
    1、从表insert数据,会检查主表,看一下外键列的数据是否来自于主键列
    2、对主表进行delete的时候,检查外表,看一下外表中是否引用了主表中要删除的数据
    3、如果我要修改外键引用的主键列的话,会报错,子会失去父
    注意:只要有引用,主表就受到了限制

    on delete
    主表删除数据,子表引用了主表的数据,外键该如何动作
    RESTRICT/NO ACTION:不允许
    CASCADE:级联删除
    SET NULL:子表外键改为null
    注意:
    删除外键:
    alter table chengji drop foreign key i_f1;
    添加外键:
    alter table chengji add constraint i_f1 foreign key(s_id)references xuesheng(s_id) on delete cascde;
    外键约束又叫做参照完整性约束。具有外键约束的列,因为着它的值不能随便给,必须满足外键所引用的主键的取值。一张表中可以定义多个外键。外键列默认可以给null值。
    按照定义,外键必须引用一个主键或者唯一键。引用的主键一般在另外一张表中,也可以是本表的主键。后一种情况通常称为“自引用”。
    父子表的概念:外键所在的表叫做子表,外键所引用的主键所在的表叫做父表。注意,父子表是相对而言的,表a可以是表b的子表,但同时也可以是表c的父表
    例:
    Create table father (name varchar(20) primary key,id int);
    create table child (id int,father_name varchar(20),child_name varchar(20),CONSTRAINT idx1 primary key(id),CONSTRAINT idx2 foreign key(father_name) references father(name));
    insert into father values(‘zhangsan’,1),(‘lisi’,1),(‘wangwu’,1);
    insert into child values(1,‘lisi’,‘lisan’);
    insert into child values(2,‘lisishsh’,‘lisan’);
    delete from father where name=‘lisi’;
    创建父表
    CREATE TABLE dept(
    deptid INTEGER,
    dname VARCHAR(20),
    CONSTRAINT dept_deptid_pk PRIMARY KEY(deptid) );
    INSERT INTO dept(deptid,dname) VALUES(10,‘市场部’);
    INSERT INTO dept(deptid,dname) VALUES(20,‘销售部’);
    查询数据字典,查看主键约束的信息。可见,虽然给主键一个新的名字,但在数据字典中,主键名还是显示primary
    SELECT * FROM information_schema.TABLE_CONSTRAINTS
    WHERE table_name=‘dept’;
    创建子表
    CREATE TABLE emp(
    id INTEGER,
    NAME VARCHAR(20),
    deptid INTEGER,
    CONSTRAINT emp_id_pk PRIMARY KEY(id),
    CONSTRAINT emp_deptid_fk FOREIGN KEY(deptid) REFERENCES dept(deptid));
    查询数据字典,查看外约束的信息。如果不给外键约束命名,那么默认的名字为:表名_ibfk_n, n是整数,从1开始
    SELECT * FROM information_schema.TABLE_CONSTRAINTS
    WHERE table_name=‘emp’;

    INSERT INTO emp(id,NAME,deptid) VALUES(1,‘张三’,10);
    INSERT INTO emp(id,NAME,deptid) VALUES(2,‘李四’,10);
    INSERT INTO emp(id,NAME,deptid) VALUES(3,‘王五’,50);
    错误代码: 1452
    Cannot ADD OR UPDATE a child ROW: a FOREIGN KEY CONSTRAINT fails (tennis.emp, CONSTRAINT emp_deptid_fk FOREIGN KEY (deptid) REFERENCES dept (deptid))

    UPDATE emp
    SET deptid = 50
    WHERE id = 1;
    错误代码: 1452
    Cannot ADD OR UPDATE a child ROW: a FOREIGN KEY CONSTRAINT fails (tennis.emp, CONSTRAINT emp_deptid_fk FOREIGN KEY (deptid) REFERENCES dept (deptid))
    删除父表中的行:
    DELETE FROM dept WHERE deptid = 10;
    错误代码: 1451
    Cannot DELETE OR UPDATE a parent ROW: a FOREIGN KEY CONSTRAINT fails (tennis.emp, CONSTRAINT emp_deptid_fk FOREIGN KEY (deptid) REFERENCES dept (deptid))
    这就是外键的默认删除规则:当删除父表中的行时,如果子表中有依赖于被删除父行的子行存在,那么就不允许删除,并抛出异常(默认对外键使用on delete restrict 或on delete no action选项)
    在定义外键约束时,通过使用on delete cascade或者on delete set null选项,可以改变外键的默认删除规则
    ON DELETE CASCADE:级联删除。当删除父表中的行时,如果子表中有依赖于被删除父行的子行存在,那么连同子行一起删除
    DROP TABLE emp;
    SET @@autocommit = 0;

    CREATE TABLE emp(
    id INTEGER,
    NAME VARCHAR(20),
    deptid INTEGER,
    CONSTRAINT emp_id_pk PRIMARY KEY(id),
    CONSTRAINT emp_deptid_fk FOREIGN KEY(deptid) REFERENCES dept(deptid)
    ON DELETE CASCADE);
    INSERT INTO emp(id,NAME,deptid) VALUES(1,‘张三’,10);
    INSERT INTO emp(id,NAME,deptid) VALUES(2,‘李四’,10);

    DELETE FROM dept WHERE deptid = 10;
    观察子表中的行被同时删除
    SELECT * FROM emp;
    ON DELETE SET NULL:当删除当删除父表中的行时,如果子表中有依赖于被删除父行的子行存在,那么不删除中,而是将子行的外键列设置为null
    DROP TABLE emp;
    CREATE TABLE emp(
    id INTEGER,
    NAME VARCHAR(20),
    deptid INTEGER,
    CONSTRAINT emp_id_pk PRIMARY KEY(id),
    CONSTRAINT emp_deptid_fk FOREIGN KEY(deptid) REFERENCES dept(deptid)
    ON DELETE SET NULL);
    INSERT INTO emp(id,NAME,deptid) VALUES(1,‘张三’,10);
    INSERT INTO emp(id,NAME,deptid) VALUES(2,‘李四’,10);

    DELETE FROM dept WHERE deptid = 10;
    — 观察子表中的行还存在,但是外键为null
    SELECT * FROM emp;
    对于外键的更新操作,也有类似的on update {restrict|no action}、on update cascade、on update set null选项
    5、CHECK约束
    MySQL中可以写出CHECK约束,但实际上没有任何作用(The CHECK clause is parsed but ignored by all storage engines)
    CREATE TABLE test_ck(
    id INTEGER CHECK(id>0)
    );
    INSERT INTO test_ck VALUES(-100); 也是可以的
    六、对表名和列名使用反引号(不建议使用)
    如果表名或者列名使用了MySQL的保留字,那么必须使用反引号(1左边的字符)把它们括起来,否则出错
    在引用这些表名和列名时,也必须加上反引号
    CREATE TABLE select(
    select INTEGER
    );
    SELECT select FROM select WHERE select = 1;
    如果表名和列名都不是Mysql的保留字,也可以使用反引号把它们括起来。在引用这些表名和列名时,可以不加反引号。
    CREATE TABLE myemp(
    id INTEGER
    );
    SELECT id FROM myemp;
    SELECT id FROM myemp;

    展开全文
  • 数据类型常量

    千次阅读 2012-11-08 09:14:14
    你已经遇到过Objective-C的基本数据类型int。回顾一下,声明为int类型的变量只能用于保存整型值,也就是包含小数位数的值。 Objective-C还提供了另外3种基本数据类型:float、double和char。声明为float类型的...

     

    你已经遇到过Objective-C的基本数据类型int。回顾一下,声明为int类型的变量只能用于保存整型值,也就是不包含小数位数的值。

    Objective-C还提供了另外3种基本数据类型:floatdoublechar。声明为float类型的变量可以存储浮点数(即包含小数位数的值)。double类型和float类型一样,通常,前者表示的范围大约是后者的两倍。char数据类型可存储单个字符,例如字母a、数字字符6或者一个分号(后面将详细讨论有关内容)。

    Objective-C中,任何数字、单个字符或者字符串通常都称为常量。例如,数字58表示一个常量整数值,字符串@"Programming in Objective-C is fun."表示一个常量字符串对象。完全由常量值组成的表达式叫做常量表达式。因此,下面的表达式是一个常量表达式,因为该表达式的每一项都是常量值:

    128 + 7 - 17

    然而,如果将i声明为整型变量,那么表达式就不是一个常量表达式:

    128 + 7 – i

    int类型

    整数常量由一个或多个数字的序列组成。序列前的负号表示该值是一个负数。值158-100都是合法的整数常量。数字中间不允许插入空格,并且不能使用逗号(因此,12,000是一个非法的整数常量,它必须写成12000)。

    每个值无论是字符、整数还是浮点数字,都有与其对应的值域。这个值域与系统为特定类型的值分配的内存量有关。一般来说,在语言中没有规定这个量,它通常依赖于所运行的计算机,因此,叫做设备或机器相关量。例如,一个整数可在计算机上占用32位,或者可以使用64位存储。如果使用64位存储,整型变量将能够存储比32位更大的数值。

     

    注意

    在Mac OS X中,提供了选择应用程序是在32位还是64位下编译。在前一种情况下,一个int占用32位;在后一种情况下,一个int占用64位。

    float类型

    声明为float类型的变量可以存储包含小数位的值。要区分浮点常量,可以看它是否包含小数点。值3.125.8及-.0001都是合法的浮点常量。要显示浮点值,可用NSLog转换字符%f或者%g

    浮点常量也能用所谓的科学计数法来表示。值1.7e4就是使用这种计数法来表示的浮点值,它表示值1.7×104

    如上所述,double类型与float类型非常相似,只是double类型的变量可存储的范围大概是float变量的两倍。

    char类型

    char变量可存储单个字符。将字符放入一对单引号中就能得到字符常量。因此,'a'';''0'都是合法的字符常量。第一个常量表示字母a,第二个表示分号,第三个表示字符0,它并不等同于数字0。不要把字符常量和C语言风格的字符串混为一谈,字符常量是放在单引号中的单个字符,而字符串则是放在双引号中的任意个数的字符。正如在第3章提及的,前面有@字符并且放在双引号中的字符串是NSString字符串对象。

    字符常量'\n'(即换行符)是一个合法的字符常量,尽管它似乎与前面提到的规则矛盾。这是因为反斜杠符号被认为是特殊符号。换句话说,Objective-C编译器将字符'\n'看做单个字符,尽管它实际上由两个字符组成。其他特殊字符也是以反斜杠字符开头的。在NSLog调用中可以使用格式字符%c,以便显示char变量的值。

    在代码清单4-1中,使用了基本的Objective-C数据类型。

    代码清单4-1

    #import <Foundation/Foundation.h>

     

    int main (int argc, char *argv[])

    {

       @autoreleasepool {

          int     integerVar = 100;

          float  floatingVar = 331.79;

          double doubleVar = 8.44e+11;

          char   charVar = 'W';

     

          NSLog (@"integerVar = %i", integerVar);

          NSLog (@"floatingVar = %f", floatingVar);

          NSLog (@"doubleVar = %e", doubleVar);

          NSLog (@"doubleVar = %g", doubleVar);

          NSLog (@"charVar = %c", charVar);

        }

        return 0;

    }

     

    代码清单4-1  输出

    integerVar = 100

    floatingVar = 331.790009

    doubleVar = 8.440000e+11

    doubleVar = 8.44e+11

    charVar = W

     

    在程序输出的第二行,你会注意到指定给floatingVar的值331.79,实际显示成了331.790009。事实上,实际显示的值是由具体使用的计算机系统决定的。出现这种不准确值的原因在于,计算机内部使用了特殊的方式表示数字。使用计算器处理数字时,很可能遇到相同的不准确性。如果用计算器计算1除以3,将得到结果.33333333,很可能结尾带有一些附加的3。这一串3是计算器计算1/3的近似值。理论上,应该存在无限个3。然而该计算器只能保存这些位的数字,这就是计算机的不确定性。同样的不确定性也出现在这里:在计算机内存中不能精确地表示一些浮点值。

    限定词:long、long long、short、unsigned及signed

    如果直接把限定词long放在int声明之前,那么所声明的整型变量在某些计算机上具有扩展的值域。一个long int声明的例子为:

    long int factorial;

    这条语句将变量fractorial声明为long的整型变量。就像floatdouble变量一样,long变量的具体范围也是由具体的计算机系统决定的。

    要用NSLog显示long int的值,就要使用字母l作为修饰符,放在整型格式符号之前。这意味着格式符号%li将用十进制格式显示long int的值。

    你也可以使用long long int变量,甚至是具有更大范围带有浮点数的long double变量。

    把限定词short放在int声明之前时,它告诉Objective-C编译器要声明的特定变量用来存储相当小的整数。之所以使用short变量,主要原因是对节约内存空间的考虑,当程序员需要大量内存而可用的内存量又十分有限时,就可用short变量来解决这个问题。

    最后一个可以放在int变量之前的限定词,是在整数变量只用来存储正数的情况下使用的。以下语句

    unsigned int counter;

    向编译器声明,变量counter只用于保存正值。通过限制整型变量的使用,让它专门用于存储正整数,可以扩展整型变量的范围。

    id类型

    id数据类型可存储任何类型的对象。从某种意义说,它是一般对象类型。例如,程序行

    id   graphicObject;

    graphicObject声明为id类型的变量。可声明方法使其具有id类型的返回值,如下:

    -(id) newObject: (int) type;

    这个程序行声明了一个名为newObject的实例方法,它具有名为type的单个整型参数并有id类型的返回值。

    id类型是本书经常使用的一种重要的数据类型。这里介绍该类型的目的是为了保持本书的完整性。id类型是Objective-C中十分重要的特性,它是多态和动态绑定的基础,这两个特性将在第9章“多态、动态类型和动态绑定”中详细讨论。

    4.1总结了基本数据类型和限定词。

    4.1  基础数据类型

    类    型

    实    例

    NSLog字符

    char

    'a''\n'

    %c

    short int

    %hi%hx%ho  

    unsigned short int

    %hu%hx%ho %hu%hx%ho

    int

    12-970xFFE00177

    %i%x%o

    unsigned int

    12u100U0XFFu

    %u%x%o

    long int

    12L-20010xffffL

    %li%lx%lo

    unsigned long int

    12UL100ul0xffeeUL

    %lu%lx%lo

    long long int

    0xe5e5e5e5LL500ll

    %lli%llx&llo

    unsigned long long int

    12ull0xffeeULL

    %llu%llx%llo

    float

    12.34f3.1e-5f0x1.5p100x1P-1

    %f%e%g%a

    double

    12.343.1e-50x.1p3

    %f%e%g%a

    long double

    12.34L3.1e-5l

    %Lf$Le%Lg

    id

    nil

    %p

     

    注意

    在表4.1中,在整型常量中以0开头表示常量是八进制(基数8)的,以0x开头或(0X)表示它是十六进制(基数16)的,数字0x.1p3表示十六进制浮点常量。不必担心这些格式,这里只是为了使表格完整进行的总结。此外,前缀f、l(L)、u(U)和ll(LL)用来明确表示常量是float、long、unsigned和long long类型。

     

    本文节选自《Objective-C程序设计(4)

    电子工业出版社出版

    []Stephen G. Kochan(斯蒂芬·G·科昌)著

    林冀  范俊朱奕欣译

     

    展开全文
  • C++数据类型 计算机处理的对象是数据,而数据是以某种特定的形式存在的(例如整数、浮点数、字符等形式)。不同的数据之间往往还存在某些联系(例如由若干个整数组成一个整数数组)。数据结构指的是数据的组织形式。...
  • js的两种数据类型:基本类型:string,number,boolean,null,undefined -----&gt; 操作和保存在变量的实际的值 引用类型:Function,Array,Object -----&gt; 值保存在内存中,js不允许直接访问内存,在操作...

    js的两种数据类型:

    基本类型:string,number,boolean,null,undefined ----->  操作和保存在变量的实际的值 

    引用类型:Function,Array,Object  ----->  值保存在内存中,js不允许直接访问内存,在操作的时候,操作的是对象的引用


    const的定义和基本用法可以参考阮一峰老师的ES6入门(传送门:http://es6.ruanyifeng.com/#docs/let


    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title>const常量不能更改和js的两种数据类型</title>
    	</head>
    	<body>
    		<script type="text/javascript">
    			// js的两种数据类型
    			
    			/**
    			 * 基本类型
    			 * string,number,boolean,null,undefined
    			 * 操作和保存在变量的实际的值 
    			 * */
    			
    			/**
    			 * 引用类型
    			 * Function,Array,Object
    			 * 值保存在内存中,js不允许直接访问内存,在操作的时候,操作的是对象的引用
    			 * */
    			
    			
    			//基本类型
    			
    			// 基本类型 String
    			const str = 'ab';
    			str = 'bc';
    			console.log(str);// Uncaught TypeError: Assignment to constant variable.
    			
    			// 基本类型 Number
    			const num = 1;
    			 num = 2; 
    			console.log(num);// Uncaught TypeError: Assignment to constant variable。
    			
    			// 基本类型 boolean
    			const bool = true;
    			bool = false;
    			console.log(bool);// Uncaught TypeError: Assignment to constant variable.
    			
    			// 基本类型 boolean
    			const nul = null;
    			nul = 12;
    			console.log(nul);// Uncaught TypeError: Assignment to constant variable.
    			
    			// 基本类型 boolean
    			const undefine = undefined;
    			undefine = 12;
    			console.log(undefine);// Uncaught TypeError: Assignment to constant variable.
    			
    			
    			
    			//=================分割线===================
    			
    			
    			
    			//引用类型
    			
    			// 引用类型Object
    			const obj = { 
    				a:1
    			}
    			obj.a = 2;// 修改a
    			obj.b = 3;// 增加b
    			console.log(obj.a);// 2
    			console.log(obj.b);// 3
    			
    			// 引用类型Array
    			const arr = [1,2];
    			arr[0] = 3;// 修改arr[0]
    			arr[2] = 4;// 增加arr[2]
    			console.log(arr[0]);// 3
    			console.log(arr[2]);// 4
    			
    			// 引用类型Function
    			function fun() {
    				this.a = 1;
    				this.b = 2;
    			}
    			
    			const fun1 = new fun();
    			console.log(fun1.a);// 1
    			fun1.a = 3;// 修改a
    			console.log(fun1.a);// 3
    			fun1.c = 4;// 增加c
    			console.log(fun1.c);// 4
    			
    			/**
    			 *基本类型:操作和保存在变量的实际的值 
    			 *const不可修改声明的基本类型的值
    			 **/
    			
    			/**
    			 *引用类型:保存在内存中,js不允许直接访问内存,在操作的时候,操作的是对象的引用
    			 *const可以修改引用类型的引用
    			 **/
    			
    			// 基本类型:值不可变
    			// 引用类型: 地址不可变
    			
    			
    			
    		</script>
    	</body>
    </html>

    以上全部亲测,若有异议或不对之处请各位老铁留言指正。

    展开全文
  • 简介 变量、常量以及数据类型 在编程中,变量指一个存储值的一个盒子,或者说容器。例如一个箱子,用来放杂物,这个箱子就是一个容器,值就为杂物。容器可以分为很多类型,例如瓶子、被子、盒子等。值也很多类型,...

    简介 变量、常量以及数据类型

    在编程中,变量指一个存储值的一个盒子,或者说容器。例如一个箱子,用来放杂物,这个箱子就是一个容器,值就为杂物。容器可以分为很多类型,例如瓶子、被子、盒子等。值也有很多类型,例如厨余垃圾、可回收垃圾、不可回收垃圾、塑料、衣服等。从此可以发现,容器有不同的分类,值也有不同的分类,这些称之为类型。在编程中,一般变量都会设置为跟存储值一致的类型。

    变量在编程中为描述可以在程序运行中改变值得容器。
    常量跟变量相反,在程序运行中则不能改变。

    变量
    在上一节中,讲解了php代码是编写在<?php ?> 标记内。变量那么也应该写在该标记内。
    php中,变量由$ 开始,后面连接一个变量名。例如我创建一个变量(容器),名为a,在php代码中就应该写为$a。我让这个容器存储一个数字0,可以编写为 $a=0。假设我又创建一个变量,名为b可以写为$b,创建变量的时候就把值给予,可以写为$b=0。如果想要两个变量进行相加,做加法运算可以写为 $a+$b,这时我想显示变量a与变量b相加的值,那么代码可以写为 echo $a+$b。完整代码如下:

    <?php
    	$a=0;
    	$b=0;
    	echo $a+$b;
    ?>
    

    以上代码中有一点要点,我们发现在每一行语句结束后,在末尾都需要有一个分号,这个分号是php语言的语法,当编写完一句代码后,需要在结尾添加分号表示语句结束(编程中所有的标点符号皆为英文舒服法状态下的标点)。

    保存文件,把文件另存为至 WWW 根目录下,文件名为 index.php,访问 localhost 或者127.0.0.1 则会直接访问到该php文件(一定要在phpstudy或其它集成软件中开启服务)。
    运行结果如下:
    在这里插入图片描述
    由于我们的变量a与变量b的值为0,所以0+0得0,输出显示的值也为0。可以尝试修改变量的值,a改为1,b改为10,代码如下:

    <?php
    	$a=1;
    	$b=10;
    	echo $a+$b;
    ?>
    

    结果如下,值为11:
    在这里插入图片描述
    在以上编程中,如果是新学习编程的读者会疑惑,文章开头说了,变量也是有类型的,那么在这里类型如何体现?原因是php 语言是弱类型语言,弱类型语言是指可以进行隐式类型转换,当我们赋值时,自动转换为赋值内容所匹配的类型。在以上代码中,赋值的是0,为整数类型,这个时候没有明显的说明当前变量是什么类型,直接根据变量,自动变换类型。在之后的学习中将会使用实例来介绍这一点。

    常量

    刚刚介绍了什么是变量,接下来看一下常量是什么。
    从字面意思上来看,变量指可以变的量,常量指不可变的量。这个可变与不可变发生在程序运行时。
    例如变量,当变量在最开始定义(赋值)为0,随后再给予这个变量一个值(如2),这个时候是可以更改的,如果使用常量则不能更改。
    在这里使用一个示例进行讲解:

    <?php
    	$a=1;
    	echo $a;
    	echo '更改后';
    	$a=2;
    	echo $a;
    ?>
    

    以上代码的书写虽然质量不好,但是能够很好的帮助新手去学习这一个知识点。
    代码释义:

    • $a=1:定义一个变量a赋值为1

    • echo $a:显示变量a的值

    • echo ‘更改后’:输出一个 更改后 这个内容

    • $a=2:重新给a赋值为2

    • echo $a:显示重新赋值后 a变量的值

    结果如下:
    在这里插入图片描述
    这是可以更改的,我们试一下常量。
    常量的定义方式与变量不一致,使用define函数进行定义。函数是一个功能块,就像电饭锅,有煮饭的功能,把米放进去就可以做饭了。define函数是有定义常量的功能,按照指定的方式去定义常量,使用define函数即可完成。
    代码如下:

    <?php
    	define("b", 10);
    	echo b;
    
    ?>
    

    代码释义:

    • define(“b”, 10):使用define定义一个常量,常量名称为b,值为10
    • echo b:输出常量时不需要使用$符号

    在浏览器访问localhost进行测试,结果如下:
    在这里插入图片描述
    那我们将常量按照变量的形式去进行修改:

    <?php
    	define("b", 10);
    	echo b;
    	b=11
    ?>
    

    b=11 修改了常量的值,这个时候会报错:
    在这里插入图片描述
    常量是不允许在程序运行过程中再出更改值,所以不能使用 = 符号,会出现语法错误。

    数据类型

    在php中,使用 gettype() 函数可以得到当前变量的数据类型。函数为一个功能块,gettype 则为得到当前变量数据类型的功能块。
    使用方法,在gettype() 函数的圆括号()中,填入变量名即可,例如:

    <?php
    	define("b", 10);
    	echo gettype(b);
    ?>
    

    以上代码定义了一个常量b,赋值10,是个整数,为整数类型。使用 gettype函数,在圆括号中传入一个值 b,这个值b 可以统称为参数。这个时候使用echo 输出,gettype 将会得到传入参数的类型,输出 gettype 返回的值则可以看到这个类型。传参这个过程就像做饭的时候往电饭锅丢入的米,做好饭后将会有一个结果,那就是热腾腾的大米饭。
    结果如下:
    在这里插入图片描述
    会显示 integer。integer则代表整数类型。

    展开全文
  • switch()中不允许数据类型有? 整型 浮点型 字符串 布尔 解答:BC switch()中不允许数据类型有? 链接:https://www.nowcoder.com/questionTerminal/ef26699c5bc54cc688b0a867efb627ea...
  • postgres关键字、常量数据类型

    千次阅读 2015-12-08 22:40:05
    一 标识符和关键字  1. SQL 标识符和关键字必须以一个字母 (a-z 以及带变音符的字母... 根据 SQL 标准,美元符号不允许出现在标识符中, 因此使用美元符号将不易移植。  3. SQL 标准不会定义包含数字或者
  • Python的基本数据类型及变量、常量

    千次阅读 2019-06-05 21:19:26
    Python的基本数据类型及变量、常量 (一)数据类型 python的基本数据类型分以下几种: 1.Number(数字) a.整数 【int】:python可以处理任意大小的整数,当然包括负整数,在程序的表示方法和数学上的写法是一模一样...
  • 语法构成了整个程序设计的基础,从语法中我们也可以看到这门语言的一些特性,但是话说回来,语法这东西,不同的语言大同小异,所以这也对语法的记忆造成了一定的难度,其实最好的方法应该是旁边本书,随时可以拿...
  • 计算机程序涉及两个基本问题,一个是数据的描述,一个...C4种基本数据类型和4种复杂数据类型数据类型概述 为什么引入数据类型的概念呢?因为针对不同的数据类型,计算机采用不同的存储方
  • Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化我们从今天就开始正式的学习PY交易了,PY交易还行,我们基础之后学习起来倒不是说那么的被动,我学习的是...
  • C++基本类型常量

    2013-11-06 00:22:14
    常量有两种: 一:文字常量,也叫值常量,如整数1,字符a就是文字常量 二:自己声明的常量,格式为: Const 数据类型 常量名 = 文字常量{
  • VHDL是一种强类型的语言,它不允许不同数据类型之间的相互赋值。如果想在不同数据类型之间进行赋值则需要调用函数来完成。 在VHDL语言里,基本数据对象三种:常量,变量以及信号。 常量 常量就是常数,它的数值...
  • 【Qt】数据类型和有用的数据操作类

    千次阅读 2018-11-22 14:38:29
    除了C++提供的基本数据类型之外,Qt还提供了了对开发者而言非常有用的多种数据类型。Qt提供的数据类型分为基本数据类型和类形态的数据类型。   基本数据类型 Qt支持多个平台,创建的应用程序需要在多种平台上都...
  • Go语言中的常量使用关键字 const 定义,用于存储不会改变的数据常量是在编译时被创建的,即使定义在函数内部也是如此,并且只能是布尔型、数字型(整数型、浮点型和复数)和字符串型。由于编译时的限制,定义常量...
  • 常量指针、指针常量、C++类型转换

    千次阅读 2015-09-10 22:05:43
    1.const关键字,他后面内容的可修改,一般来说,其修饰的变量可再进行赋值操作; 2.常量指针 int a = 3; int b = 4; const int* pt = &a; a = 5; *pt的值为5,pt只是一个指针,所以他指向的是a的内容,...
  • C语言常量与常变量

    千次阅读 2018-12-13 10:51:09
    常量:使用#define定义常量常量名大写,定义时无需指定数据类型,行末没分号;不允许改变值;常量不占用内存,只是一个临时符号,代表一个值,预编译时会进行字符替换(将临时符号替换成对应的值),替换完临时...
  • JAVA基本数据类型与引用数据类型

    万次阅读 多人点赞 2016-11-09 09:30:34
    基本数据类型 对象类型 在栈中进行分配 在堆中进行分配 基本类型之间的赋值是创建新的拷贝 对象之间的赋值只是传递引用 “==”和“!=”是在比较值 “==”和“!=”是在比较两个引用是否...
  • 类型和成员基础在C#中,一个类型内部可以定义多种成员:常量、字段、实例构造器、类型构造器(静态构造器)、方法、操作符重载、转换操作符、属性、事件、类型类型的可见性public和internal(默认)两种,前者...
  • 今天用NavCate建立PostGreSql建标,使用Double发现居然没有这个类型,百度各种博客都表示Double类型,但是我测试就没了 后来发现,这里面居然别名 名字 别名 描述 bigint int8 符号 8 字节...
  • 1. 标识符可以由字母、数字、下划线(_)、美元符($)组成,但能包含 @、%、空格等其它特殊字符 2. 能以数字开头。如:123name 就是合法 3. 标识符严格区分大小写。如: tmooc 和 tMooc 是两个不同的标识符 4....
  • Kotlin的变量和数据类型

    千次阅读 2017-12-28 10:23:08
    什么是变量和数据类型 为了方便新手阅读,在这里我们简单介绍下变量和基本数据类型的概念,老司机跳过即可。 首先我们先来搞清楚一件事就是我们编写的程序实际上都是在处理数据。不管是视频,图片,还是文字,...
  • 数据类型之枚举

    千次阅读 2016-10-22 10:46:17
    枚举枚举是基本数据类型的一种枚举类型/*下面的语句为枚举类型的宏声明,并分配内存空间*/ enum name{ a,//a只存在编译器中,是int型常量?或许在只读段? b, c };枚举成员 枚举成员只存在编译器中,并分配内存? ...
  • 前面我们已经看到过一种用户...C++ 允许我们在现有数据类型的基础上定义我们自己的数据类型。我们将用关键字typedef来实现这种定义,它的形式是: typedef existing_type new_type_name; 这里 existing_type 是C+
  • Swift快速入门(二)基本数据类型

    千次阅读 2016-02-01 01:09:30
    1.变量和常量 Swfit是强类型的语言,Swift要求所有的变量和常量必须先声明后使用。 声明变量需要使用var,声明常量则需要使用let var 变量名[:类型] =初始值 let 常量名[:类型] =初始值
  • java的数据类型有哪些

    万次阅读 2019-04-01 14:25:34
    布尔类型,它比较特殊,布尔类型允许存储true(真)或者false(假),可以用0或者非0表示 可以使用 1 bit 来存储,但是具体大小没有明确规定。JVM 会在编译时期将 boolean 类型数据转 换为 int,使用 1 来表示 t...
  • Java基本数据类型——浮点数型

    千次阅读 2014-10-22 15:31:23
    3.在Java中对于浮点数类型多字节的数据能放入小字节的数据中的,但是对于整型数据却例外,只要多字节的数据没有超过少字节的数据类型的范围是时,是允许把多字节的数据放入少字节的数据中的。 4.浮点数并能...
  • 数据类型 【知识点】 数据类型 整型 字符型 实数(浮点型)型 【内容】 一、数据类型 C语言要求在定义所有的变量时都要指定变量的类型。常量也是区分类型的。 在数学中,数值是分类型的,数值的运算是绝对...
  • C++中字面值常量和字面值类型

    千次阅读 2017-04-03 10:57:32
    字面值常量的形式和值决定了常量类型。例如0x42是16进制表示的整型常量。‘a'是char型字面值。字面值常量顾名思义由字面意思表示,是常量。字面值常量在程序中是直接表示的,整型直接写出大小,字符直接写出字符。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 241,598
精华内容 96,639
关键字:

不允许有常量的数据类型