mySQL的安装和基础使用及语法指南
一、MySQL的安装、配置及卸载
1、安装
2、配置
3、mySQL5.1的完全卸载
4、MYSQL环境变量的配置
二、MySQL控制台doc窗口的操作命令
1、对仓库databases的操作
2、对表格的操作
三、MySQL中数据类型和约束
1、数据类型
2、约束
四、MySQL客户端的安装
1、安装
五、Navicat的基础使用指南
1、连接到数据库
2、对仓库的操作:
3、对表格的操作
4、从excel导入数据到表格:
六、常用SQL语句:
(一)单表查询
1、查询语句基本格式:
2、基本用法:
3、模糊查询(like, not like)
4、比较查询(<,>,>=,<=,!=,<>)
5、逻辑查询(and, or)
6、集合查询(in,not in)
7、区间查询(between…and…)
8、非空查询(is null, is not null)
9、排序(order by)
10、去重(distinct)
11、分组(group by)
12、聚合函数(max(),min(),avg(),sum(),count(*))
(二)多表查询
1、嵌套查询
2、等值连接
3、内连接(inner join )
4、外连接
(三)数据的增、删、改功能
1、增加表格的内容(insert into…values…)
2、删除表格内容(delete)
3、修改表格内容(update)
4、SQL语法中的存储过程及if语句的使用
一、MySQL的安装、配置及卸载
1、安装
我安装的版本是mysql-essential-5.1.55-win32.msi;大部分选择默认,继续下一步即可,具体步骤可参见下图:
选择Typical典型安装即可:
安装路径可默认也可自定义:
此处勾选上configure the MYSQL Server now可接着对MYSQL进行配置
2、配置
此处默认路经即可,也可自定义:
端口号如果选择3306后报错,可换下边的其他端口号,但最好要记住自己的端口号,因为连接数据库时需要。同时勾选上Add firewall exception for this port。
此处Character set选择utf8:
此处为用户密码设置,如果后边的Root选了就可以从其他电脑以root身份登录
点击上边的Execute执行后至少要出现下图的前三个勾,数据库才能正常运行:
3、mySQL5.1的完全卸载
此主要给那些电脑上原本已经安装过MYSQL后出现问题再重新安装需对原来的安装进行完全卸载的一个参考。
(1)、从控制面板里的卸载程序中对MYSQL的主体程序进行卸载;
(2)、删除MySQL文件夹下的my.ini文件,如果备份好,可以直接将文件夹全部删除
(3)、看看注册表里这几个地方删除没有
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Application/MySQL 目录删除
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Application/MySQL 目录删除
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Application/MySQL 目录删除
(4)、删除此用户数据目录下的文件
C:/Documents and Settings/All Users/Application Data/MySQL
如果这里还有MySQL的文件,必须要删除
注意:Application Data这个文件夹是默认隐藏的,需要打开个文件夹选择菜单栏工具→文件夹选项→查看→隐藏文件和文件夹 一项选上 显示所有文件和文件夹 确定
4、MYSQL环境变量的配置
只有配置了环境变量,才能在DOC控制台对数据库进行操作。
右键点击计算机—>属性—>高级设置—>环境变量—>在系统变量中找到Path,选择—>编辑—>在变量值最前边加上 C:Program Files (x86)MySQLMySQL Server 5.1in;
注意分号不能少,如果MYSQL安装时选择的是默认路径即可用上边给的路径,如果自定义了路径则需用自己的安装路径,并在最后加上in;
添加上后点击确定。
接下来通过doc窗口进行验证:
开始—>运行—>输入cmd—>输入mysql -uroot -p —>回车—>如果能出现Enter password: 提示,输入密码后出现如下提示即表示配置成功:
二、MySQL控制台doc窗口的操作命令
此主要给感兴趣的一个参考,也有方便学习的循序渐进,如果只想学习通过客户端对数据库进行操作,可跳过此部分。
1、对仓库databases的操作
查看所有的数据仓库:show databases; (如下图,新安装的mysql一般都包含以下几个仓库,注意每个命令后的分号不可少)
新建仓库: create database newname; (newname即为你自己创建的仓库名)
删除仓库: drop database newname; (友情提示:系统自带的三个仓库最好不要删,否则会有意想不到的事情发生)
进入仓库:use newname; (即使用此仓库)
2、对表格的操作
对表格进行操作时必须要先进入一个仓库
查看仓库内的所有表格:show tables;
创建新表格:create table xxb(xingming varchar(20) primary key, nianling int not null,xingbie varchar(10) not null);
创建表格的同时必须要创建至少一个列标题(xingming和nianling都是列标题),多个列标题之间以逗号分隔;创建每个列标题时可同时添加两个参数用于限定这一列内容的格式或要求,这两个参数依次为:数据类型、约束(具体解释可见后文),也可不加参数,参数之间以空格分隔。所有参数以一个圆括号包围。
删除一个表格:drop table xxb;
查看一个表格的结构:desc xxb; (如果上一步执行删除了请再建一个再查看…)
修改表格中某一列标题属性:alter table xxb modify xingming int;(xxb为表名,modify后跟要修改的列标题及属性)
给xxb表增加一列:alter table xxb add jiguan varchar(30) not null;
删除表格中的某一列:alter table xxb drop jiguan;
三、MySQL中数据类型和约束
1、数据类型
常用的数据类型:整数(int),浮点数(float),字符串(char),可变字符串(varchar),时间(timestamp)。
创建列标题时一般在数据类型后边加括号对数据类型进行修饰。上边的数据类型除了varchar之外都可以不加修饰,因为它有默认修饰。
int(2)表示两位整数;
float(3)表示精确到小数点后三位;
char(4)表示四位的字符串,如果不足四位则以空格充填;
varchar(10)表示最大10位的字符串,在10以内的都可以;
2、约束
约束主要对一个列进行属性方面的修饰,常用的约束有:
主键(primary key),外键(foreign key),非空(not null),唯一(unique),范围(enum),默认(defalt)
主键:唯一且不能为空,一般一个表格都需指定一个主键;
外键:主要用于和主键关键,有一个外键就必须在其他表存在一个相应的主键
非空:不能为空
唯一:可以为空,但有且最多只能有一个为空;
范围:指定了输入内容的范围,如枚举“男”、“女”;
默认:一般用于默认时间;
四、MySQL客户端的安装
1、安装
此处示范的是navicat8客户端工具的安装。完全用默认的下一步即可,具体可参考下图:
最后注册时可试试此注册码:NAVJ-W56S-3YUU-MVHV。
五、Navicat的基础使用指南
1、连接到数据库
点击右上角的connection,如上图,连接名字与数据库无关,自定;
IP处如果mysql安装本机则用默认的localhost即可,如果用其他服务器上的数据库则写入相应的ip地址;
接口是安装mysql时确定的,默认的为3306,如果安装时作了修改则填自己修改的的接口号;
用户名和密码为当时自己设置的;
2、对仓库的操作
创建新仓库:
删除仓库:选中想要删除的仓库—>右键—>drop database即可
3、对表格的操作
新建:
选中想要使用的仓库—>双击—>选中Tables—>右键—>new table,然后根据出现的图形界面进行相应选项的设置,下图红框内的选项为对表格内容的操作,依次为:增加、插入、删除;表格框架设置好之后点击save保存即可
删除:
选中想要删除的表格—>右键—>delete table 即可。
4、从excel导入数据到表格
选中想要导入的表格—>右键—>import
选择想要导入表格的格式,最好是2007以前的xslx格式的
选择图中位置进行excel表格的选择,当然也可以直接输入文件地址;后点击next:
在图在红框位置选择要导入的excel表格和表格内数据位置的sheet;
First row 表示从第几格开始导入,一般excel第一行都是名字,所以一般从2开始
到这一步将excel表格内的数据依次对应到要导入数据库的表格的项目列
点击上图的start后进行导入,如果出现下图的Successfully提示则表示导入成功。
5、SQL语句的写入和执行
在Tables下边找到Queries—>选择—>New Query
即可在出现的窗口中写入SQL语句,此处前边在控制台doc窗口的命令都可以执行。且可以只执行一部分命令,选中想要执行的语句—>右键—>Run Selected即可运行这部分语句(如果点击的是左上角工具栏的Run则会运行所有的语句)
如果语句没有错误,则会跳转到另一个窗口提示运行结果(可参考下图):
六、常用SQL语句
我创建了三个表:
学生表(xsb):学号(xh)(主键)、姓名(xm)、性别(xb)、籍贯(jg)、班级(bj)、身份证号(sfzh)、注册日期(zcrq)
课程表(kcb):课程号(kch)(主键)、课程名(kcm)
成绩表(cjb):课程号(kch)(外键)、学号(xh)(外键)、成绩(cj)
(一)单表查询
1、查询语句基本格式:
Select 查找内容
from 查找源
where 查询条件
group by 分组
having 对groupr的补充限定,可对分组后的结果进行条件筛选
order by 对结果进行排序
2、基本用法:
(注意语句中的所有标点都必须是在英文输入状态下的标点)
例:查询张三的身份证号
select sfzh
from xsb
where xm=’张三’
语句中除了select 和from是必须的之外,其他选项都是可选的;查询多个项目用逗号分隔(如:select xm,nl),也可以将sfzh写为sfzh as 身份证号 来改变结果显示时的列标题。sfzh可用入“*”代替,表示查询符合条件的所有内容(如下图):
限定条件中’张三’如果是char或者varchar类型的数据则需要用单引号包围,如果是int类型则不需要;
3、模糊查询(like, not like)
将like替换等号,用”%”进行模糊字段限定
如:查询所有姓张的人的身份号和姓名;
select sfzh,xm
from xsb
where xm like ‘张%’
“%”也可以放在前边(‘%张’)表示最后一个字为”张”的项,同样也可以放在两边(’%张%’)表示含有‘张’字的项;
也可以用“_”来限定模糊查询的字符数,如:’张_’,表示姓张且只有两个字的名字;
同样的not like表示不含有。
4、比较查询(<,>,>=,<=,!=,<>)
主要用于对数据的判断,!=和<>都表示不等于。
例:查询所有年龄大于30的所有人的姓名和年龄:
select xm as 姓名,nl as 年龄
from xsb
where nl>30
5、逻辑查询(and, or)
主要用于多个条件的同时使用,and表示必须同时成立,or表示至少有一个成立
例:查询所有姓张和年龄小于30的人的姓名:
select xm
from xsb
where xm like ‘张%’ and nl<30
6、集合查询(in,not in)
表示条件符合某个给定集合的结果,在一定程度上和or类似
例:查询张三和李四的籍贯:
select jg,xm
from xsb
where xm in ('张三','李四')
7、区间查询(between…and…)
一般用于限定两个数据之间的条件,如between 30 and 60
8、非空查询(is null, is not null)
条件为是否为空,如限定查询年龄为空的项: nl is null
9、排序(order by)
排序放在语句的最后,by后跟以哪一项排序,可以再加上desc表示按降序排,同样的asc表示升序,不过可以不定asc,因为排序默认的就是按升序排;
列:查询所有人的姓名和年龄并按年龄的降序排列
select xm,nl
from xsb
order by nl desc
10、去重(distinct)
distinct 后接以什么项为标准进行去重,如果有多个项,以逗号分隔,且要那多个项同时都重复才执行去重;
例:将学生表中的所有人以班级项进行去重
select distinct bj
from xsb
11、分组(group by)
group by与distinct 功能类似,都是将所有相同的项放在一起,不过distinct 只保留这相同的同的一项,而group而保留了所有有项,以便于进行分组计数和操作,还有就是group by 所入的位置和distinct不同,放在了where 之后,具体可参考标准格式。
12、聚合函数(max(),min(),avg(),sum(),count(*))
max()找最大值,必须给定参数
min()找最小值,必须给定参数
avg()求平均值,必须给定参数
sum()求和,必须给定参数
count(*)统计项数,可不给定参数,而用*统计所有内容
例:找出3班中年龄最大人的姓名和年龄
select max(nl),xm
from xsb
where bj=’3班’
(二)多表查询
多表查询就是将具有主外键连接的多个表进行整合查询
1、嵌套查询
以另一个表的查询结查为这个表的查询限定条件,以主外键为桥梁。
例:查询成绩大于80的所有人的姓名:
select xm
from xsb
where xh in (
select xh from cjb
where cj>80)
上例中查询的是xm,所以从xsb查找,不过条件来源于cjb
2、等值连接
将查询所需要的表先用主外键连接起来(相当于合成一个大表),再进行查询
同样查询上边的例子:
select xm
from xsb,cjb
where xsb.xh=cjb.xh and cj>80
结果同上边相同,多个表格来源都需要在from中体现,表格名字之间以逗号连接,主外键连接作为一个条件放在where中任意位置即可。
3、内连接(inner join )
主要用于区分外连接,就是只连接两个表只都存在的项,合成的表格是两个表格同时含有的主外键的交集;上边的等值连接和嵌套连接的本质都是内连接;
同样查询上边的例子:
select xm
from xsb inner join cjb
on xsb.xh=cjb.xh
where cj>80
如果还有第三个表的连接,则直接在xsb.xh=cjb.xh后边加 inner join kcb on cjb.kch=kcb.kch
4、外连接
包括左连接(left join)和右连接(right join)
语法格式和内连接一样,左连接就是以left join左边表格的所有项为标准为进行连接,即使右边的表格不存在左边表格中的某一项,也会将值设置为null进行添加;同理,右连接就是以right join 右边的表格为标准进行连接。
例:查询所有没有统计到成绩的人的姓名和学号
select xm,xsb.xh
from xsb left join cjb
on xsb.xh=cjb.xh
where cj is null
如果查询的结果项中含有两个表都含有的相同名称的主外键,则需在前边加上表名进行查询来源的限定,如上边的xsb.xh。
(三)数据的增、删、改功能
以仓库和表格设计的修改语句可参考前边doc窗口的命令,都是可以执行的
1、增加表格的内容(insert into…values…)
例:insert into xsb (xh,xm,xb,jg)
values(015,’赵四’,’女’,’江西’)
插入一条数据时,一个表中的约束为主键和非空约束的必须给定一个值,其他的则可选输入;如查xsb后边给了要插入参数的名字,这些名字可以是任意顺序,之间以逗号分隔,下边的值的顺序要和自己自定义的数据顺序一致。
前边的xsb后边也可以不跟列标题名,但插入的数据顺序必须是表格从左到右依次的内容。如:insert into jcb
values(1,005,98)
2、删除表格内容(delete)
从仓库内删除一个表格:drop table 表名
清空一个表格内的所有内容:delete from 表名
删除其中的某几项:delete from 表名 where 限定条件
3、修改表格内容(update)
update 表名 set 列标题名=修改值 where 查找限定条件;
4、SQL语法中的存储过程及if语句的使用
此可兴趣学习,可参考http://www.cnblogs.com/aland-1415/p/6628045.html
5、json查询
mysql5.7以上支持json的操作,以及增加了json存储类型,
查询:select * from log where data->'$.id' = 142;
select * from logs where JSON_CONTAINS(data)
创建json json_array 创建json数组 json_object 创建json对象 json_quote 将json转成json字符串类型 查询json json_contains 判断是否包含某个json值 json_contains_path 判断某个路径下是否包json值 json_extract 提取json值 column->path json_extract的简洁写法,MySQL 5.7.9开始支持 column->>path json_unquote(column -> path)的简洁写法 json_keys 提取json中的键值为json数组 json_search 按给定字符串关键字搜索json,返回匹配的路径 修改json json_append 废弃,MySQL 5.7.9开始改名为json_array_append json_array_append 末尾添加数组元素,如果原有值是数值或json对象,则转成数组后,再添加元素 json_array_insert 插入数组元素 json_insert 插入值(插入新值,但不替换已经存在的旧值) json_merge 合并json数组或对象 json_remove 删除json数据 json_replace 替换值(只替换已经存在的旧值) json_set 设置值(替换旧值,并插入不存在的新值) json_unquote 去除json字符串的引号,将值转成string类型 返回json属性 json_depth 返回json文档的最大深度 json_length 返回json文档的长度 json_type 返回json值得类型 json_valid 判断是否为合法json文档