目录
一、MySQL的安装(以5.7版本为例)
1. 一路默认安装即可,注意root密码。
2.配置环境变量
3.登录数据库
二、指令
1.数据库
2.数据表
3.约束
4.增删改查
1>查
2>增
3>改
4>删
5.数据库用户
6.外键
1>创建添加外键
2>删除外键
7.常用函数
8.特殊数据类型
1>datetime
2>enum
知识点虽然简单,但是比较多,所以写一篇博客将MySQL的基础写出来,方便自己以后查找,还有就是分享给大家
一、MySQL的安装(以5.7版本为例)
1. 一路默认安装即可,注意root密码。
2.配置环境变量
C:\Program Files\MySQL\MySQL Server 5.7\bin
3.登录数据库
mysql -u root -p
二、指令
1.数据库
show databases; | 显示所有数据库 |
create database 数据库名 charset=utf8; | 创建数据库 |
use database 数据库名; | 使用数据库 |
drop database 数据库名; | 删除数据库 |
select database(); | 查看当前使用的数据库 |
show create database 数据库名; | 查看创建数据库的sql语句 |
2.数据表
show tables; | 显示所有数据表 |
create table 表名(列名1 数据类型 约束1 约束2 约束3, 列名2 数据类型 约束1 约束2 约束3 ); | 创建表 |
desc 表名; | 查看表结构 |
drop table 表名; | 删除表 |
alter table 表名 drop 列名 ; | 删除列 |
alter table 表名 add 列名 数据类型 约束1 约束2 约束3 ; | 添加列 |
alter table 表名 change 列名 新列名 数据类型 约束1 约束2 约束3 ; | 修改列 |
3.约束
primary key | 主键 |
not null | 非空 |
unique | 唯一 |
auto_increment | 自增长,每次加1 |
default 默认值 | 列的默认值 |
foreign key | 外键,与其他表关联,是其他表的主键 |
4.增删改查
1>查
普通查询 | |
select * from 表名; | 查询表中所有数据 |
select 列1, 列2 from 表名; | 从表中查询相应的列 |
select 列1 as 别名, 列2 as 别名 from 表名; | 从表中查询相应的列,以别名形式显示 |
条件查询 | |
select * from 表名 where 条件; | |
= < > >= <= != | 比较运算符 |
and or not | 逻辑运算符 |
in is | 成员运算符 |
between start and end | 范围比较 |
like | 模糊查询 %为多个字符,-为1个字符 |
关联查询 | |
select * from 表1 where id in (select pid from 表2); | 嵌套查询,将从表2查找到的数据,作为查找表1的条件 |
select * from 表1,表2; | 笛卡尔连接,将表1的每个数据分别与表2的所有数据连接 |
select A.a,A.b,B.a,B.b from 表A inner join 表B on 连接条件; | 内连接。作为有关联的表A和表B,当连接条件成立时。查询表A的列a,列b,表B的列a列b。 |
select A.a,A.b,B.a,B.b from 表A left join 表B on 连接条件; | 左外连接。作为有关联的表A和表B,当连接条件成立时。查询表A的列a,列b,表B的列a列b。并且以表A为主表,表B中若没有符合表A的数据,则补Null |
select A.a,A.b,B.a,B.b from 表A right join 表B on 连接条件; | 右外连接。作为有关联的表A和表B,当连接条件成立时。查询表A的列a,列b,表B的列a列b。并且以表B为主表,表A中若没有符合表B的数据,则补Null |
select A.a,A.b,B.a,B.b from 表A left join 表B on 连接条件 union select A.a,A.b,B.a,B.b from 表A right join 表B on 连接条件; | 全连接。即 左外连接和右外连接的并集 |
去重,分组,排序,分页 | |
select distinct 列1 from 表名; | 以列1为参考去重 |
select * from 表1,表2; | 笛卡尔连接,将表1的每个数据分别与表2的所有数据连接 |
select 列1, cout(*) from 表名 group by 列1; | 将列1分组并统计每个组的个数 sum(列名),max(列名)。。。 |
select * from 表名 order by (列1) desc/asc; | 以列1进行desc降序排列/asc升序排列 也可以分组后再进行排序 |
select * from 表名 limit start ,end | 从start个开始,往后查询end个数据为第一页 第n页公式为:limit (n-1)end , end |
select A.a,A.b,B.a,B.b from 表A left join 表B on 连接条件 union select A.a,A.b,B.a,B.b from 表A right join 表B on 连接条件; | 全连接。即 左外连接和右外连接的并集 |
2>增
insert into 表名 values(列1数据,列2数据......),(列1数据,列2数据......); | 表在定义时有几列便写几个数据 |
insert into 表名(列a, 列b) values(数据a,数据b); | 指定插入的数据的列 |
insert into 表名 set 列1 = 值1,列2 = 值2 ; | 指定插入数据的列 |
3>改
update 表名 set 列1 = 值1 where 条件; | 根据条件修改行 |
4>删
delete from 表名; | 清空列表 |
delete from 表名 where 条件 | 根据条件删除行 |
5.数据库用户
root用户+其他用户:%代表所有ip都可以访问(root除外)
create use 用户名@'%' identified by '密码'; | 创建用户 |
grant 权限1 on 数据库1.表1 to 用户名@'%' grant all on *.* to 用户名; | 分配数据库1中的表1的权限1给用户; 分配所有数据库的所有表的所有权限给用户; |
drop 用户名@'%'; | 删除用户 |
alter user 用户名@'%' identified by '新密码 ' | 修改用户密码 |
6.外键
1>创建添加外键
constraint 外键索引名 foreign key (本表列名) references 引用表名(列名)on update cascade on delete cascade;
cascade:级联,在删除和修改时同步更改。
2>删除外键
alter table 表名 drop foreign key 外键索引名;
7.常用函数
select database(); | 查看当前数据库 |
select user(); | 查看当前用户 |
select version(); | 查看MySQL版本信息 |
select now(); | 查看当前的日期和时间 |
select curdate(); | 查看当前日期 |
select curtime(); | 查看当前时间 |
select unix_timestamp(); | 查看当前时间戳 |
8.特殊数据类型
1>datetime
注册时间: register_time(列名) datetime(数据类型) default current_timestamp;
更新时间:update_time(列名) datetime (数据类型) default current_timestamp on update current_timestamp;
2>enum
枚举类型:只能从给出的特定的值中选择。
性别: sex(列名) enum('男','女','保密') default '保密';
感谢观看,如有错误,请留言指正。