添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  1. 一个ssm项目
  2. 一个windows系统上的mysql数据库
  3. 一个linux系统上的mysql数据库

启动项目,第一次把数据库的地址指向windows上的mysql数据库,一切正常。

但是 ,当项目连接linux上的mysql数据库时,发现一直报错 找不到×××表

把mysql在 /etc/my.cnf 文件中添加一行

lower_case_table_names = 1 

因为linux是对大小写敏感的,所以项目当中的表名称是大写的格式,但数据库中的结构是小写的格式,所以这里报错,只要设置忽略大小写即可。

查询 数据 指从 数据 库中获取所需要的 数据 查询 数据 数据 库操作中最常用,也是最重要的操作。用户可以根据自己对 数据 的需求,使用不同的 查询 方式。通过不同的 查询 方式,可以获得不同的 数据 MySQL 中是使用SELECT语句来 查询 数据 的。在这一章中将讲解的内容包括。 1、 查询 语句的基本语法 2、在单表上 查询 数据 3、使用聚合函数 查询 数据 4、多表上联合 查询 5、子 查询 6、合并 查询 结果 7、为表和字段取别名 8、使用正则表达式 查询 什么是 查询 ? 怎么查的? 数据 的准备如下: [sql] view plain copy create table STUDENT( STU_ID int primary KEY, STU_NAME char(10) not null, STU_AGE smallint unsigned not null, STU_SEX char(2) not null insert into STUDENT values(2001,'小王',13,'男'); insert into STUDENT values(2002,'明明',12,'男'); insert into STUDENT values(2003,'红红',14,'女'); insert into STUDENT values(2004,'小花',13,'女'); insert into STUDENT values(2005,'天儿',15,'男'); insert into STUDENT values(2006,'阿猎',13,'女'); insert into STUDENT values(2007,'阿猫',16,'男'); insert into STUDENT values(2008,'阿狗',17,'男'); insert into STUDENT values(2009,'黑子',14,'男'); insert into STUDENT values(2010,'小玉',13,'女'); insert into STUDENT values(2011,'头头',13,'女'); insert into STUDENT values(2012,'冰冰',14,'女'); insert into STUDENT values(2013,'美丽',13,'女'); insert into STUDENT values(2014,'神乐',12,'男'); insert into STUDENT values(2015,'天五',13,'男'); insert into STUDENT values(2016,'小三',11,'男'); insert into STUDENT values(2017,'阿张',13,'男'); insert into STUDENT values(2018,'阿杰',13,'男'); insert into STUDENT values(2019,'阿宝',13,'女'); insert into STUDENT values(2020,'大王',14,'男'); 然后这是学生成绩表,其中定义了外键约束 [sql] view plain copy create table GRADE( STU_ID INT NOT NULL, STU_SCORE INT, foreign key(STU_ID) references STUDENT(STU_ID) insert into GRADE values(2001,90); insert into GRADE values(2002,89); insert into GRADE values(2003,67); insert into GRADE values(2004,78); insert into GRADE values(2005,89); insert into GRADE values(2006,78); insert into GRADE values(2007,99); insert into GRADE values(2008,87); insert into GRADE values(2009,70); insert into GRADE values(2010,71); insert into GRADE values(2011,56); insert into GRADE values(2012,85); insert into GRADE values(2013,65); insert into GRADE values(2014,66); insert into GRADE values(2015,77); insert into GRADE values(2016,79); insert into GRADE values(2017,82); insert into GRADE values(2018,88); insert into GRADE values(2019,NULL); insert into GRADE values(2020,NULL); 一、 查询 语句的基本语法 查询 数据 是指从 数据 库中的 数据 表或视图中获取所需要的 数据 ,在 mysql 中,可以使用SELECT语句来 查询 数据 。根据 查询 条件的不同, 数据 库系统会找到不同的 数据 。 SELECT语句的基本语法格式如下: [sql] view plain copy SELECT 属性列表 FROM 表名或视图列表 [WHERE 条件表达式1] [GROUP BY 属性名1 [HAVING 条件表达式2]] [ORDER BY 属性名2 [ASC|DESC]] 属性列表:表示需要 查询 的字段名。 表名或视图列表:表示即将进行 数据 查询 数据 表或者视图,表或视图可以有多个。 条件表达式1:设置 查询 的条件。 属性名1:表示按该字段中的 数据 进行分组。 条件表达式2:表示满足该表达式的 数据 才能输出。 属性2:表示按该字段中的 数据 进行排序,排序方式由ASC或DESC参数指定。 ASC:表示按升序的顺序进行排序。即表示值按照从小到大的顺序排列。这是默认参数。 DESC:表示按降序的顺序进行排序。即表示值按照从大到小的顺序排列。 如果有WHERE子句,就按照“条件表达式1”指定的条件进行 查询 ;如果没有WHERE子句,就 查询 所有记录。 如果有GROUP BY子句,就按照“属性名1”指定的字段进行分组;如果GROUP BY子句后面带着HAVING关键字,那么只有满足“条件表达式2”中指定的条件的记录才能够输出。GROUP BY子句通常和COUNT()、SUM()等聚合函数一起使用。 如果有ORDER BY子句,就按照“属性名2”指定的字段进行排序。排序方式由ASC或DESC参数指定。默认的排序方式为ASC。 二、在单表上 查询 数据 2.1、 查询 所有字段 [sql] view plain copy select * from STUDENT; 2.2、按条件 查询 (1) 比较运算符 > , < ,= , != (),>= , 13; in(v1,v2..vn) ,符合v1,v2,,,vn才能被查出 IN关键字可以判断某个字段的值是否在指定的集合中。如果字段的值在集合中,则满足 查询 条件,该纪录将被 查询 出来。如果不在集合中,则不满足 查询 条件。其语法规则如下:[ NOT ] IN ( 元素1, 元素2, …, 元素n ) [sql] view plain copy select * from STUDENT where STU_AGE in(11,12); between v1 and v2 在v1至v2之间(包含v1,v2) BETWEEN AND关键字可以判读某个字段的值是否在指定的范围内。如果字段的值在指定范围内,则满足 查询 条件,该纪录将被 查询 出来。如果不在指定范围内,则不满足 查询 条件。其语法规则如下: [ NOT ] BETWEEN 取值1 AND 取值2 [sql] view plain copy select * from STUDENT where STU_AGE between 13 and 15; or ( || ) 逻辑或 OR关键字也可以用来联合多个条件进行 查询 ,但是与AND关键字不同。使用OR关键字时,只要满足这几个 查询 条件的其中一个,这样的记录将会被 查询 出来。如果不满足这些 查询 条件中的任何一个,这样的记录将被排除掉。OR关键字的语法规则如下: 条件表达式1 OR 条件表达式2 [ …OR 条件表达式n ] 其中,OR可以用来 连接 两个条件表达式。而且,可以同时使用多个OR关键字,这样可以 连接 更多的条件表达式。 [sql] view plain copy select * from STUDENT where STU_ID2015; and ( && ) 逻辑与 AND关键字可以用来联合多个条件进行 查询 。使用AND关键字时,只有同时满足所有 查询 条件的记录会被 查询 出来。如果不满足这些 查询 条件的其中一个,这样的记录将被排除掉。AND关键字的语法规则如下: 条件表达式1 AND 条件表达式2 [ … AND 条件表达式n ] 其中,AND可以 连接 两个条件表达式。而且,可以同时使用多个AND关键字,这样可以 连接 更多的条件表达式。 (3)模糊 查询 like 像 LIKE关键字可以匹配字符串是否相等。如果字段的值与指定的字符串相匹配,则满足 查询 条件,该纪录将被 查询 出来。如果与指定的字符串不匹配,则不满足 查询 条件。其语法规则如下:[ NOT ] LIKE '字符串' “NOT”可选参数,加上 NOT表示与指定的字符串不匹配时满足条件;“字符串”表示指定用来匹配的字符串,该字符串必须加单引号或双引号。 % 任意字符 [sql] view plain copy select * from STUDENT where STU_NAME LIKE '%王'; 表示匹配任何以王结尾的 [sql] view plain copy select * from STUDENT where STU_NAME LIKE '阿%'; 表示匹配任何以阿开头的 _ 单个字符 比如 插入 [sql] view plain copy insert into STUDENT values(2021,'天下无镜',14,'男'); [sql] view plain copy select * from STUDENT where STU_NAME LIKE '_下_'; 查询 的结果为空 但是如果下后面加两个_符号 [sql] view plain copy select * from STUDENT where STU_NAME LIKE '_下__'; 查询 结果不为空 “字符串”参数的值可以是一个完整的字符串,也可以是包含百分号(%)或者下划线(_)的通配字符。二者有很大区别 “%”可以代表任意长度的字符串,长度可以为0; “_”只能表示单个字符。 如果要匹配姓张且名字只有两个字的人的记录,“张”字后面必须要有两个“_”符号。因为一个汉字是两个字符,而一个“_”符号只能代表一个字符。 (4)空值 查询 IS NULL关键字可以用来判断字段的值是否为空值(NULL)。如果字段的值是空值,则满足 查询 条件,该记录将被 查询 出来。如果字段的值不是空值,则不满足 查询 条件。其语法规则如下: IS [ NOT ] NULL 其中,“NOT”是可选参数,加上NOT表示字段不是空值时满足条件。 IS NULL是一个整体,不能将IS换成”=”. 三、使用聚合函数 查询 数据 3.1、group by 分组 [sql] view plain copy select * from STUDENT group by STU_SEX; 不加条件,那么就只取每个分组的第一条。 如果想看分组的内容,可以加groub_concat [sql] view plain copy select STU_SEX,group_concat(STU_NAME) from STUDENT group by STU_SEX; 3.2、一般情况下group需与统计函数(聚合函数)一起使用才有意义 先准备一些 数据 : [sql] view plain copy create table EMPLOYEES( EMP_NAME CHAR(10) NOT NULL, EMP_SALARY INT unsigned NOT NULL, EMP_DEP CHAR(10) NOT NULL insert into EMPLOYEES values('小王',5000,'销售部'); insert into EMPLOYEES values('阿小王',6000,'销售部'); insert into EMPLOYEES values('工是不',7000,'销售部'); insert into EMPLOYEES values('人人乐',3000,'资源部'); insert into EMPLOYEES values('满头大',4000,'资源部'); insert into EMPLOYEES values('天生一家',5500,'资源部'); insert into EMPLOYEES values('小花',14500,'资源部'); insert into EMPLOYEES values('大玉',15000,'研发部'); insert into EMPLOYEES values('条条',12000,'研发部'); insert into EMPLOYEES values('笨笨',13000,'研发部'); insert into EMPLOYEES values('我是天才',15000,'研发部'); insert into EMPLOYEES values('无语了',6000,'审计部'); insert into EMPLOYEES values('什么人',5000,'审计部'); insert into EMPLOYEES values('不知道',4000,'审计部'); mysql 中的五种统计函数: (1)max:求最大值 求每个部门的最高工资: [sql] view plain copy select EMP_NAME,EMP_DEP,max(EMP_SALARY) from EMPLOYEES group by EMP_DEP; (2)min:求最小值 求每个部门的最仰工资: [sql] view plain copy select EMP_NAME,EMP_DEP,min(EMP_SALARY) from EMPLOYEES group by EMP_DEP; (3)sum:求总数和 求每个部门的工资总和: [sql] view plain copy select EMP_DEP,sum(EMP_SALARY) from EMPLOYEES group by EMP_DEP (4)avg:求平均值 求每个部门的工资平均值 [sql] view plain copy select EMP_DEP,avg(EMP_SALARY) from EMPLOYEES group by EMP_DEP; (5)count:求总行数 求每个部门工资大于一定金额的人数 [sql] view plain copy select EMP_DEP,count(*) from EMPLOYEES where EMP_SALARY>=500 group by EMP_DEP; 3.3、带条件的groub by 字段 having,利用HAVING语句过滤分组 数据 having 子句的作用是筛选满足条件的组,即在分组之后过滤 数据 ,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。 having 子句被限制子已经在SELECT语句中定义的列和聚合表达式上。通常,你需要通过在HAVING子句中重复聚合函数表达式来引用聚合值,就如你在SELECT语句中做的那样。 [sql] view plain copy select EMP_DEP,avg(EMP_SALARY),group_concat(EMP_NAME)from EMPLOYEES group by EMP_DEP HAVING avg(EMP_SALARY) >=6000; 查找 平均工资大于6000的部门,并把部门里的人全部列出来 四、多表上联合 查询 多表上联合 查询 分为内 连接 查询 和外 连接 查询 (1)隐式内 连接 查询 [sql] view plain copy select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT,GRADE WHERE STUDENT.STU_ID=GRADE.STU_ID AND GRADE.STU_SCORE >=90; 查找 大于90分的学生信息: (2)显式内 连接 查询 [sql] view plain copy select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT inner join GRADE on STUDENT.STU_ID=GRADE.STU_ID AND GRADE.STU_SCORE >=90; 用法:select .... from 表1 inner join 表2 on 条件表达式 (3)外 连接 查询 left join.左 连接 查询 。 用法 :select .... from 表1 left join 表2 on 条件表达式 意思是表1查出来的 数据 不能为null,但是其对应表2的 数据 可以为null [sql] view plain copy select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT left join GRADE on STUDENT.STU_ID=GRADE.STU_ID; right join就是相反的了,用法相同 用left join的时候,left join操作符左侧表里的信息都会被 查询 出来,右侧表里没有的记录会填空(NULL).right join亦然;inner join的时候则只有条件合适的才会显示出来 full join() 完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的 数据 仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表中的任何行不匹配的行。而外联接会返回 FROM 子句中提到的至少一个表或 视图的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外 部联接中两个表的所有行都将返回。 五、子 查询 以一个 查询 select的结果作为另一个 查询 的条件 语法:select * from 表1 wher 条件1(select ..from 表2 where 条件2) 1、与In结合 [sql] view plain copy select * from STUDENT where STU_ID IN(select STU_ID from GRADE where STU_SCORE>85); 查找 大于85分的学生信息 2、与EXISTS结合 EXISTS和NOT EXISTS操作符只测试某个子 查询 是否返回了 数据 行。如果是,EXISTS将是true,NOT EXISTS将是false。 [sql] view plain copy select * from STUDENT where EXISTS (select STU_ID from GRADE where STU_SCORE>=100); 如果有学生成绩大于100,才 查询 所有的学生信息 3、ALL、ANY和SOME子 查询 any和all的操作符常见用法是结合一个相对比较操作符对一个 数据 列子 查询 的结果进行测试。它们测试比较值是否与子 查询 所返回的全部或一部分值匹配。比方 ,如果比较值小于或等于子 查询 所返回的每一个值,<=all将是true,只要比较值小于或等于子 查询 所返回的任何一个值,<=any将是true。some是any的一个同义词。 [sql] view plain copy select STU_ID from GRADE where STU_SCORE = any (select STU_ID from GRADE where STU_SCORE 80 order by STU_SCORE; 默认是按升序的, 也可以这么写 [sql] view plain copy select * from GRADE where STU_SCORE >80 order by STU_SCORE ASC; 结果如下: 如果想换成降序的: [sql] view plain copy select * from GRADE where STU_SCORE >80 order by STU_SCORE desc; 7.2、limit limit [offset,] N offset 偏移量,可选,不写则相当于limit 0,N N 取出条目 取分数最高的前5条 [sql] view plain copy select * from GRADE order by STU_SCORE desc limit 5; 取分数最低的前5条 [sql] view plain copy select * from GRADE order by STU_SCORE asc limit 5; 取分数排名在10-15之间的5条 [sql] view plain copy select * from GRADE order by STU_SCORE desc limit 10,5 九、使用正则表达式 查询 正则表达式是用某种模式去匹配一类字符串的一个方式。例如,使用正则表达式可以 查询 出包含A、B、C其中任一字母的字符串。正则表达式的 查询 能力比通配字符的 查询 能力更强大,而且更加的灵活。正则表达式可以应用于非常复杂 查询 MySQL 中,使用REGEXP关键字来匹配 查询 正则表达式。其基本形式如下: 属性名 REGEXP '匹配方式' 在使用前先插入一些 数据 : [sql] view plain copy insert into STUDENT values(2022,'12wef',13,'男'); insert into STUDENT values(2023,'faf_23',13,'男'); insert into STUDENT values(2024,'fafa',13,'女'); insert into STUDENT values(2025,'ooop',14,'男'); insert into STUDENT values(2026,'23oop',14,'男'); insert into STUDENT values(2027,'woop89',14,'男'); insert into STUDENT values(2028,'abcdd',11,'男'); (1)使用字符“^”可以匹配以特定字符或字符串开头的记录。 查询 所有以阿头的 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '^阿'; 以数字开头 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '^[0-9]'; (2)使用字符“$”可以匹配以特定字符或字符串结尾的记录 以数字结尾 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '[0-9]$'; (3)用正则表达式来 查询 时,可以用“.”来替代字符串中的任意一个字符。 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '^w....[0-9]$'; 以w开头,以数字结束,中间有4个 (4)使用方括号([])可以将需要 查询 字符组成一个字符集。只要记录中包含方括号中的任意字符,该记录将会被 查询 出来。 例如,通过“[abc]”可以 查询 包含a、b、c这三个字母中任何一个的记录。 使用方括号可以指定集合的区间。 “[a-z]”表示从a-z的所有字母; “[0-9]”表示从0-9的所有数字; “[a-z0-9]”表示包含所有的小写字母和数字。 “[a-zA-Z]”表示匹配所有字母。 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '[0-9a-z]'; 查询 所有包含有数字和小写字母的 使用“[^字符集合]”可以匹配指定字符以外的字符 (5){}表示出现的次数 正则表达式中,“字符串{M}”表示字符串连续出现M次;“字符串{M,N}”表示字符串联连续出现至少M次,最多N次。例如,“ab{2}”表示字符串“ab”连续出现两次。“ab{2,4}”表示字符串“ab”连续出现至少两次,最多四次。 o出现2次 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP 'o{2}'; (6)+表示到少出现一次 fa至少出现一次 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '(fa)+'; 正则表达式可以匹配字符串。当表中的记录包含这个字符串时,就可以将该记录 查询 出来。如果指定多个字符串时,需要用符号“|”隔开。只要匹配这些字符串中的任意一个即可。每个字符串与”|”之间不能有空格。因为, 查询 过程中, 数据 库系统会将空格也当作一个字符。这样就 查询 不出想要的结果。 正则表达式中,“*”和“+”都可以匹配多个该符号之前的字符。但是,“+”至少表示一个字符,而“*”可以表示零个字符。 日志如下(基本和这个一样,就是 数据 文件名不一样):KCF:write/openerrorblock=0x3e0ac1online=1file=31/cunchu/oradata/ts_fatslim_20.dbferror=27072txt:'Linux-x86_64Error:5:Inp...日志如下(基本和这个一样,就是 数据 文件名不一样):KCF: write/open error block... 今天遇到一个问题,我在后台插入 数据 ,没报错,但 数据 库却查不出 数据 。我将sql语句在 数据 库管理工具里运行,然后发现受影响行数是0。这就是完全没插入 数据 啊,再检查几遍,发现主键重复了。: mysql 显示插入成功,但 查询 不到 该条 数据 。:查看表里是否存在与插入 数据 一样的主键。 我使用ecplise+ mysql 开发的一个网站和后台管理的 项目 ,然后租的百度云服务器。在上传到服务器上运行时,会出现找 不到 某个表的错误(我在本地运行时是好好的),主要原因出在Mybatise 连接 数据 库的时候出现了表名的大写,比如select * from Cars;这句话在本地运行没毛病,但是在服务器上会出现找 不到 Cars表的错误,改为select * from cars;就OK了。希望可以帮到刚... 关键词: phpmyadmin MySQL 不到 数据 库 不存在 数据 库 Message: mysql i::real_connect(): (HY000/1049): Unknown database MySQL 命令窗口的命令 select version(); // 查看当前 MySQL 版本 show databases; // 查看当前存在 数据 库 不同版本 MySQL 数据 库的操作是分开的,有各自的存储空间。各自的用户和用户密码也不同(例如root账户) 最早安装了. 以前都使用的是windows下面的 Mysql ,今天把 Mysql 数据 库移到Linux上后,代码中的 查询 语句报错,找 不到 相关的表,而我在终端使用 mysql 连接 工具 连接 查询 都是正常的,查资料才发现,Linux上的 mysql 数据 库对大小写敏感,而代码中的表名都是大写。 解决方法: vi /etc/my.conf 在[ mysql d]下面添加如下配置: lower_case_table_name 向 数据 库 中奖记录表中 添加一条中奖 记录,马上调用方法 查询 这条记录, 查询 不到 ! 我打开 数据 库查看 数据 是插入成功的。 开发语言是用java, 框架 hibernate!插入 数据 ,和 查询 数据 代码如下,请大神解答,小弟,感激不尽!//插入中奖记录public int insertPrizeRecord(Integer prizeId,String uid){try{StringBuilder sq... Linux 下 MySQL 无法访问问题排查基本步骤问题 明本文 明云服务器 Linux 上 MySQL 无法访问问题的一般排查步骤。处理办法查看 Linux 操作系统是否已经安装了 MySQL $rpm-qa mysql mysql -4.1.7-4.RHEL4.1# 明已经安装了 MySQL 检查状态检测 MySQL 运行状态:service mysql dstatus启动服务:可以用三种方法来启动 MySQL ... MYSQL 本资料为产品岗位作为日常工作参考,语言口语化At 2019/4/22 By David.Yang 数据 操作最近本的4中情况,增、删、改、查,即添加 数据 、删除 数据 、修改 数据 查询 数据 。增(INSERT语句)往 数据 表当中插入 数据 可以单条插入,也可以批量多条插入,语法:INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( val...