shuixin13(犬犬(心帆)) :请问mysql中的查询问题

yzt001 2003-03-26 04:35:08
CREATE TABLE `中国`(
`编号` varchar(10) NOT NULL default '',
`姓名` varchar(8) default NULL,
`性别` char(2) NOT NULL default '男',
`年龄` tinyint(3) unsigned default '0',
`家庭地址` varchar(80) default NULL,
`备注` longtext,
PRIMARY KEY (`编号`),
KEY `姓名` (`姓名`)
) TYPE=MyISAM COMMENT='rr';

insert into 中国 values('00001','张三','男','25','北京','aaa');
insert into 中国 values('00002','李四','男','32','上海','bbb');
insert into 中国 values('00003','王五','男','18','天津','ccc);
insert into 中国 values('00004','麻六','男','50','广州','ddd');
insert into 中国 values('00005','赵敏','女','21','兰州','eee');


现在我开始查询:

mysql> select * from 中国 where 性别 = '男';
+-------+------+------+------+----------+------+
| 编号 | 姓名 | 性别 | 年龄 | 家庭地址 | 备注 |
+-------+------+------+------+----------+------+
| 00001 | 张三 | 男 | 25 | 北京 | aaa |
| 00002 | 李四 | 男 | 32 | 上海 | bbb |
| 00003 | 王五 | 男 | 18 | 天津 | ccc |
| 00004 | 麻六 | 男 | 50 | 广州 | ddd |
+-------+------+------+------+----------+------+

mysql> select * from 中国;
ERROR 1064: You have an error in your SQL syntax near '' at line 1

为什么得不到表中的全部记录?
...全文
46 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lierq 2003-03-27
  • 打赏
  • 举报
回复
shuixin13(犬犬(心帆)) GB2321 是不是需要从网上下载,在MYSQL自带的字符集中并没有GB2321
yzt001 2003-03-27
  • 打赏
  • 举报
回复
mysql> select * from `中国`;
+-------+------+------+------+----------+------+
| 编号 | 姓名 | 性别 | 年龄 | 家庭地址 | 备注 |
+-------+------+------+------+----------+------+
| 00001 | 张三 | 男 | 25 | 北京 | aaa |
| 00002 | 李四 | 男 | 32 | 上海 | bbb |
| 00003 | 王五 | 男 | 18 | 天津 | ccc |
| 00004 | 麻六 | 男 | 50 | 广州 | ddd |
| 00005 | 赵敏 | 女 | 21 | 兰州 | eee |
+-------+------+------+------+----------+------+
5 rows in set (0.64 sec)


可以了,但为什么要加这个反引号呀?下面的查询我就没有加呀?

mysql> select * from 中国 where 性别 = '男';
+-------+------+------+------+----------+------+
| 编号 | 姓名 | 性别 | 年龄 | 家庭地址 | 备注 |
+-------+------+------+------+----------+------+
| 00001 | 张三 | 男 | 25 | 北京 | aaa |
| 00002 | 李四 | 男 | 32 | 上海 | bbb |
| 00003 | 王五 | 男 | 18 | 天津 | ccc |
| 00004 | 麻六 | 男 | 50 | 广州 | ddd |
+-------+------+------+------+----------+------+

shuixin13 2003-03-27
  • 打赏
  • 举报
回复
TO lierq(李子)


在你的 my.ini 文件中加入下面的就可以了

[mysqld]
default-character-set =gb2312

重启 MySQL 服务
运行下面的
mysql> SHOW VARIABLES LIKE 'character_set';
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| character_set | gb2312 |
+---------------+--------+
1 row in set (0.00 sec)

结果如上就可以支持中文了,



如果在字段中有MySQL保留字\特殊字符,就需要使用反引号,
所以在使用中文时建议加上



TO yzt001(yzt001)

select * from '中国';
是反引号,
而不是用引号


在表名 中国 上加上反引号 ` 试试呢??

它大键盘数字1键左边的那个键上
------------------------------

yzt001 2003-03-27
  • 打赏
  • 举报
回复
mysql> select * from '中国';
ERROR 1064: You have an error in your SQL syntax near ''中国'' at line 1

还是不行呀?是不是哪里还需要设置一下呢?

我的版本是 3.23.54
shuixin13 2003-03-27
  • 打赏
  • 举报
回复
TO yzt001(yzt001)
呵呵,
>可以了,但为什么要加这个反引号呀?下面的查询我就没有加呀?

这在理论上是说不通的,
可能是你的版本问题,
在我的系统里没有这个问题


TO lierq(李子)
GB 2312 是不需要在网上下载的,
MySQL 内置了对它的支持!
你只要将 my.cnf / my.ini 文件中设置一下即可!!!!
istrue 2003-03-27
  • 打赏
  • 举报
回复
很不错,可以!
lierq 2003-03-27
  • 打赏
  • 举报
回复
顺便问一下 shuixin13(犬犬(心帆)),你的MYSQL设置是怎样的,我的加载了DOS字符集;在没有反引时,建表、插入、查询不成功,加上后则行;(我的MYSQL版本是4.0.10-gamma-max-nt-log)
shuixin13 2003-03-26
  • 打赏
  • 举报
回复
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12 to server version: 4.0.11-gamma-max-nt-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> insert into 中国 values('00001','张三','男','25','北京','aaa');
ERROR 1046: 未选择数据库
mysql> insert into 中国 values('00002','李四','男','32','上海','bbb');
ERROR 1046: 未选择数据库
mysql> insert into 中国 values('00003','王五','男','18','天津','ccc');
ERROR 1046: 未选择数据库
mysql> insert into 中国 values('00004','麻六','男','50','广州','ddd');
ERROR 1046: 未选择数据库
mysql> insert into 中国 values('00005','赵敏','女','21','兰州','eee');
ERROR 1046: 未选择数据库
mysql> use tes;
ERROR 1049: 未知数据库 'tes'
mysql> use test;
Database changed
mysql> insert into 中国 values('00001','张三','男','25','北京','aaa');
Query OK, 1 row affected (0.00 sec)

mysql> insert into 中国 values('00002','李四','男','32','上海','bbb');
Query OK, 1 row affected (0.01 sec)

mysql> insert into 中国 values('00003','王五','男','18','天津','ccc');
Query OK, 1 row affected (0.00 sec)

mysql> insert into 中国 values('00004','麻六','男','50','广州','ddd');
Query OK, 1 row affected (0.00 sec)

mysql> insert into 中国 values('00005','赵敏','女','21','兰州','eee');
Query OK, 1 row affected (0.00 sec)

mysql> select * from 中国;
+-------+------+------+------+----------+------+
| 编号 | 姓名 | 性别 | 年龄 | 家庭地址 | 备注 |
+-------+------+------+------+----------+------+
| 00001 | 张三 | 男 | 25 | 北京 | aaa |
| 00002 | 李四 | 男 | 32 | 上海 | bbb |
| 00003 | 王五 | 男 | 18 | 天津 | ccc |
| 00004 | 麻六 | 男 | 50 | 广州 | ddd |
| 00005 | 赵敏 | 女 | 21 | 兰州 | eee |
+-------+------+------+------+----------+------+
5 rows in set (0.00 sec)

mysql>


呵呵,我的是可以的呀,
你的 MySQL 服务器版本是多少??

在表名 中国 上加上反引号 ` 试试呢??
它大键盘数字1键左边的那个键上

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧