文章目录
MySQL(关系型数据库)
——用来持久化数据(SQL语言)
SQL (Structure Query Language) 结构化查询语言
- DDL (Data Defination Language) 维护存储数据的结构
>> create, drop, alter 建、删、修改
- DML(Data Manipulation Language) 对数据进行操作
>>增 insert 删 delete 查select 改 update
- DCL (Data Control Language) 负责权限管理和事务
>>grant, revoke,commit
注意:
- sql语句不区分大小写,不区分单双引号
- ` 反引号用于库名,表名,字段名可以不写,写上则可以将关键字当作库名,表名,字段名。例如:
use `insert
当命令行出现-> ,‘>,“>
时:
-> 表示缺少;
‘> 表示缺少’
“> 表示缺少”
一 常用数据类型:
bit,tinyint, int, decimal(M,D)
varchar(size),text,blog
datetime, timestamp
参考博客:Mysql数据类型
二 库操作:
create database if not exists students character set utf8mb4;
show databases;
use 库名;
select database(); 查看当前使用的库
show create database 库名; 查看建库语句
drop database if exists students; 删库
三 表操作:
create table student(id int,
name varchar(20) comment ‘姓名’,
birthday timestamp); 创建表
show create table 表名; 查看表结构
desc 表名; 查看表结构
show tables;
drop table if exists student;
注意:
comment 为字段说明
四 MySQL表的增删改查DML:
CRUD:create(增加),retrieve(查询),update(更新),delete(删除)
对应:insert select update delete
1 insert
insert into student values(1,’张三’,1203);
insert into student(id,name) values(1,’张三’),(2,’张2’),(1,’张3’);
2 select
基本查询:SELECT子句、FROM 子句、WHERE 子句、ORDER BY 子句、LIMIT 子句
SELECT 字段 FROM 表名称 WHERE 条件 ORDER BY 排序 LIMIT 子句;
字段处可以为:
“*” ,表达式 ,字段名称 ,聚合函数 ,函数
(1)横向筛选,列
1)全列查询:
select * from student;
2)指定列查询:
select id,name from student;
3)指定别名:
select name as ‘姓名’ from student;
4)在select后面列前使用distinct可以消除重复的行:
select distinct id from student;
5)排序ORDER BY, 升序asc(默认)降序desc:
select id,name from student order by id desc;
字段1相等则按字段2进行排序
select id,name from student order by id desc,score asc;
6)查询字段可以为表达式
select id+10 ‘排序’,10 from student;
注意:
select id+10 ‘排序’,10 from student;
‘排序’相当于给id重命名,查询出的结果id都进行+10操作。
(2)条件查询,where 纵向筛选 行
- between 3 and 8; (闭区间)
- in(1,23,4);
- is null; is not null;
- like ;
- %表示任意多个,_表示任意一个字符
- 逻辑运算符and or not
>= <= 等于:= <=> 不等于:!= <>
= 等于,NULL 不安全,例如NULL = NULL 的结果是NULL
<=> 等于,NULL 安全,例如NULL <=> NULL 的结果是TRUE(1)
select id from student where id between 1 and 3; 闭区间
select id from student where id in(2,3);
select name from student where name like ‘张%’;
select name from student where name is not null;
(3)分页查询 limit
:每页显示2条信息,从offset开始,起始下标为0
select id,name from student where id>10 order by id limit 2 offset 0;
select id,name from student where id>10 order by id limit 2 offset 2;
注意:
- limit要和order by 搭配使用
- 顺序:where >>> order by >>> limit
- 排序时null视为最小的数据
- 没有order by就说明没有顺序
3 update 修改
update student set name=’李四’ where id=1;
update student set name=’张三’, age=18 where id=1;
4 delete删除
delete from student where id=1;
truncate 表名称; (重置表)
delete from student; 删除整张表的数据
五 DDL (Data Defination Language) 维护存储数据的结构
(1)修改表-添加字段
alter table 表名 add 列名 类型;
alter table students add birthday datetime;
(2)修改表-修改字段:重命名版
alter table 表名 change 原名 新名 类型及约束;
alter table students change birthday birth datetime not null;
(3)修改表-修改字段:不重命名版
alter table 表名 modify 列名 类型及约束;
alter table students modify birth date not null; #date类型
(4)修改表-删除字段
alter table 表名 drop 列名;
alter table students drop birthday;
(5)删除表
drop table 表名;
drop table students;
(6)删除库
drop database studentinfo;
六 Mysql中的函数
参考博客:Mysql中的函数汇总