目录
SQL语句——DDL(数据定义语言,用来定义数据库对象(数据库、表、字段))
SQL语句——DML(数据操作语言,用来对数据库表的数据进行增删改)
SQL语句——DQL(数据查询语言,用来查询数据库中表的记录)
基础查询
条件查询:
分组查询
排序查询
分页查询
SQL语句——DCL(数据控制语言,用来创建数据用户、控制数据库的访问权限)
1、查询用户
2、创建用户
3、 修改用户密码
4、删除用户
5、查询权限
6、授予权限
7、撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
前面也发过一篇相关数据库博客:https://mp.csdn.net/mp_blog/creation/editor/134504925
SQL:一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。
通用语法
SQL语句可以单行或多行书写,以分号结尾。
SQL语句可以使用空格/缩进来增强语句的可读性。
MySQL数据库的SQL语句不区分大小写。
注释:
1.单行注释:-- 注释内容 或 #注释内容(MySQL特有)
2. 多行注释: /*注释内容 */
SQL语句——DDL(数据定义语言,用来定义数据库对象(数据库、表、字段))
创建数据库:create database [if not exists] 名称;
查询数据库:show database; (所有)
select database();(当前)
删除数据库:drop database [if exists]名称;
使用数据库:use 名称;
创建表:
create table 表名(
字段1 字段类型 [约束] [comment 字段1注释],
.......
字段n 字段类型 [约束] [comment 字段n注释]
)comment 表注释;
查询当前库所有表:show tables;
查询表结构:desc 表名;
查询建表语句:show create table 表名;
表操作
添加字段:alter table 表名 add 字段名 类型(长度)[comment 注释][约束];
修改字段类型:alter table 表名 modify 字段名 新数据类型(长度);
修改字段名和字段类型:alter table 表名 change 旧字段名 新字段名 类型 (长度)[comment 注释][约束];
删除字段:alter table 表名 drop column 字段名;
修改表名: rename table 表名 to 新表名;
删除表:drop table [if exists]表名;
#创建表 create table tb_user( id int primary key comment 'ID,唯一标识', username varchar(20) not null unique comment'用户名', name varchar(10) not null comment '姓名', age int comment '年龄', gender char(1) default '男' comment'性别' ) comment '用户表'; create table tb_emp( id tinyint auto_increment primary key comment'ID,唯一标识', username varchar(20) not null unique comment'用户名', password varchar(32) default '123456' comment'用户密码', name varchar(10) not null comment'员工姓名', gender tinyint unsigned not null default '男' comment'性:1男\2女', image varchar(100) comment'图像url', job tinyint unsigned comment'职位:1为班主任、2为讲师、3为学工主管、4为教研主管', entrydate date comment'入职日期', create_time datetime comment '创建时间', update_time datetime comment '修改时间' )comment '员工表';
数据类型
SQL语句——DML(数据操作语言,用来对数据库表的数据进行增删改)
指定字段添加数据:insert into 表名(字段名1,字段名2)values(值1,值2);
全部字段添加数据:insert into 表名 value(值1,值2);
批量添加数据(指定字段):insert into表名(字段名1,字段名2)value(值1,值2)(值1,值2);
批量添加数据(全部字段):insert into表名 value(值1,值2)(值1,值2);
修改数据:update 表名 set 字段名1 = 值1,字段名2=值2,....[where 条件];
删除数据:delete from 表名 [where 条件];
-- 指定字段添加数据:insert into 表名(字段名1,字段名2)values(值1,值2); insert into tb_emp(id,username,password,name) values (null,'hanli','123','韩立',1); -- 全部字段添加数据:insert into 表名 value(值1,值2); insert into tb_emp values (null,'waner','1234','婉儿',2,null,2,'2024-1-1',now(),now()); -- 批量添加数据(指定字段):insert into表名(字段名1,字段名2)value(值1,值2)(值1,值2); insert into tb_emp(id,username,name) values (null,'lier','灵儿',2), (null,'lifeiyu','历飞羽',1); -- 批量添加数据(全部字段):insert into表名 value(值1,值2)(值1,值2); insert into tb_emp values (null,'waner2','1234','儿',1,null,2,'2024-1-1',now(),now()), (null,'waner3','1234','婉',2,null,4,'2024-1-1',now(),now()); #修改数据 update tb_emp set name ='韩立',update_time = now() where id='2'; update tb_emp set entrydate = '2024-2-14',update_time=now();
SQL语句——DQL(数据查询语言,用来查询数据库中表的记录)
基础查询
查询多个字段:select 字段1,字段2,字段3 from 表名;
查询所有字段(通配符):select*from 表名;
设置别名:select 字段1[as 别名1],字段2[as 别名2]from 表名;
去除重复记录:select distinct 字段列表 from 表名;
条件查询:
select 字段列表 from 表名 where 条件列表;
分组查询
聚合函数:将一列数据作为一个整体,进行纵向计算。
select 聚合函数(字段列表)from 表名;
函数:count 统计数量 max 最大值 min 最小值 avg 平均值 sum 求和
分组查询:select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
排序查询
条件查序:select 字段列表 from 表名 [where 条件] [group by 分组字段] order by 字段1 排序方式1,字段2 排序方式2...;
排序方式: ASC 升序(默认值) DESC 降序
分页查询
select 字段列表 from 表名 limit 起始索引,查询记录数;
SQL语句——DCL(数据控制语言,用来创建数据用户、控制数据库的访问权限)
1、查询用户
use mysql;
select * from user;
在MySQL中 用户的信息和具有的权限的信息 都是存放在系统数据库mysql中的user表中。
※host意为主机,只有同时确定了主机名和用户名才能定位mysql中的用户。
2、创建用户
注:下列语句中紫色字体为固定内容,黑色字体改为具体信息
create user '用户名'@'主机名' identified by '密码';
※如果希望能够在任意主机上访问数据库,在主机名位置处输入通配符%即可
3、 修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
4、删除用户
drop user '用户名'@'主机名';
5、查询权限
show grants for '用户名'@'主机名';
6、授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
※数据库名和表名可以使用通配符*代替。
*.*意为给用户授权的对象是所有数据库;数据库名.*意为对象是该数据库的所有表。
多个权限之间使用逗号分隔。
常用的权限有以下几种:
7、撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';