MySQL基础篇-基本sql语句

目录

1.SQL分类

2.SQL-DDL

2.1 数据库操作

查询

创建

删除

使用某个数据库

2.2 数据表操作

创建表

查询表

修改表

3.SQL-DML(增删改)

3.1 插入

3.2 修改

3.3 删除

4.SQL-DQL(查)

4.1 基础查询

4.2 条件查询

4.3 聚合函数查询

4.4 分组查询

4.5 排序查询

4.6 分页查询(MySql)

4.7.DQL执行顺序

5.SQL-DCL

5.1 用户管理

创建用户

修改密码

删除用户

5.2 用户权限

查询权限

授予权限

撤销权限


记录SQL数据库的学习笔记

1.SQL分类

基本分类如下表:

分类 全称 说明
DDL Data Definition Language 数据定义语言,用来定义数据库对象(数据库,表,字段)
DML Data Manipulation Language 数据操作语言,用来对数据库中的数据进行增删改
DQL Data Query Language 数据查询语言,用来查询数据库中表的记录
DCL Data Control Language 数据控制语言,用来创建数据库用户,控制数据库的访问权限

2.SQL-DDL

2.1 数据库操作

查询

查询所有的数据库

show databases;

创建

创建数据库

create database cat;

这样就代表创建成功了

drop database if exists cat;

也可以这样创建数据库

检测是否有此数据库,有则创建,没有则不创建,且不会报错

create database if not exists cat;

删除

删除数据库

drop database cat;

为了不报错可以这样,删除不存在的数据库时

drop database if exists cat;

使用某个数据库

use cat;

查询正在使用的数据库

select database();

2.2 数据表操作

创建表

create table tb_user(
    id int comment '标号',
    name varchar(50),
    age int,
    gender varchar(1)
) comment '用户表';

comment 注释可选可不选

查询表

查询所有的数据库中的表

show tables;

查询具体的表结构

desc tb_user;

查询具体的建表语句,为了看清楚注释

show create table tb_user;

修改表

 添加字段

alter table tb_user add password varchar(50) comment '密码';

修改字段名和字段类型

alter table tb_user 旧字段名 新字段名 varchar(255);

删除字段

alter table tb_user drop username;

修改表名

 alter table 旧表名 rename to 新表名;

删除表

drop table if exists 表名;

删除表并重新创建该表(删除了所有的字段,需要重新创建)

truncate table 表名;

3.SQL-DML(增删改)

3.1 插入

插入数据(根据字段插入)

insert into tb_user (id, name, age, gender) values (1,'张三',10,'男');

全部插入,必须要有所有的字段,且需要根据顺序

insert into tb_user values (2,'李四',10,'男');

3.2 修改

where 后面代表条件(如果不带条件,则会影响所有的数据)

update tb_user set name = '王五' where id = 1;

3.3 删除

delete from tb_user where id = 1;

4.SQL-DQL(查)

4.1 基础查询

查询所有字段

select * from 表名;

查询指定字段

select name,id,gender from 表名;

查询指定字段并起别名

select workaddress as '工作地址' from 表名;

查询指定字段并做去重处理

select distinct workaddress as '工作地址' from 表名;

4.2 条件查询

可以携带的条件

比较运算符号 功能
>         大于
>= 大于等于
< 小于
<= 小于等于
= 等于
<> 或 != 不等于
BETWEEN ... AND ... 在某个范围之内(含最小值和最大值)
IN(...) 在in之后的列表中的值,多选一
LINK 占位符 模糊匹配('_'匹配单个字符,'%'匹配任意个字符)
IS NULL 是NULL的字段
逻辑运算符 功能
AND 或 && 并且(多个条件同时成立)
OR 或 || 或者(多个任意条件成立一个)
NOT 或 !

age小于20的所有数据

select * from emp where age < 20;

查询没有携带某个字段的数据

select * from emp where idcard is null;

配合not使用

select * from emp where idcard is not null;

between and 的使用(查询age在15--30的数据)

select * from emp where age between 15 and 30;

in的使用(下面二条命令得到的效果是一样的)

select * from emp where age=18 or age=20 or age=90;

select * from emp where age in(18,20,90);

模糊匹配(查询的name为3个字符的数据)

select * from emp where name like '___';

4.3 聚合函数查询

常见的聚合函数

函数名 功能
count 统计数量
max 最大值   
min 最小值
avg 平均值
sum 求和

语法:

select 聚合函数(字段列表) from 表名;

查询age<30的所有数据总和 

select count(*) from emp where age < 30;

查询平均年龄

select avg(age) from emp;

4.4 分组查询

语法

select 字段列表 from 表名 where 条件 group by 分组字段名 having 分组后过滤条件;

where与having区别:

执行时机不同: where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。

判断条件不同: where不能对聚合函数进行判断,而having可以。

根据性别分组,统计男性员工和女性员工的数量 

select gender,count(*) from emp group by  gender ;

 

根据性别分组,统计男性员工和女性员工的平均年龄 

select gender, avg(age) from emp group by gender;

查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址

address_count是统计数量取得别名

select workaddress,count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;

4.5 排序查询

select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2;

升序排序 (asc) 默认

 根据年龄升序排序

select * from emp order by age;

降序排序

select * from emp order by age desc;

4.6 分页查询(MySql)

不同数据库可能字段会不一样

select 字段列表 from 表名 limit 起始索引,查询记录数;

查询前十条数据

select * from emp limit 0,10;

4.7.DQL执行顺序

①:from

②:where

③:group by,having

④:select

⑤:order by

⑥:limit

5.SQL-DCL

mysql数据库的user表在,mysql数据库下的user表中

5.1 用户管理

创建用户

刚创建的用户是没有任何权限的

只能在本机localhost访问

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

设置任意主机访问

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

修改密码

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

删除用户

drop user 'itcast'@'localhost';

5.2 用户权限

查询权限

show grants for 'root'@'localhost';

授予权限

给用户授予特定数据库的所有权限:

这将授予用户在指定数据库的所有权限,包括SELECT、INSERT、UPDATE、DELETE等。

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';

给用户授予特定表的特定权限:

这将只授予用户在指定表中的SELECT和INSERT权限。

GRANT SELECT, INSERT ON database_name.table_name TO 'username'@'localhost';

给用户授予所有数据库的某些权限:

这将授予用户在所有数据库上执行CREATE、DROP和ALTER等操作的权限。

GRANT CREATE, DROP, ALTER ON *.* TO 'username'@'localhost';

给用户授予所有数据库的所有权限:

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';

撤销权限

撤销用户对特定数据库的所有权限:

这将撤销用户在指定数据库上的所有权限。

REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'localhost';

撤销用户对特定表的特定权限:

这将撤销用户在指定表上的SELECT和INSERT权限。

REVOKE SELECT, INSERT ON database_name.table_name FROM 'username'@'localhost';

撤销用户对所有数据库的所有权限:

REVOKE ALL PRIVILEGES ON *.* FROM 'username'@'localhost';

猜你喜欢

转载自blog.csdn.net/m0_64642443/article/details/133238433