MySQL:0、SQL基础(库、表、索引、约束)

本文详细介绍SQL语言的三大核心部分:DDL数据定义语言,用于创建和管理数据库及表;DML数据操作语言,用于数据的增删改查操作;DCL数据控制语言,用于管理用户权限。涵盖SQL语法的关键指令,如创建、修改、删除数据库和表,以及事务管理、索引和外键约束的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、 DDL 数据定义语言(DBA与开发人员用来创建数据库、数据表):

-- 库相关

-- 表相关

-- 列相关

-- 索引

 -- 约束(外键)

2、 DML 数据操作语言(DBA与开发人员用来操作数据库。与oracle基本相通):

3、 DCL 数据控制语言(DBA用于用户、权限的管理):


 

1、 DDL 数据定义语言(DBA与开发人员用来创建数据库、数据表):


-- 库相关

SHOW DATABASES; -- 查看系统中存在的数据库
CREATE DATABASE database_name; -- 创建数据库
USE database_name ; -- 使用指定数据库(执行各种命令时,要先进入指定数据库)
DROP DATABASE database_name ; -- 删除指定数据库

-- 表相关
 

SHOW tables ; -- 查看所使用的数据库的所有表
CREATE TABLE table_name(column_name_1 column_type1 constraints, column_name_2 ...)
SHOW CREATE table table_name;  -- 你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):
DESC table_name; -- 查看表的定义
DROP TABLE table_name; -- 删除表
ALTER TABLE table_name RENAME[TO] new_table_name ; -- 修改表名

例:

CREATE TABLE `a` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `column_1` varchar(201) DEFAULT NULL,
  `column_2` varchar(201) NOT NULL,
  `column_3` int(20) NOT NULL,
  `column_4` int(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='测试a表'

-- 列相关

ALTER TABLE table_name MODIFY [COLUMN] column_name column_definition [FIRST|AFTER column_name]; -- 修改列的定义
ALTER TABLE table_name DROP [COLUMN] column_name ; -- 删除列
ALTER TABLE table_name CHANGE [COLUMN] old_name new_name column_definition [FIRST|AFTER column_name]; -- 修改列名

ALTER TABLE table_name 
ADD [COLUMN] column_name column_definition [FIRST|AFTER column_name]; 
-- 添加列

-- column_definition 为列的定义,格式:

{INT|BIGINT|VARCHAR(255)|datetime|..} [PRIMARY KEY [auto_increment]][NOT NULL]

-- [FIRST|AFTER column_name] 用于定义修改列之后的排序[第一个| 在column_name列的后面]

例:

ALTER TABLE a ADD COLUMN id BIGINT PRIMARY KEY auto_increment NOT NULL FIRST;

ALTER TABLE a 
ADD COLUMN user_name VARCHAR(30) NOT NULL AFTER id;

-- 索引

ALTER TABLE table_name ADD UNIQUE INDEX idx__name (`name`);	-- 添加唯一索引
ALTER TABLE table_name ADD INDEX idx__name (`name`);	-- 添加普通索引
ALTER TABLE table_name DROP INDEX idx__name ;	-- 删除索引
ALTER TABLE table_name ADD PRIMARY KEY (ID);	-- 设置主键
ALTER TABLE table_name DROP PRIMARY KEY ;	-- 删除主键

 -- 约束(外键)

ALTER TABLE from_table_name 
ADD CONSTRAINT constraint_name 
FOREIGN KEY (ft_column_name) 
REFERENCES main_table_name(mt_column_name) 
[ON 
[DELETE|UPDATE] 
[RESTRICT|CASCADE|NO ACTION|SET NULL]
]
[ON ...] 
/* 
修改表 从表名称 
添加 约束 约束名称 
外键 从表列名 参考 主表名(列名) 
[当 
[删除|更新] 时 
[约束|关联|无动作|置为NULL]
]
[当..]
*/

2、 DML 数据操作语言(DBA与开发人员用来操作数据库。与oracle基本相通):

https://blog.youkuaiyun.com/Bof_jangle/article/details/51050396

Oracle是自动启用事务的。MySQL需要提前进行申明。

-- 开始事务
START TRANSACTION ;

-- 进行删除等操作
DELETE FROM table_name WHERE id = ...;
INSERT INTO table_name VALUES (...);
INSERT INTO table_name (...) VALUES (...);
UPDATE table_name SET column_name = ... WHERE ...;

-- 提交事务
COMMIT;

-- 回滚事务
ROLLBACK;


3、 DCL 数据控制语言(DBA用于用户、权限的管理):

GRANT [SELECT|INSERT|DELETE|UPDATE] 
ON database_name.* 
TO 'user_name'@'localhost' IDENTIFIED BY 'password'; 
-- 创建并授权用户

REVOKE [SELECT|INSERT|DELETE|UPDATE] 
ON database_name.* 
FROM 'user_name'@'localhost'; 
-- 收回权限

 

 

拓展:

-- 数据库系统相关
show engines;  -- 看你的mysql现在已提供什么存储引擎
show variables like '%storage_engine%';	-- 看你的mysql当前默认的存储引擎:

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值