Mysql初学教程
这里跳过了Mysql的安装,如有需要点击下方链接学习哦!
菜鸟教程-Mysql
命令行操作数据库
对于刚刚安装完数据库,我们需要使用命令行登录或修改数据库密码等操作!
- 连接数据库
[root@host]# mysql -u root -p
Enter password:******
- 修改用户密码(对于Mysql安装完首次生成的初始密码,再登录后需要重新修改用户密码)
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges;
- 退出
mysql> exit;
基本SQL使用
- SELECT 查询语句
SELECT 字段名 / * (代表查询所有字段) FROM 表名 (多个表用’,'隔开) WHERE (查询条件) 【GROUP BY 分组查询字段 】【ORDER BY 排序字段 ASC|DESC (默认ASC 升序)】【LIMIT 数量】
事例:
select * from local_device where device_type = '主入口' group by sentryboxid order by localDeviceId asc limit 5;
- UPDATE 修改语句
UPDATE 【修改表名称】 SET 【字段名1 = 字段值1】,【字段名2 = 字段值2】… 【WHERE 【条件语句】】;
update lcoal_parking set name = '测试车场' where localParkingId = 1;
- DELETE 删除语句
DELETE FROM 【表名称】【WHERE 条件】;
删除语句如果后面不加条件语句,就是清空整张表。
delete from local_parking where localParkingId = 1;
- 模糊查询
模糊查询的关键字是LIKE ,使用在where 后面作为查询条件。
like 匹配/模糊匹配,会与 % 和 _ 结合使用。
'%a' //以a结尾的数据
'a%' //以a开头的数据
'%a%' //含有a的数据
'_a_' //三位且中间字母是a的
'_a' //两位且结尾字母是a的
'a_' //两位且开头字母是a的
查询以 java 字段开头的信息。
SELECT * FROM position WHERE name LIKE 'java%';
查询包含 java 字段的信息。
SELECT * FROM position WHERE name LIKE '%java%';
查询以 java 字段结尾的信息。
SELECT * FROM position WHERE name LIKE '%java';
Navicat 使用
Navicat 是我们经常使用的Mysql的图形化工具。
- 创建连接
- 创建数据库(常用的编码字符集utf8)
常见错误集
-
找不到数据库表
报错信息:Table 'cldcyf.local_parrr' doesn't exist;
解析:cldcyf 代表数据库名 local_parrr 代表表名
解决方法:创建表
-
找不到字段
报错信息:Unknown column 'a' in 'where clause';
解析:查询条件的a 找不到字段
解决:查看from后面的表名,在对应表中添加字段
-
字段太长
报错信息:Data too long for column 'name' at row 1;
解析:字段 name 的长度太长
解决:修改from后面表明的name的字段长度
-
超出值的范围
报错信息:Out of range value for column 'ifChargeFee' at row 1;
解析:字段 ifChargeFee 超出值的范围,这种一般是数值太大导致。
解决:修改该字段长度
-
查询多条数据异常
报错信息:org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2
解析:需要查询一个或零个结果,但查询到两个,这个一般是代码抛出的异常错误,原因就是代码中需要查询单个结果,但数据库中符合条件的有两条及以上。
解决:判断日志上下文,一般报错上方会有逻辑日志打印,例如下方错误解析:报错为查找到两条符合结果,上文中打印了是由于优惠券信息异常导致,是本地收到云端下发的优惠券信息,一般查找字段优惠券表的主键:merchantCouponId,对应到本地端为local_merchant_coupon的cloudId ,然后查询数据库该表的cloudId字段‘306188’,查询到两条结果。
-
不允许为空值
报错信息:Field 'name' doesn't have a default value;
解析:name字段没有一个默认值,一般是因为代码逻辑没有传值,或则该表的字段勾选不允许为空
解决:1、代码修改 2、去掉字段不是null的勾选(依据实际情况)
最后,本文章仅供个人基础学习使用,如果问题欢迎讨论!