由多张相互关联的二维表组成的数据库
查询所有数据库
show databases;
查询当前的数据库
select database();
创建数据库
create database if not exists text;
删除数据库
drop database if exists text;
use text;
下面指令的使用必须进入到某个数据库中
查询所有表
show tables;
查询指定表的表结构
desc table_name;
查询创建表的详细信息
show create table table_name;
注意最后一个字段不用加分号
create table table_name(
id varchar(255) comment "编号",
name varchar(255) comment "名字",
age int comment "年龄"
);
添加字段
alter table table_name add nickname varchar(20) comment "昵称";
修改字段
alter table table_name change nickname username varchar(30) comment "昵称";
删除字段
alter table table_name drop username;
alter table table_name rename to table_name1;
drop table if exists table_name1;
对数据表中的数据进行增加,删除,修改
给指定字段添加数值
insert inito table_name (name,age) values('zhangsan',19);
给全部字段添加数值
insert inito table_name values('zhangsan',19);
批量添加数据
insert inito table_name (name,age) values('zhangsan',19),('zhangsan',19);
insert inito table_name values('zhangsan',19),('zhangsan',19);
修改符合某个条件的数据
update user set name='zhangniuma' where id=1;
update user set name='niuma',age=999 where id=1;
修改所有数据
update user set date='2000-01-01';
删除符合某个条件的数据
delete from user where id=1;
删除所有数据
delete from user
查询数据
查询多个字段
select id,name,age from user;
查询所有字段
select * from user;
查询字段去重
select distinct id from user;
# 查询年龄为12岁的用户
select * from user where age=12;
# 查询年龄不等于12岁的用户
select * from user where age!=12;
# 查询年龄大于12岁的用户
select * from user where age>12;
# 查询年龄大于等于12岁的用户
select * from user where age>=12;
# 查询年龄小于12岁的用户
select * from user where age<12;
# 查询年轻小于等于12岁的用户
select * from user where age<=12;
# 查询身份证信息为空的用户
select * from user where id_card is null;
# 查询身份证信息不为空的用户
select * from user where id_card is not null;
# 查询年龄大于等于12并且小于等于13
select * from user where age>=12 && age<=13;
# 查询年龄等于12或者id=1、
select * from user where age=12 || id=1;
# 查询年龄等于12,13
select * from user where age in(12,13);
# 查询名字为4个字符的用户
select * from user where name like '____';
# 查询名字最后一位为i的用户
select * from user where name like '%i';
常用聚合函数,聚合函数作用域某一列,空数据不参与聚合函数的运算
# 统计id字段的数量
select count(id) from user;
# 求id的最大值
select max(id) from user;
# 求id的最小值
select min(id) from user;
# 求id的平均值
select avg(id) from user;
# 求id的合值
select sum(id) from user;
where在group by之前执行,having在group by之后执行
where中无法使用聚合函数,having可以使用
# 根据性别分组,统计男用户和女用户的数量
select gender,count(*) from user group by gender;
# 根据性别分组,统计男用户和女用户的平均年龄
select gender,avg(age) from user group by gender;
# 查询年龄小于45岁的员工,并且根据工作地址分组,获取员工数量大于等于3的功能工作地址
select address,count(*) from user where age<45 group by address having count(*)>=3;
# 根据年龄升序排序
select * from user order by age asc ;
# 根据年龄降序排序
select * from user order by age desc;
# 根据年龄升序排序,如果相同根据id倒序
select * from user order by age asc ,id desc;
# 查询第一页数据,每页10条
select * from user limit 0,10;
# 查询第二页数据,每页20条
select * from user limit 10,20;
编写顺序
执行顺序
控制用户访问数据库的权限
用户权限默认存储在mysql内置数据库中的user表中
use mysql;
select * from user;
注意只有Host和User字段同时确认才能定位用户
只能在当前主机访问
create user 'test'@'localhost' identified by '123456';
可以在任意注解都可以方位
create user 'test1'@'%' identified by '123456';
创建完用户后可以通过mysql -u 用户名 -p 输入密码来登录用户
登录用户会根据权限判断用户可以执行那些操作
alter user 'test'@'localhost' identified with mysql_native_password by '123';
drop user 'test'@'localhost';
show grants for 'root'@'localhost'
grant all on mysql.* to 'test'@'localhost'
revoke all on mysql.* from 'test'@'localhost'
授予和撤销的的权限具体查询权限列表,*表示全部,多个权限用,分割
函数是指可以直接被调用的程序和代码。mysql内置了许多函数例如聚合函数
select concat('hello','world');
select lower('hello');
select upper('hello');
左填充,第一个参数为被填充字符串,第二个参数为填充到的长度,第三个参数为填充字符串
select lpad('01',5,'-')
右填充,第一个参数为被填充字符串,第二个参数为填充到的长度,第三个参数为填充字符串
select rpad('02',5,'-')
去除的是前后所有的空格
select trim(' hello ');
第一个参数为截取字符串,第二个参数为截取起始位置(0为1),第三个参数为截取长度
select substring('hello world',1,5);
select ceil(1.1);
select floor(1.9);
select round(2.5);
select mod(7,4);
0-1之间
select rand();
select curdate();
select curtime();
select now();
select year(now());
select month(now());
select day(now());
当前日期往后推70天
select date_add(now(),INTERVAL 70 DAY );
前减后
select datediff('2012-12-02','2022-12-12');
select if(true,'ok','error');
select ifnull(null,'error');
when类型switch中的case值,then类型return,end为结束符
select
case name when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end from user;
作用在字段上的规则,限制表中的数据
具体实现在可视化工具上实现
使表与表建立关联,具有外键表被叫做子表。外键表所关联的叫做父表。
建立外键关联能保障一个表的数据被删除关联表也会随着变化。否则只是逻辑上的关联
父表如果有子表关联不会被删除
默认第一个
事物是一组操作的集合,要么全部成功,全么全部失败