给出100分,mysql在线帮忙解决,现在本人征用mysql,不断问题,希望不断跟进解决,到时分会给足你 varchar(100)对于拉丁字母和汉字是同一层意思吗, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 alter table tablename add constraint fkname foreign key (id) references 另一个表(id)在哪个位置可以加上 on delete cacscade on update,,,, 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 还有我关心create表时是否就可以附上foreign key的名字,那么我日后就可以alter里珊关系了,应为很多时候你必须先珊关系再可进行一些表操作 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; 补充2: 字母和汉字是这样的,字母是一个字节,所以varchar(100),最多保存100个字母,而汉字占用两个字节,所以varchar(100)却只能保存是50个汉字,所以在设计的时候要考虑中文问题。 关于foreign key,我用的mysql是3.2版,不支持它,所以可以不考虑,其实primary key在3.2里大多是考虑以后的兼容性而设计的。 奇怪我怎么在程序里汉子存入出毛病,不能正确显示,拉丁字母没问题。VARCHAR(110)字段出问题 KAO,是不是AUTOINCREMENT 和FOREIGN KEY不能共存什么TYPE 一个是INODB MYISAM真见鬼 愿来MYSQL不怎么支持外建,那么说我要自己初里了 目前,只有 InnoDB 表类型才支持外键约束,5.1 版后 MyISAM 表也将支持外键约束,存入汉字,不能正确显示 的问题,应该是你的 客户端的问题,建议使用 MySQL-Front 来学习 MySQL 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(); 奇怪阿,以上的语句,保证编易时无语法错误,当然太长了,我珊了一点, 当第一行string是全字母aaa那就毫无问题,然后当我把aaa改成"a好a",就出错了,说我附近语法有错误,见鬼,愿来access一点问题多没 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+")"; sqlBean.setSqlValue(insertSql);这一行加断点,检查 insertSQL 的值,以即出错信息 第一个问题 VARCHAR 和 CHAR 会自动进行类型转换,所以不会浪费! 字母和汉字是这样的,字母是一个字节,所以varchar(100),最多保存100个字母,而汉字占用两个字节,所以varchar(100)却只能保存是50个汉字,所以在设计的时候要考虑中文问题。 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,我只检了上面这个有关系吗 to swotcoder(苦 丁): 我认为char和varchar是一种类型(我指在c语言中的实现); 我觉得char因该不会自动分配空间,它因该是char p[x] ,在存储上少了可能浪费空间,但是数据快的大小是一致的即x,但因为限制在255以内,所以比varchar访问要快;另外varchar是malloc来动态实现的,当然不会大于255,所以数据快是大小不同的,而是根据实际存储的数据而定,虽然节省磁盘空间,但消耗cpu和memory,所以选择char和varchar要看你综合来考虑需求。建议如sex(“男”,“女”),name等这样的固定长度用char,而title(标题)这样变化大的用varchar。 以上是我的个人意见,欢迎各位批评:) char varchar 如果说两者存储的数据本身类型相同,这种说法我接受。mysql先有char后有varchar,mysql会根据字段中所存储的实际数据容量自动去动态的进行char与varchar的转化。另外,你所说的varchar是宏实现,这个我保留意见,因为这些类型同C语言中类型对应管理并不是1:1。有机会你可以去看看有关代码获得更多的信息。在同等数据量下你从mysql中使用varchar并不比char慢。还有varchar并不受到255的限制,char受到此限制。另外,这个自动的转化是varchar动态转char或者varchar,而char类型则并无此自动转换特性。 union 和 orderby合用如何实现 求助,MySql中的日期时间问题 mysql count(*)问题 mysql 加密函数 找到一个不知是否属MySQL的安全问题的问题 msyql 通过 CREATE FUNCTION 调用C代码问题 再问一个,DBI,DBD,Perl,MySql,这四都是什么关系。 win2000 server 下能不能装apache,和mysql? 【有点难度】如何建索引能解决关于检索速度问题。 如何检索出某个字段不唯一的那些数据 大量的数据如何导入mysql 怎么没有这个工具MySQLManager.exe?????
add constraint fkname foreign key (id) references 另一个表(id)
在哪个位置可以加上 on delete cacscade on update,,,,
> 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
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;
字母和汉字是这样的,字母是一个字节,所以varchar(100),最多保存100个字母,而汉字占用两个字节,所以varchar(100)却只能保存是50个汉字,所以在设计的时候要考虑中文问题。
VARCHAR(110)字段出问题
什么TYPE 一个是INODB MYISAM真见鬼
5.1 版后 MyISAM 表也将支持外键约束,存入汉字,不能正确显示 的问题,
应该是你的 客户端的问题,
建议使用 MySQL-Front 来学习 MySQL
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();
当第一行string是全字母aaa那就毫无问题,然后当我把aaa改成"a好a",就出错了,
说我附近语法有错误,见鬼,愿来access一点问题多没
"values("+forumID+",'"+subject+"','"+message+"','"+imageURL+"',"+provinceCode+","+cityCode+",'"+address+"','"+userName+"','"+userPassword+"',"+method+")";
检查 insertSQL 的值,以即出错信息
"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,我只检了上面这个有关系吗
我认为char和varchar是一种类型(我指在c语言中的实现);
我觉得char因该不会自动分配空间,它因该是char p[x] ,在存储上少了可能浪费空间,但是数据快的大小是一致的即x,但因为限制在255以内,所以比varchar访问要快;另外varchar是malloc来动态实现的,当然不会大于255,所以数据快是大小不同的,而是根据实际存储的数据而定,虽然节省磁盘空间,但消耗cpu和memory,所以选择char和varchar要看你综合来考虑需求。建议如sex(“男”,“女”),name等这样的固定长度用char,而title(标题)这样变化大的用varchar。
以上是我的个人意见,欢迎各位批评:)