大家好,数据库是后端开发的核心组件,几乎所有的应用都需要与数据库打交道。今天我们将系统性地学习 mysql 的基础操作,涵盖数据库与表的创建、数据的增删改查、用户管理以及权限控制,同时理解 ddl、dml、dcl 三大类 sql 命令的区别与应用。
一、sql 语言分类
sql(structured query language)按功能分为三大类:
| 分类 | 全称 | 说明 | 常用命令 |
|---|---|---|---|
| ddl | data definition language | 数据定义语言,定义数据库结构 | create、alter、drop、truncate |
| dml | data manipulation language | 数据操作语言,操作数据内容 | insert、update、delete、select |
| dcl | data control language | 数据控制语言,管理权限 | grant、revoke |
二、ddl:数据定义语言
ddl 用于定义数据库的结构,包括数据库、表、索引等对象的创建、修改和删除。
2.1 数据库操作
-- 查看所有数据库 show databases; -- 创建数据库 create database mydb; create database if not exists mydb; create database mydb character set utf8mb4 collate utf8mb4_general_ci; -- 选择数据库 use mydb; -- 查看当前使用的数据库 select database(); -- 删除数据库 drop database mydb; drop database if exists mydb;
2.2 数据类型
创建表之前,需要了解常用的数据类型:
| 分类 | 数据类型 | 说明 |
|---|---|---|
| 数值 | int | 整数 |
bigint | 大整数 | |
decimal(m,d) | 精确小数 | |
float / double | 浮点数 | |
| 字符串 | varchar(n) | 可变长度字符串(最长 65535 字符) |
char(n) | 固定长度字符串 | |
text | 长文本 | |
| 日期 | date | 日期(yyyy-mm-dd) |
datetime | 日期时间(yyyy-mm-dd hh:mm:ss) | |
timestamp | 时间戳 | |
| 布尔 | boolean / tinyint(1) | 布尔值 |
2.3 创建表
-- 基本建表语法
create table 表名 (
列名 数据类型 [约束],
列名 数据类型 [约束],
...
);
-- 示例:创建用户表
create table users (
id int primary key auto_increment,
username varchar(50) not null unique,
email varchar(100) not null unique,
password varchar(255) not null,
age int default 0,
created_at datetime default current_timestamp,
updated_at datetime default current_timestamp on update current_timestamp
);
-- 查看表结构
desc users;
-- 或
show columns from users;
-- 查看建表语句
show create table users;
-- 查看所有表
show tables;2.4 约束(constraints)
| 约束 | 说明 |
|---|---|
primary key | 主键,唯一标识一行 |
foreign key | 外键,关联其他表 |
not null | 不能为空 |
unique | 唯一,不能重复 |
default | 默认值 |
auto_increment | 自动递增(用于整数主键) |
2.5 修改表结构
-- 添加列 alter table users add column phone varchar(20); -- 修改列类型 alter table users modify column phone varchar(15); -- 修改列名和类型 alter table users change column phone mobile varchar(20); -- 删除列 alter table users drop column mobile; -- 重命名表 alter table users rename to user_accounts;
2.6 删除表
-- 删除表 drop table users; -- 删除表(如果存在) drop table if exists users;
三、dml:数据操作语言
dml 用于对表中的数据进行增、删、改、查操作。
3.1 插入数据:insert
-- 插入单行(指定列)
insert into users (username, email, password, age)
values ('张三', 'zhangsan@example.com', '123456', 25);
-- 插入单行(所有列)
insert into users values (null, '李四', 'lisi@example.com', '654321', 30, now(), now());
-- 插入多行
insert into users (username, email, password, age) values
('王五', 'wangwu@example.com', '111111', 28),
('赵六', 'zhaoliu@example.com', '222222', 22),
('孙七', 'sunqi@example.com', '333333', 35);
-- 插入查询结果
insert into users_backup (username, email, age)
select username, email, age from users where age > 25;3.2 查询数据:select
-- 查询所有列 select * from users; -- 查询指定列 select id, username, email from users; -- 条件查询(where) select * from users where age > 25; select * from users where username = '张三'; select * from users where age between 20 and 30; select * from users where email like '%@example.com';
3.3 更新数据:update
-- 更新单行 update users set age = 26 where username = '张三'; -- 更新多列 update users set age = 30, email = 'new@example.com' where id = 1; -- 条件更新 update users set age = age + 1 where age < 30; -- 更新所有行(谨慎使用) update users set updated_at = now();
3.4 删除数据:delete
-- 删除指定行 delete from users where id = 1; -- 删除满足条件的行 delete from users where age > 60; -- 删除所有行(谨慎使用) delete from users;
四、dcl:数据控制语言
dcl 用于管理数据库用户的权限。
4.1 用户管理
-- 查看所有用户
select user, host from mysql.user;
-- 创建用户
create user 'username'@'localhost' identified by 'password';
create user 'username'@'%' identified by 'password'; -- 允许任何主机连接
-- 修改密码
alter user 'username'@'localhost' identified by 'new_password';
set password for 'username'@'localhost' = password('new_password');
-- 删除用户
drop user 'username'@'localhost';4.2 权限管理
-- 授予权限 -- 语法:grant 权限 on 数据库.表 to '用户'@'主机' grant all privileges on mydb.* to 'username'@'localhost'; grant select, insert, update on mydb.users to 'username'@'localhost'; grant select on *.* to 'readonly'@'%'; -- 全局只读 -- 授予所有权限 grant all privileges on *.* to 'admin'@'localhost' with grant option; -- 查看用户权限 show grants for 'username'@'localhost'; -- 撤销权限 revoke insert, update on mydb.users from 'username'@'localhost'; revoke all privileges on mydb.* from 'username'@'localhost'; -- 刷新权限(使修改生效) flush privileges;
4.3 权限级别
| 权限级别 | 说明 | 示例 |
|---|---|---|
| 全局 | 所有数据库 | *.* |
| 数据库 | 指定数据库 | mydb.* |
| 表 | 指定表 | mydb.users |
| 列 | 指定列 | mydb.users.username |
4.4 常用权限列表
| 权限 | 说明 |
|---|---|
all privileges | 所有权限 |
select | 查询数据 |
insert | 插入数据 |
update | 更新数据 |
delete | 删除数据 |
create | 创建数据库/表 |
drop | 删除数据库/表 |
alter | 修改表结构 |
index | 创建/删除索引 |
五、常用命令速查表
| 分类 | 命令 | 说明 |
|---|---|---|
| 数据库 | show databases | 查看所有数据库 |
create database db | 创建数据库 | |
use db | 选择数据库 | |
drop database db | 删除数据库 | |
| 表操作 | show tables | 查看所有表 |
create table t (...) | 创建表 | |
desc t | 查看表结构 | |
alter table t add/ modify | 修改表结构 | |
drop table t | 删除表 | |
| 数据操作 | insert into t values(...) | 插入数据 |
select * from t | 查询数据 | |
update t set ... where ... | 更新数据 | |
delete from t where ... | 删除数据 | |
| 用户权限 | create user 'u'@'h' identified by 'p' | 创建用户 |
grant ... on db.* to 'u'@'h' | 授予权限 | |
revoke ... on db.* from 'u'@'h' | 撤销权限 | |
show grants for 'u'@'h' | 查看权限 | |
drop user 'u'@'h' | 删除用户 |
六、总结
| 分类 | 核心命令 |
|---|---|
| ddl | create、alter、drop、truncate |
| dml | insert、select、update、delete |
| dcl | create user、grant、revoke |
| 表约束 | primary key、foreign key、not null、unique、default |
| 常用查询 | where、order by、group by、limit、join、like |
数据库操作是后端开发的必备技能。ddl 负责数据库结构的设计,dml 负责数据的日常操作,dcl 负责用户权限的安全管理。掌握这三类 sql 命令,就能独立完成从数据库设计到数据维护的全流程。
以上就是mysql数据库基础入门指南之ddl、dml、dcl三大命令详解的详细内容,更多关于mysql数据库ddl、dml、dcl的资料请关注代码网其它相关文章!
发表评论