varchar(100)对于拉丁字母和汉字是同一层意思吗,

解决方案 »

  1.   

    alter table  tablename
            add  constraint  fkname  foreign key (id) references 另一个表(id)
    在哪个位置可以加上 on delete cacscade on update,,,,
      

  2.   

    1:
    > varchar(100)
    > varchar(10),但真正存的只有3个字符,这种情况下,会不会造成前者空间大于后者,
    > 服务器上空间太贵了,只能自己留意了VARCHAR 列的值是变长的字符串。你可以声明一个 VARCHAR 列在 1 到 255, 就像对 CHAR 列一样。然而,与 CHAR 相反的,VARCHAR 值只以所需的字符数存储,另加一个字节存储记录的长度。值并不被填补;相反的,当被存储时,尾部的空格被截除。
    2:> varchar(100)对于拉丁字母和汉字是同一层意思吗,???  不明白什么意思,
    它完全可以保存汉字
    3:从 3.23.50 开始,InnoDB 允许通过下面的方法给一个表添加一个外键约束: 
    ALTER TABLE yourtablename
             ADD [CONSTRAINT symbol] FOREIGN KEY [id] (...)
             REFERENCES table_name (index_col_name, ...)
                         [ON DELETE {CASCADE | SET NULL | NO ACTION
                                                | RESTRICT}]
                         [ON UPDATE {CASCADE | SET NULL | NO ACTION
                                                | RESTRICT}]alter table  tablename
            add  constraint  fkname  foreign key (id)
            references 另一个表(id)
            on delete cacscade
      

  3.   

    还有我关心create表时是否就可以附上foreign key的名字,那么我日后就可以alter里珊关系了,应为很多时候你必须先珊关系再可进行一些表操作
      

  4.   

    VARCHAR(100)  可以保存 50 个汉字CREATE TABLE parent(id INT NOT NULL,
                        PRIMARY KEY (id)) TYPE=INNODB;
    CREATE TABLE child(id INT, parent_id INT,
                       INDEX par_ind (parent_id),
                       FOREIGN KEY (parent_id) REFERENCES parent(id)
                       ON DELETE CASCADE
    ) TYPE=INNODB;
      

  5.   

    补充2:
        字母和汉字是这样的,字母是一个字节,所以varchar(100),最多保存100个字母,而汉字占用两个字节,所以varchar(100)却只能保存是50个汉字,所以在设计的时候要考虑中文问题。
      

  6.   

    关于foreign key,我用的mysql是3.2版,不支持它,所以可以不考虑,其实primary key在3.2里大多是考虑以后的兼容性而设计的。
      

  7.   

    奇怪我怎么在程序里汉子存入出毛病,不能正确显示,拉丁字母没问题。
    VARCHAR(110)字段出问题
      

  8.   

    KAO,是不是AUTOINCREMENT 和FOREIGN KEY不能共存
    什么TYPE 一个是INODB  MYISAM真见鬼
      

  9.   

    愿来MYSQL不怎么支持外建,那么说我要自己初里了
      

  10.   

    目前,只有 InnoDB 表类型才支持外键约束,
    5.1 版后 MyISAM 表也将支持外键约束,存入汉字,不能正确显示 的问题,
    应该是你的 客户端的问题,
    建议使用  MySQL-Front 来学习 MySQL
      

  11.   

    subject=new String("aaa");
      
         String insertSql="insert into goods_topics (ForumID,Subject,Message,imageURL,userPassword,method)"+
                           "values("+forumID+",'"+subject+"','"+message+"','"+imageURL+"',"++")";
             Connection conn=null;        
         try{
             
             conn=pl.getConnection();
             SQLCommandBean sqlBean=new SQLCommandBean();
             sqlBean.setConnection(conn);
             sqlBean.setSqlValue(insertSql);
             int ret=sqlBean.executeUpdate();  //最好加一句,把topid的值中数据库中读出
             conn.close();
      

  12.   

    奇怪阿,以上的语句,保证编易时无语法错误,当然太长了,我珊了一点,
      当第一行string是全字母aaa那就毫无问题,然后当我把aaa改成"a好a",就出错了,
    说我附近语法有错误,见鬼,愿来access一点问题多没
      

  13.   

    String insertSql="insert into goods_topics (ForumID,Subject,Message,imageURL,provinceCode,cityCode,address,userName,userPassword,method)"+
                           "values("+forumID+",'"+subject+"','"+message+"','"+imageURL+"',"+provinceCode+","+cityCode+",'"+address+"','"+userName+"','"+userPassword+"',"+method+")";
      

  14.   

    sqlBean.setSqlValue(insertSql);这一行加断点,
    检查  insertSQL 的值,以即出错信息
      

  15.   

    第一个问题 VARCHAR 和 CHAR 会自动进行类型转换,所以不会浪费!
      

  16.   

    字母和汉字是这样的,字母是一个字节,所以varchar(100),最多保存100个字母,而汉字占用两个字节,所以varchar(100)却只能保存是50个汉字,所以在设计的时候要考虑中文问题。
      

  17.   

    insertSql="insert into goods_topics(forumID,Subject,Message,imageURL,provinceCode,cityCode,address,userName,userPassword,method) "+
             "values(11,'hello','大家好','s',1,1,'dd','ddd','ddd',0)";
      再mysql的前端query上能正确执行,但在我的sqlBean.setConnection(conn);
             sqlBean.setSqlValue(insertSql);
             int ret=sqlBean.executeUpdate();
    就出问题,执行时说我的语句有错误,好像只中文出错,如果是拉丁字母没问题,执行成功。
      是我的sqlbean出问题呢,还是我的jdbc出问题(mysql-connector-java-2.0.14-bin.jar),或者我还缺少什么东西,我下栽的jdbc里面有好多jar,我只检了上面这个有关系吗
      

  18.   

    to swotcoder(苦 丁):
        我认为char和varchar是一种类型(我指在c语言中的实现);
        我觉得char因该不会自动分配空间,它因该是char p[x] ,在存储上少了可能浪费空间,但是数据快的大小是一致的即x,但因为限制在255以内,所以比varchar访问要快;另外varchar是malloc来动态实现的,当然不会大于255,所以数据快是大小不同的,而是根据实际存储的数据而定,虽然节省磁盘空间,但消耗cpu和memory,所以选择char和varchar要看你综合来考虑需求。建议如sex(“男”,“女”),name等这样的固定长度用char,而title(标题)这样变化大的用varchar。
        以上是我的个人意见,欢迎各位批评:)
      

  19.   

    char varchar 如果说两者存储的数据本身类型相同,这种说法我接受。mysql先有char后有varchar,mysql会根据字段中所存储的实际数据容量自动去动态的进行char与varchar的转化。另外,你所说的varchar是宏实现,这个我保留意见,因为这些类型同C语言中类型对应管理并不是1:1。有机会你可以去看看有关代码获得更多的信息。在同等数据量下你从mysql中使用varchar并不比char慢。还有varchar并不受到255的限制,char受到此限制。另外,这个自动的转化是varchar动态转char或者varchar,而char类型则并无此自动转换特性。