mysql学习记录
-
数据库分类
关系型数据库sql包括:mysql,oracle,sql server,db2,SQLlite
通过表和表之间,行和列之间的关系进行存储。
非关系型数据库包括:redis,MongDB
根据对象的属性存储 -
数据库命令
mysql -u root -p123456——连接数据库
update mysql.user set authentication_string=password('123456') where user='root' and host='localhost';——修改数据库密码
flush privileges;——刷新权限
show databases;——查看所有数据库
use 数据库名;——切换数据库
show tables;——查看该数据库中所有的表
describe 表名;——查看表的具体信息
create database 数据库名;——创建一个数据库
drop database 数据库名;——删除一个数据库
- sqlyog使用
--创建表
create table [if not exist] `表名`(
`字段名` 字段类型 [属性][索引][注释],
primary keay(`字段名`)
)engine=innodb default charset=utf8mb4;
--修改表
alter table 旧名 rename as 新名;——改名
alter table 表名 add 字段名 列属性;——增字段
alter table 表名 modify 字段名 列属性;——该字段(不能改字段名)
alter table 表名 change 旧字段名 新字段名;——改字段名
alter table 表名 drop 字段名;——删字段名
alter table if exists 表名;——删表
--添加外键
alter table 表名 add constraint `FK_该表字段名` foreign key (`该表字段名`) references 外表表名(对应的表的主键字段名);
--DML
--插入语句
insert into 表名([字段名1,字段名2,···]) values ('值1','值2');
--主键因可自增所以可以不写,如果只写值,则会一一匹配。每个字段括号对应值的括号。
--修改语句
update 表名 set 字段名1=() where 判断条件;--判断条件返回布尔值
/*用于where的操作符,between and ,and,or*/
--删除语句
delete from 表名 where 判断条件;--判断条件一定要仔细,避免删库跑路
truncate 表名;
/*两者都不能删除结构,truncate相当于重新建表,自增会清零,delete只是单纯删除数据*/
--DQL
--查询语句
select 字段名 from 表名;
as 可用在字段名后,为其其别名
--去重语句
select distinct 字段名 from 表名;--除去重复的数据,只输出一行
- 模糊查询
运算符 | 语法 | 描述 |
---|---|---|
is null | a is null | 如果a为null,为真 |
is not null | a is not null | 如果a不为null,为真 |
between and | between a and b | 如果在[a,b]之前,为真 |
like | a like b | a如果能匹配b为真 |
in | a in (a1,a2) | 括号中必须是具体值,如果a在其中,为真 |
% | % | 代表0到任意个字符 |
_ | _ | 代表一个字符 |
- 联表查询(join)
操作 | 描述 |
---|---|
inner join | 表中至少有一张表匹配就返回值 |
left join | 从左表中返回所有值,在右表中补充坐标查询不到的数据 |
right join | 从右表中返回所有值,在右表中补充坐标查询不到的数据 |
多张表查询时先查两张表,然后一张一张的查询