说明:
本来是已经在看Mybatis了,但是...考虑到要手写sql语句,并且hibernate里面非全映射的时候,也要自己写hql语句,并且以后真正上项目以后,还要搞sql优化,所以全面深入学习mysql成为五月底的目标.
1.配置
打开my.ini文件,里面有一些配置,其中[mysql]是客户端配置,[mysqld]是服务端配置
这里可以看到之前设置的port,也可以在这里修改port
这里还可以详细查看安装目录:basedir
数据库的数据最终存储的目录:datadir
修改字符集character-set-server
等等很多配置都写在了这个my.ini文件
如何启动和停止MySQL的服务
2种,一个是cmd,一个是任务管理器的服务
informa_schema
mysql
performation_schema
test(空)
默认的就有4个库
...之前居然随意操作这些库...
2.一些指令
指令:
打开指定库-->use + 库名
查看有哪些表-->show tables
合成-->show tables from 库名
他这里的demo居然表示的,还是其在test库,没有去mysql库
查看在哪个库-->selest database();
查看表的内容-->desc + 表明
插入-->insert into 表名(id,name) values(2,"rose")
修改-->update 表名 set + 属性名=""
上面这些都是基础中的基础
3.常见的命令
常见命令总结
1.查看所有数据库
show databases;
2.打开指定库
use 库名;
3.查看当前库的所有表
show tables;
4.查看其它库的所有表
show tables from 库名;
5.创建表
create table 表名(
列名 列类型,(注意这里是逗号)
列名 列类型,
列名 列类型
)
6.查看表结构
desc 表名;
4.Mysql语法规范
mysql语法规范
1.不区分大小写,建议关键字大小,表名,列名小写
2.每条命令用分号结尾
3.每条命令,可以根据需要进行换行,缩进
4.注释
单行注释:
1.#注释文字
2.-- 注释文字(注意这里有空格)
多行注释:/*注释文字*/
sqlyog...感觉没Navicat给力
之前看到的.sql文件其实就是装的sql语句的文本文件....
5.基础的东西...
1.基础查询
SELECT 查询列表 FROM 表名;(从一个表中查询一个列里面的东西)
查询列表可以是:1.表中的字段,常量,表达式,函数,这里查询的结果是一个虚拟的表格
同时查多个字段的话,用逗号隔开,这里没有顺序要求
查询所有,用*代替要查询的字段名
2.细节补充,在查表的时候,肯定是要先打开库名的,这里tool上面其实已经显示打开了
当需要查询的字段跟关键字一样的时候,这时候用着重号`来表示,这是一个字段名,而不是关键字
执行sql,就是选中,然后点击运行...
6.别名
起别名
提高可读性,如果字段有重复的情况,那么别名可以区分开来
AS 或者 直接空格+别名,如果别名带特殊符号,那么此时,最好给别名带上双引号或者单引号,这里应该还是经常会用到的
7.去重
加上DISTINCT关键字
8.Mysql +作用
mysql里面的+作用,只能当做运算符(两个操作数都为数值型)
这里还可以 'string' + 数值型,这里可以进行转换,如果可以转换成功就做加法运算,否则将字符型转换成0,还有,只要操作数一方为null,那么结果直接就是null
9.CONCAT
拼接string,如果一个操作数为null,那么结果就是null
10.IFNULL
一个函数,有点类似java里面的defaultValue,就是判断要一个string是否为null,如果为null的话,那么后面会设置一个默认值
11.条件查询
其实就是SELECT FROM WHERE,where后面对这个sql语句的查询写一个条件而已
sql里面的运算符,不等的写法是<>
12.模糊查询
LIKE-->WHERE + 搜索的字段 +LIKE + '%a%',LIKE需要经常配合通配符来使用
通配符这里有:
1.%任意数量的字符,包括没有字符
2._占位符
3.\转义
这里顺带说一下ESCAPE
如果不使用转义的话,在LIKE里面随便定义一个占位符,然后在后面加一个关键字ESCAPE,关键字后面注明这个自定义的占位符即可
BETWEEN AND-->WHERE后面写一个条件,注意不能颠倒顺序,包含临界值
IN-->in ('a','b','c' ),判断某字段的值是否属于列表中的某一项,in列表的值要统一或者兼容这里是不支持通配符,因为这里in其实就是判断是否等于,而不是之前LIKE里面用通配符!
IS NULL-->
字段 = NULL,是无法判断的,这个时候应该用:
字段 IS NULL
还有就是IS NOT NULL
这里只有NULL是用于IS的,其他的判断条件都是用=
13.安全等于
<=>,这里的安全等于也可以判断null值,所以安全等于既可以判断普通值,也可以用于判断null值,明显IS比<=>的可读性要强
14.ORDER BY 排序查询
格式:
ORDER BY 字段名 ASC|DESC(升序或降序)如果不写,默认的是升序
特别注意,这里的ORDER BY 顺序,是可以写2个的,当第一个排序条件好了以后,如果有相同的几个record,那么再按照后面的顺序进行排序
等于说,搞了一个主顺序排列,和次顺序排列
子句,支持单个字段,多个字段,表达式,函数,别名
只有limit放在ORDER BY 后面,除此之外,剩下的都是放在其前面
15.函数
这里讲到是否加FROM表名,是看你SELECT后面的参数是否用到了表里的参数
单行函数:CONCAT,LENGTG,IFNULL等返回一个返回值
分组函数:主要功能是做统计使用,传一组参数,返回一个值,分组函数又称为聚合函数,统计函数
16.字符函数
UTF8下,一个汉字3个字节,GBK的话是2个
UPER LOWER
SUBSTR,这里的用法,与java类似.
特比注意,sql里面的索引是从1开始的
LENGTH()是字符长度,LENGTHB()是该字段的字节长度
INSTR-->返回一个子string在其string里面的起始索引,如果找不到返回0
TRIM-->去空格,或者去除指定的字符: 指定字符 FROM 目标字符串,这里只能去除前后的,中间的无法去除
LPAD-->在目标string左边进行填充,然后会设置一个填充完以后的总字符长度,这里注意,是字符长度,不是string的字节长度,如果设置的总长,比初始string的还小,那么就会从右边开始截断
RPAD-->类似LPAD
REPLACE-->同java
17.数学函数
ROUND-->四舍五入,这里不具体讲
CELL-->向上取整
FLOOR-->向下取整
TRUNCATE(截断)-->一个小数,取几位,这里不进行四舍五入
MOD-->取余,这里看被除数...取余的数的正负只跟被除数有关.......
18.日期函数
NOW
CURDATE
CURTIME
还可以指定具体的YEAR,MONTH,DAY,HOUR,MIN,SEC
STR_TO_DATE
DATE_FORMAT这里有点类似java里面的format,用%之类的符号,替换
这里不一一细讲,到时候直接查资料
19.其他函数
VERSION()
DATABASE()
USER()
这里也不一一细讲,这两天直接把Mysql全部搞定哦