mysql交互
mysql服务器端、客户端安装
服务器端安装
在ubantu里,保证能联网
在命令行里直接输入
sudo apt-get intall mysql-server
该操作会直接到网络上下载,在此期间会提醒你设置密码,根据提示设置Mysql密码即可
如果显示没有找到显示的包,是软件包源的问题,
我们将源替换为阿里的源
(1)终端执行命令:sudo chmod 777 /etc/apt/sources.list 更改文件权限使其可编辑;
(2)执行命令: vi /etc/apt/sources.list 打开文件进行编辑;
(3) 将里面的内容替换为
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
(4) 保存退出
(5) 在终端中输入sudo apt update更新源
查看是否安装成功
通过查看进程中是否存在mysql服务
ps ajx | grep mysql
开启服务:sudo service mysql start
停止服务:sudo service musql stop
重启服务:sudo service mysql restart
配置
配置文件目录为/etc/mysql/mysql.cnf
进入mysql.conf.d目录
打开mysqld.cof文件
主配置如下:
可以设置服务器相关的端口号、ip等
客户端安装
sudo apt-get install mysql-client
直接安装即可
数据库的使用
mysql -u用户名 -p密码
数据类型和约束
常用数据类型
- 整形:int
- 小数:decimal
- 无符号约束:unsigned
- 日期时间:
date:4字节,“2000-01-01”
time:3字节,“15:00:00”
datetime:8字节,“2000-01-01 15:00:00”
year:1字节:‘2000’ - 枚举类型:enum:该类型用于对某一种进行多个列举,在使用时只能使用列举的数据
- 字符类型
char:该类型如果指定了长度,不管数据的使用是否到达了该长度,系统会默认你为设置的那个长度
varcahr:不管你设置了多长,系统会默认你数据长度为多长该空间就是多长
text:用于存储大文本数据
常用约束
约束用于对该字段进行限制
- primary key:主键约束,用将该字段设置为主键
- mot null:非空约束,用限制该字段不能为空
- unique:唯一约束:用于限制该字段内容不允许重复
- 默认值约束:default 默认值
- 自动生长约束:auto_increment
- foreign key:外键约束,用于对关系字段进行约束,一般用于与其他表建立联系,该字段存储的内容为其他表的主键,该约束限定了该表中的数据,都可以在其他表中找到
用法: foreign 本表名(外键字段) references 外表名(外表主键字段))
数据库操作
-
链接数据库
mysql -u用户名 -p密码
mysql -u用户名 -p -
查看所有数据库
show databases; -
创建数据库
create database 数据库名; -
查看创建当前数据库的语句
show create database 数据库名
-
使用数据库
use 数据库名; -
查看当前使用数据库
select database(); -
删除数据库
drop database 数据库名;
数据表操作
-
查看数据库中所有表
show tables; -
创建表
create table 表名(字段 类型 约束, [字段, 类型,约束]); -
查看创建表语句
show create table 表名;
-
查看表结构
desc 表名; -
删除表
drop table 表名;
修改表
-
添加字段
alter table 表名 add 字段名 类型; -
修改字段不,添加约束或修改类型
alter table 表名 modify 字段名 类型或约束; -
修改字段,重命名
alter table 表名 change 原字段名 新字段名 类型 约束; -
删除字段
alter table 表名 drop 字段名;
数据的增删改查
添加
-
全列添加
insert into 表名 values(值); -
部分添加
insert into 表名(字段) values(值) -
多行添加
insert into 表名(字段) values
(值),
(值); -
将使用select查询到的数据添加
insert into 表名 (select * from );
修改
update 表名 set 字段=值,字段=值 where 条件
删除
-
物理删除
delect from 表名 where 条件;
该删除是将该数据直接从数据表中删除 -
逻辑删除
该删除是在逻辑上将该表删除,实际上该数据还存在表中
使用两个bit类型的字段表示数据是否显示,
要删除某一条数据是只需要将该数据的显示字段设置为0,不显示字段设置为1;
就可以表示该数据已经被删除
查询
普通查询
select * from 表名;查询该表全部数据
select 字段 from 表名;查询指定字段数据
select 字段 as 别名 from 表名;为字段起别名
select 字段 from 表名 as 别名;为表起别名
select distinct 字段 from 表名;去除字段的重复行
条件查询
-
select * from 表名 where 条件;
-
可以使用的条件判断符
<、>、<=、>=、<> != -
逻辑运算符
and :当两边条件都满足是为真
or :当两边有一边满足时为真
not:取反,将条件结果取反
模糊查询
like
用法 : name like “王%”:查询姓王的学生
%:替换一个或多个
_:替换一个
rlike 正则:用于匹配正则
范围查询
-
in(范围)
用于匹配字段是否在该范围内,在则匹配
例:name in (“张三”,”李四“,”王五“); -
not in
不在则匹配 -
空判断
is null
字段为空的满足
排序查询
将查询到的结果按照升序或者降序进行排序
select * from 表名 order by asc/desc;
order by 排序字段
asc:升序
desc:降序
聚合函数
- count:用于将查询到的结果进行统计计数
- max:查询结果中最大值
- min:查询结果中最小值
- avg:求结果中的平均值
- sum:用于将查询到的结果进行求和
分组查询
用于将不同类的数据进行分组,将同一类的数据放在同一个组内,方便进行操作
group by 分组字段
通常配合聚合函数使用
例:统计男女生的数量分别多少人
SELECT gender,COUNT(*) AS 数量 FROM student GROUP BY gender;
分页查询
用于表示在该页显示多少条数据,从哪条开始显示
limit 开始位置,数量;
例:查询前五个数据
select * from student limit 0,5;
表示从第一条数据开始查询五个
链接查询
当查询的需求要用到两张或多张表时则需要用到链接查询,
链接顾名思义就是将两张或
- 左链接
关键字:left join on
语句:select * from 表名a left join 表名b on 建立关系的字段;
左连接,左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
左右表根据left关键字的位置定义 - 右链接
关键字:right join on
语句:select * from 表名a right join 表名b on 建立关系的字段;
右连接,右表的记录将会全部表示出来,而左表只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
我们一般不使用该关键字,当需要使用右连接时我们一般使用左连接将数据比表的位置交换 - 内链接
关键字:inner join on
语句:select * from 表名a inner join 表名b on 建立关系的字段;
说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。
自链接
顾名思义自己链接自己
通常用在一张表中存在关系的时候
例如:一张表中存在,级别_id,上一级字段_id
要想查找每个级别的上一级
select * from 表名 as 别名a inner join 表名 as 别名b on 别名a.级别_id = 别名b.上一级字段_id;