MySQL基础

关系型数据库

由多张相互关联的二维表组成的数据库

  • 使用表存储,格式统一,方便维护
  • 使用sql操作,标准统一,使用方便

数据模型

MySQL基础_第1张图片


SQL

SQL通用语法

  1. sql语句可以单行或者多行,用分号解决
  2. sql语句可以所用缩进增强可读性,
  3. sql语句不区分大小写,关键字建议全部大写
  4. // 单行注解,/ * 多行注解 */

分类

  1. DDL:定义数据库,表,字段
  2. DML:增删改数据
  3. DQL:查询数据
  4. DCL:控制数据库的访问权限

DDL

1. 查询数据库

查询所有数据库

show databases;

查询当前的数据库

select database();

2. 创建数据库

创建数据库

create database if not exists text;

3. 删除数据库

删除数据库

drop database if exists text;

4. 进入数据库

use text;

下面指令的使用必须进入到某个数据库中

5. 查询数据库中的表

查询所有表

show tables;

查询指定表的表结构

desc table_name;

查询创建表的详细信息

show create table table_name;

6. 创建数据库中的表

注意最后一个字段不用加分号

create table table_name(
	id varchar(255) comment "编号",
	name varchar(255) comment "名字",
	age int comment "年龄"
);

7. 表中字段的操作

添加字段

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;

8. 修改表名

alter table table_name rename to table_name1;

9. 删除表

drop table if exists table_name1;

DML

对数据表中的数据进行增加,删除,修改

1. 添加数据

给指定字段添加数值

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);

2. 修改数据

修改符合某个条件的数据

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';

3. 删除数据

删除符合某个条件的数据

delete from user where id=1;

删除所有数据

delete from user

DQL

查询数据

1. 基本查询

查询多个字段

select id,name,age from user;

查询所有字段

select * from user;

查询字段去重

select distinct id from user;

2. 条件查询

MySQL基础_第2张图片MySQL基础_第3张图片

# 查询年龄为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';

3. 聚合函数

常用聚合函数,聚合函数作用域某一列,空数据不参与聚合函数的运算

MySQL基础_第4张图片

# 统计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;

4. 分组查询

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;

5. 排序查询

# 根据年龄升序排序
select * from user order by age asc ;

# 根据年龄降序排序
select * from user order by age desc;

# 根据年龄升序排序,如果相同根据id倒序
select * from user order by age asc ,id desc;

6. 分页查询

# 查询第一页数据,每页10条
select * from user limit 0,10;

# 查询第二页数据,每页20条
select * from user limit 10,20;

7. 执行顺序

编写顺序

MySQL基础_第5张图片

执行顺序

MySQL基础_第6张图片

DCL

控制用户访问数据库的权限

1. 查询用户

用户权限默认存储在mysql内置数据库中的user表中

use mysql;
select * from user;

注意只有Host和User字段同时确认才能定位用户

2. 创建用户

只能在当前主机访问

create user 'test'@'localhost' identified by '123456';

可以在任意注解都可以方位

create user 'test1'@'%' identified by '123456';

创建完用户后可以通过mysql -u 用户名 -p 输入密码来登录用户
登录用户会根据权限判断用户可以执行那些操作

3. 修改密码

alter user 'test'@'localhost' identified with mysql_native_password by '123';

4. 删除用户

drop user 'test'@'localhost';

5. 查询权限

show grants for 'root'@'localhost'

6. 授予权限

grant all on mysql.* to 'test'@'localhost'

7. 撤销权限

revoke all on mysql.* from 'test'@'localhost'

授予和撤销的的权限具体查询权限列表,*表示全部,多个权限用,分割


函数

函数是指可以直接被调用的程序和代码。mysql内置了许多函数例如聚合函数

字符串函数

1. 字符串拼接

select concat('hello','world');

2. 全部转换为小写

select lower('hello');

3. 全部转换为大写

select upper('hello');

4. 填充字符串

左填充,第一个参数为被填充字符串,第二个参数为填充到的长度,第三个参数为填充字符串

select lpad('01',5,'-')

右填充,第一个参数为被填充字符串,第二个参数为填充到的长度,第三个参数为填充字符串

select rpad('02',5,'-')

5. 去除前后空格

去除的是前后所有的空格

select trim(' hello ');

6. 字符串截取

第一个参数为截取字符串,第二个参数为截取起始位置(0为1),第三个参数为截取长度

select substring('hello world',1,5);

数值函数

1. 向上取整

select ceil(1.1);

2. 向下取证

select floor(1.9);

3. 四舍五入

select round(2.5);

4. 取模运算

select mod(7,4);

5. 求随机数

0-1之间

select rand();

日期函数

1. 获取日期

select curdate();

2. 获取时间

select curtime();

3. 获取现在日期+时间

select now();

4. 获取年

select year(now());

5. 获取月

select month(now());

6. 获取日

select day(now());

7. 日期往后计算

当前日期往后推70天

select date_add(now(),INTERVAL 70 DAY );

8. 日期差

前减后

select datediff('2012-12-02','2022-12-12');

流程控制函数

1. 类三木运算符

select if(true,'ok','error');

2. 类或运算

select ifnull(null,'error');

3. 类switch

when类型switch中的case值,then类型return,end为结束符

select
 case name when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end from user;

约束

作用在字段上的规则,限制表中的数据

具体实现在可视化工具上实现

常见约束的基本使用

MySQL基础_第7张图片

外键约束

使表与表建立关联,具有外键表被叫做子表。外键表所关联的叫做父表。

建立外键关联能保障一个表的数据被删除关联表也会随着变化。否则只是逻辑上的关联

父表如果有子表关联不会被删除

1. 外键编辑和删除行为

默认第一个

MySQL基础_第8张图片


事物

事物是一组操作的集合,要么全部成功,全么全部失败

你可能感兴趣的:(MySQL,mysql,oracle,数据库)