为什么一些mysql数据库的书里所给的命令都是大写的?实际操作人民币小写转大写也可以啊!

12338人阅读
开发工具(55)
MySQL(14)
转载于:/538
mysql数据库在做查询的时候,有时候是英文字母大小写敏感的,有时候又不是的,主要是由mysql的字符校验规则的设置决定的,通常默认是不支持的大小写字母敏感的。
&1.&什么是字符集和校验规则?
字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。任何一个给定的字符集至少有一个校对规则,它可能有几个校对规则。要想列出一个字符集的校对规则,使用SHOW COLLATION语句。
校对规则一般有这些特征:
2.&不同级别的字符集和校验规则可控制大小写敏感
MySQL5.1在同一台服务器、同一个数据库或甚至在同一个表中使用不同字符集或校对规则来混合定义字符串。字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和连接级。
2.1服务器级
MySQL按照如下方法确定服务器字符集和服务器校对规则:
(1)修改配置文件/f
在[mysqld]下添加:collation_server = utf8_bin
更改服务器级的校验规则(collation_server&)后,数据库校验规则(collation_collation)默认会继承服务器级的。
这个只适用于在重新启动之后,&新建的库,已存在的库不受影响.
同样的, 即使库的校验规则改了,已经存在的表不受修改影响;
同理与已经存在的列…
mysql& create database yutest0;
Query OK, 1 row affected (0.00 sec)
mysql& use yutest0;
Database changed
mysql& create table t1 (name varchar(10));
Query OK, 0 rows affected (0.01 sec)
mysql& insert into t1 values('AAA');
Query OK, 1 row affected (0.00 sec)
mysql& insert into t1 values('aaa');
Query OK, 1 row affected (0.01 sec)
mysql& select * from t1;
+------+
+------+
+------+
2 rows in set (0.00 sec)
mysql& select * from t1 where name='aaa';
+------+
+------+
+------+
1 row in set (0.00 sec)
可以看出,在服务器级进行相应的校对规则设置,查询大小写敏感。
(2)当服务器启动时根据有效的选项设置
当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和校对规则。
shell& mysqld --character-set-server=latin1 --collation-server=latin1_swedish_ci
2.2数据库级
MySQL这样选择数据库字符集和数据库校对规则:
(1)修改配置文件/f
进行了两组测试:
1) 在[mysqld]下添加:
collation_server = utf8_bin
collation_database = utf8_bin
2)&在[mysqld]下添加:
collation_database = utf8_bin
重启实例,两组都不能正常启动,错误信息如下:
可见,my.cnf配置文件中不支持设置collation_database 变量。
(2)创建数据库时设置数据库校验规则
mysql& create database yutest default character set utf8 collate utf8_
Query OK, 1 row affected (0.00 sec)
mysql& show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database
| utf8_bin
| collation_server
| utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
mysql& select * from t1;
+------+
+------+
+------+
2 rows in set (0.00 sec)
mysql& select * from t1 where name='abc';
+------+
+------+
+------+
1 row in set (0.01 sec)
可以看出,在数据库级进行相应的校对规则设置,查询大小写敏感。
MySQL按照下面的方式选择表字符集和校对规则:
在创建表时设置表级校验规则:
mysql& create database yutest2;
Query OK, 1 row affected (0.01 sec)
mysql& use yutest2;
Database changed
mysql& create table t1(name varchar(10))
-& default character set utf8 collate utf8_
Query OK, 0 rows affected (0.01 sec)
mysql& insert into t1 values('ABC');
Query OK, 1 row affected (0.00 sec)
mysql& insert into t1 values('abc');
Query OK, 1 row affected (0.00 sec)
mysql& show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database
| utf8_general_ci |
| collation_server
| utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
mysql& select * from t1;
+------+
+------+
+------+
2 rows in set (0.00 sec)
mysql& select * from t1 where name='abc';
+------+
+------+
+------+
1 row in set (0.00 sec)
可以看出,在表级进行相应的校对规则设置,查询大小写敏感。
2.4 连接级
考虑什么是一个“连接”:它是连接服务器时所作的事情。客户端发送SQL语句,例如查询,通过连接发送到服务器。服务器通过连接发送响应给客户端,例如结果集。对于客户端连接,这样会导致一些关于连接的字符集和校对规则的问题,这些问题均能够通过系统变量来解决:
mysql& show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name
+--------------------------+----------------------------+
| character_set_client
| character_set_connection | utf8
| character_set_database
| character_set_filesystem | binary
| character_set_results
| character_set_server
| character_set_system
| character_sets_dir
| /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
服务器使用character_set_client变量作为客户端发送的查询中使用的字符集。
转换时,服务器使用character_set_connection和collation_connection系统变量。它将客户端发送的查询从character_set_client系统变量转换到character_set_connection。
character_set_results变量指示服务器返回查询结果到客户端使用的字符集。包括结果数据,例如列值和结果元数据(如列名)。
3. 创建数据库表时大小写不敏感,仍然有方法在查询时区分大小写
3.1&在SQL语句中使用collate
使用collate子句,能够为一个比较覆盖任何默认校对规则。collate可以用于多种SQL语句中,比如where,having,group by,order by,as,聚合函数。
mysql& select * from t1 where name collate utf8_bin = 'ABC';
+------+
+------+
+------+
1 row in set (0.00 sec)
mysql& select * from t1 where name = 'ABC';
+------+
+------+
+------+
3 rows in set (0.00 sec)
mysql& select * from t1;
+------+
+------+
+------+
3 rows in set (0.00 sec)
3.2&binary操作符
binary操作符是collate子句的一个速记符。binary&’x‘等价与’x‘&collate&y,这里y是字符集’x‘二元校对规则的名字。每一个字符集有一个二元校对规则。例如,latin1字符集的二元校对规则是latin1_bin,因此,如果列a是字符集latin1,以下两个语句有相同效果:
select * from t1
select * from t1 order by a collate latin1_
mysql& select * from t1 where binary name = 'ABC';
+------+
+------+
+------+
1 row in set (0.00 sec)
mysql& select * from t1 where name = 'ABC';
+------+
+------+
+------+
3 rows in set (0.00 sec)
对于已经存在的数据库,如果没法通过导入导出重新设置字符集和校验字符集就只能通过在登录SQL设置字符集了。
参考链接:
MySQL5.1参考手册&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:827110次
积分:6461
积分:6461
排名:第3918名
原创:64篇
转载:125篇
评论:88条
(1)(1)(4)(5)(7)(7)(2)(2)(4)(12)(13)(2)(4)(2)(4)(6)(11)(9)(1)(3)(3)(1)(5)(9)(7)(2)(8)(3)(2)(4)(1)(16)(4)(1)(2)(2)(19)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'君,已阅读到文档的结尾了呢~~
21天学会php电子教案:第16章
SQL语言和MySQL数据库基础
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
21天学会php电子教案:第16章
SQL语言和MySQL数据库基础
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口博客分类:
【问题现象】
在windows系统中,有一个mysql数据库要迁移到linux系统中。在linux系统中安装好了mysql之后,使用默认配置可以启动数据库。把windows系统中的mysql数据库导入之后,发现应用程序读取不到数据,找不到表。使用show tables命令查看,发现在windows系统中,表名为全小写;在linux系统中,表名区分大小写。
【问题原因】
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
   1、数据库名与表名是严格区分大小写的;
   2、表的别名是严格区分大小写的;
   3、列名与列的别名在所有的情况下均是忽略大小写的;
   4、变量名也是严格区分大小写的;
MySQL在Windows下都不区分大小写。
【解决方案】
用root帐号登录后,在/f 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;
lower_case_table_names参数详解:
lower_case_table_names = 1
其中 0:区分大小写,1:不区分大小写。
samjavaeye
浏览: 95811 次
来自: 深圳
weirihai 写道访问都地址都打不开。
刚点了一遍,都能打 ...
访问都地址都打不开。MySQL之终端(Terminal)管理数据库、数据表、数据的基本操作 - File I/O_数据库技术_Linux公社-Linux系统门户网站
你好,游客
MySQL之终端(Terminal)管理数据库、数据表、数据的基本操作
来源:Linux社区&
作者:GarveyCalvin
MySQL有很多的可视化管理工具,比如&mysql-workbench&和&sequel-pro-&。 现在我写MySQL的终端命令操作的文章,是想强化一下自己对于MySQL的理解,总会比使用图形化的理解透彻,因为我本来就比较喜欢写代码。同时写出来这些文章,是想要给大家当个参考,希望也能对大家有所帮助,有所提升,这就是我为什么要写终端操作MySQL的文章了。&
注意:MySQL数据库命令不区分大小写。但在MAC的终端,如果你想使用tab自动补全命令,那么你就必须使用大写,这样MAC的终端才会帮你补全命令,否则你按N遍tab都不会有响应。&
1、数据库(database)管理
1.1 create 创建数据库
1.2 show 查看所有数据库
1.3 alter 修改数据库
1.4 use 使用数据库
1.5 查看当前使用的数据库
1.6 drop 删除数据库
2、数据表(table)管理
2.1&create&创建表
2.2&show 显示表
2.3 desc 查看表结构
2.4 alter 修改表结构(增、删、改)
2.4.1 insert 在表中添加列(字段)
2.4.2 alter 修改表(列)字段
2.4.3 delete 删除表(列)字段
2.4.4 rename 重命名表名
2.5 create 利用已有数据创建新表
3、数据的操作及管理
3.1 增加数据(增)
3.2 删除数据(删)
3.3 修改数据(改)
3.4 查询数据(查)
1、数据库(database)管理
1.1 create 创建数据库
create database firstDB;
1.2 show 查看所有数据库
+--------------------+
| Database
+--------------------+
| information_schema |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)&
1.3 alter 修改数据库
alter 命令修改数据库编码:
默认创建的数据库默认不支持中文字符,如果我们需要它支持中文字符,则将它的编码设置为utf8格式:
mysql& ALTER DATABASE testDB CHARACTER SET UTF8;
Query OK, 1 row affected (0.00 sec)
1.4 use 使用数据库
mysql& use firstDB;
Database changed
1.5 查看当前使用的数据库
mysql& select database();
+------------+
| database() |
+------------+
+------------+
1 row in set (0.00 sec)&
1.6 drop 删除数据库
mysql& drop database firstDB;
Query OK, 0 rows affected (0.00 sec)&
2、数据表(table)管理
我们首先创建一个数据库,提供我们往后的使用:
mysql& create database testDB;
Query OK, 1 row affected (0.00 sec)
创建后记得用use命令进入(使用)数据库,不然后面的操作都会不成功的。&
2.1&create&创建表
mysql& create table PEOPLE (
-& ID int AUTO_INCREMENT PRIMARY KEY,
-& NAME varchar(20) not null,
-& AGE int not null,
-& BIRTHDAY datetime);
Query OK, 0 rows affected (0.01 sec)
2.2 show 显示表
显示当前数据库所有的数据表
+------------------+
| Tables_in_testdb |
+------------------+
+------------------+
1 row in set (0.00 sec)&
2.3 desc 查看表结构
mysql& desc PEOPLE
+----------+-------------+------+-----+---------+----------------+
| Null | Key | Default | Extra
+----------+-------------+------+-----+---------+----------------+
| PRI | NULL
| auto_increment |
| varchar(20) | NO
| BIRTHDAY | datetime
+----------+-------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)&
2.4 alter 修改表结构(增、删、改)
默认创建的表不支持中文字符,所以需将表编码设置为utf8:
mysql& ALTER TABLE KEYCHAIN CONVERT TO CHARACTER SET UTF8;
Query OK, 1 row affected (0.02 sec)
Records: 1
Duplicates: 0
Warnings: 0
2.4.1 insert 在表中添加列(字段)
mysql& alter table PEOPLE add star BOOL;
Query OK, 0 rows affected (0.02 sec)
Records: 0
Duplicates: 0
Warnings: 0
提示:在MySQL里,布尔类型会自动转换为tinyint(1)类型。
我们不妨使用desc去查看一下PEOPLE表结构:
mysql& desc PEOPLE;
+----------+-------------+------+-----+---------+----------------+
| Null | Key | Default | Extra
+----------+-------------+------+-----+---------+----------------+
| PRI | NULL
| auto_increment |
| varchar(20) | NO
| BIRTHDAY | datetime
| tinyint(1)
+----------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
现在,你该相信我了吧?
2.4.2 alter 修改表(列)字段
mysql& alter table PEOPLE MODIFY star int;
Query OK, 0 rows affected (0.01 sec)
Records: 0
Duplicates: 0
Warnings: 0
我们再次使用desc查看PEOPLE表结构:
mysql& desc PEOPLE;
+----------+-------------+------+-----+---------+----------------+
| Null | Key | Default | Extra
+----------+-------------+------+-----+---------+----------------+
| PRI | NULL
| auto_increment |
| varchar(20) | NO
| BIRTHDAY | datetime
+----------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)&
2.4.3 delete 删除表(列)字段
mysql& alter table PEOPLE DROP column
Query OK, 0 rows affected (0.02 sec)
Records: 0
Duplicates: 0
Warnings: 0
删除后,再次查看PEOPLE表结构:
mysql& desc PEOPLE;
+----------+-------------+------+-----+---------+----------------+
| Null | Key | Default | Extra
+----------+-------------+------+-----+---------+----------------+
| PRI | NULL
| auto_increment |
| varchar(20) | NO
| BIRTHDAY | datetime
+----------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
删除字段成功,现在我们已经不能看到star的字段了。
2.4.4 rename 重命名表名
mysql& RENAME TABLE PEOPLE TO NEW_PEOPLE;
Query OK, 0 rows affected (0.00 sec)
2.5 create 利用已有数据创建新表
mysql& create table newTable select * from PEOPLE;
Query OK, 0 rows affected (0.01 sec)
Records: 0
Duplicates: 0
Warnings: 0
我们查看一下目前数据库存在的表:
+------------------+
| Tables_in_testdb |
+------------------+
| newTable
+------------------+
2 rows in set (0.00 sec)&
3、数据的操作及管理
数据表的基本操作,包含增、删、改、查数据。
以下命令均在PEOPLE表上操作。
3.1 增加数据(增)
PEOPLE表目前是没有数据的,它是空的数据表,我们现在先添加一些数据。
insert into 命令添加数据:
mysql& insert into PEOPLE VALUES (null, 'Anny', 22, '');
Query OK, 1 row affected (0.00 sec)
使用select命令查看表(会在后面介绍),现在我们查看PEOPLE数据表的数据:
mysql& select * from PEOPLE;
+----+------+-----+---------------------+
| ID | NAME | AGE | BIRTHDAY
+----+------+-----+---------------------+
1 | Anny |
22 | 1992-05-22 00:00:00 |
+----+------+-----+---------------------+
1 row in set (0.00 sec)
数据表现在有一条数据。
我们多添加几条数据,如:
mysql& select * from PEOPLE;
+----+--------+-----+---------------------+
| ID | NAME
| AGE | BIRTHDAY
+----+--------+-----+---------------------+
22 | 1992-05-22 00:00:00 |
2 | Garvey |
23 | 1991-05-22 00:00:00 |
25 | 1989-05-22 00:00:00 |
24 | 1990-05-22 00:00:00 |
24 | 1991-05-22 00:00:00 |
+----+--------+-----+---------------------+
5 rows in set (0.00 sec)&
3.2 删除数据(删)
delete 命令删除数据:
mysql& delete from PEOPLE where name = 'Lisa';
Query OK, 1 row affected (0.01 sec)
再次查询PEOPLE表:
mysql& select * from PEOPLE;
+----+--------+-----+---------------------+
| ID | NAME
| AGE | BIRTHDAY
+----+--------+-----+---------------------+
22 | 1992-05-22 00:00:00 |
2 | Garvey |
23 | 1991-05-22 00:00:00 |
24 | 1990-05-22 00:00:00 |
24 | 1991-05-22 00:00:00 |
+----+--------+-----+---------------------+
4 rows in set (0.00 sec)
已经看不到名为&Lisa&的数据了。
3.3 修改数据(改)
update 命令修改数据:
mysql& update PEOPLE set name='Calvin' where name = 'Garvey';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1
Changed: 1
Warnings: 0
查询PEOPLE表内容:
mysql& select * from PEOPLE;
+----+--------+-----+---------------------+
| ID | NAME
| AGE | BIRTHDAY
+----+--------+-----+---------------------+
22 | 1992-05-22 00:00:00 |
2 | Calvin |
23 | 1991-05-22 00:00:00 |
24 | 1990-05-22 00:00:00 |
24 | 1991-05-22 00:00:00 |
+----+--------+-----+---------------------+
4 rows in set (0.00 sec)
名为&Garvey&的记录已经修改为&Calvin&。
3.4 查询数据(查)
select 命令查询数据,最简单的就是查询表的所有数据,也就是我们最初使用到的那条命令:
mysql& select * from PEOPLE;
+----+--------+-----+---------------------+
| ID | NAME
| AGE | BIRTHDAY
+----+--------+-----+---------------------+
22 | 1992-05-22 00:00:00 |
2 | Calvin |
23 | 1991-05-22 00:00:00 |
24 | 1990-05-22 00:00:00 |
24 | 1991-05-22 00:00:00 |
+----+--------+-----+---------------------+
4 rows in set (0.00 sec)
格式:select *&from &表名&,*代表所有字段。&
查询数据时也可指定显示的(列)字段:
mysql& select NAME, AGE, BIRTHDAY from PEOPLE;
+--------+-----+---------------------+
| AGE | BIRTHDAY
+--------+-----+---------------------+
22 | 1992-05-22 00:00:00 |
| Calvin |
23 | 1991-05-22 00:00:00 |
24 | 1990-05-22 00:00:00 |
24 | 1991-05-22 00:00:00 |
+--------+-----+---------------------+
4 rows in set (0.00 sec)
格式:select &字段名,字段名,...& from &表名&。
select查询命令还有很多的高级用法,比如用来查找不重复(distinct)的数据,使数据按条件排序(order by),按查询条件显示数据(where)等等。
本文永久更新链接地址:
【内容导航】
相关资讯 & & &
& (06/16/:43)
& (11/17/:15)
& (08/15/:16)
& (01/07/:35)
& (10/11/:28)
& (08/07/:34)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款我安装了 mysql数据库!
但是再使用命令时它不区分大小字母!
能改吗?

在MySQL中是不区分大写和小写的
其他答案(共1个回答)
wait io峰值到达多少?以前遇到过,解决方案是重装。。排查太麻烦
mysql中,time类型(格式: '00:00:00' 不带日期
-- datetime类型带日期 : ' 00:00:00'),插入...
主要是性能有区别。
select count(1) as 排名 from 表名 where 分数字段 &= (select 分数字段 from 表名 where 姓名字段 = '用...
视频的话,我没有看过,你可以先从基础学习,从官方文档看起,中文的话,可以参考下MySQL技术内幕第四版,网站可以参考下:,个人博...
答: 记录孩子身高体重的数据怎么找不到了?
答: 没有恒心和耐不得寂寞者,不要去学
答: 首先的前提条件是,你们的局域网主机允许所属的工作机互访并具有对文件完全修改的权力(这是由管理员设定的)。
假如你的机器编号是a015(或是直接的网址如: ),另...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区

我要回帖

更多关于 人民币小写转大写 的文章

 

随机推荐