MySQL操作基础之DDL语句,数据段,数据库,表,列,索引等操作
wptr33 2025-01-11 17:48 34 浏览
SQL分类
SQL语句主要可以划分为以下3个类别。
- DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段,数据库,表,列,索引等数据库对象。常用的语句关键字主要包括create,drop,alter等。
- DML(Data Manipulation Language)语句:数据操纵语句,用于添加,删除,更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括insert,delete,update,select等。
- DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库,表,字段,用户的访问权限和安全级别。主要的语句关键字包括grant,revoke等。
一、操作数据库的DDL
包括数据库查看、切换、创建和删除等
1) 查看用户所有的数据库
show databases;
2)创建数据库的命令为
create database 数据库名;
3) 删除数据库的命令为
drop database 数据库名;
4) 数据库的切换,命令为
use 数据库名;
二、DDL操作表
包括表的创建、修改和删除等。其中表格的修改有包括增减列、修改列、修改表名等。
1) 查询数据库的所有表的操作
命令
show tables;
显示如下:
mysql > use employees;
You are now connected to database "employees" as user "root"
Time: 0.000s
mysql > show tables;
+----------------------+
| Tables_in_employees |
+----------------------+
| current_dept_emp |
| departments |
| dept_emp |
| dept_emp_latest_date |
| dept_manager |
| employees |
| salaries |
| titles |
+----------------------+
8 rows in set
Time: 0.018s
2) 创建表
create table 表名(
列名1 列类型1 约束条件,
列名2 列类型2 约束条件,
..........
列名n 列类型n
);
约束条件为可选项。
例子1:创建表,不添加任何约束.
CREATE TABLE t_student(
num INT,
NAME VARCHAR(10),
sex CHAR(1),
birthday DATE,
grade INT,
score DOUBLE(4,1),
mobile CHAR(11),
reg_time DATETIME
);
例子2:创建表,添加约束和注释(comment)。
约束:
- 主键约束:一个表中只能有一个主键,不能为空,不能重复
- 唯一约束:一个表中可以有多个重复,可以为空
- 不能为空:可以有很多个重复
- AUTO_INCREMENT 主键是自动增长,数据类型必须为整数
CREATE TABLE t_student(
num INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
NAME VARCHAR(10) NOT NULL COMMENT '姓名',
sex CHAR(1) CHECK(sex='女' OR sex='男') COMMENT '性别',
birthday DATE COMMENT '生日',
grade INT COMMENT '班级',
score DOUBLE(4,1) CHECK(score>=0 AND score <=100) COMMENT '成绩',
mobile CHAR(11) UNIQUE COMMENT '手机号',
reg_time DATETIME COMMENT '注册时间'
);
创建完成后,可查看表的定义,即查看表结构的命令
desc 表名
显示如下
mysql testDatabase> desc t_student;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| num | int | YES | | <null> | |
| NAME | varchar(10) | YES | | <null> | |
| sex | char(1) | YES | | <null> | |
| birthday | date | YES | | <null> | |
| grade | int | YES | | <null> | |
| score | double(4,1) | YES | | <null> | |
| mobile | char(11) | YES | | <null> | |
| reg_time | datetime | YES | | <null> | |
+----------+-------------+------+-----+---------+-------+
获取更全面的表定义信息,可以查看创建表的SQL语句,命令如下
SHOW CREATE TABLE 表名;
#也可以查询数据库名
显示如下:
mysql testDatabase> show create table t_student;
+-----------+--------------------------------------------------------------------+
| Table | Create Table |
+-----------+--------------------------------------------------------------------+
| t_student | CREATE TABLE `t_student` ( |
| | `num` int DEFAULT NULL, |
| | `NAME` varchar(10) DEFAULT NULL, |
| | `sex` char(1) DEFAULT NULL, |
| | `birthday` date DEFAULT NULL, |
| | `grade` int DEFAULT NULL, |
| | `score` double(4,1) DEFAULT NULL, |
| | `mobile` char(11) DEFAULT NULL, |
| | `reg_time` datetime DEFAULT NULL |
| | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-----------+--------------------------------------------------------------------+
1 row in set
Time: 0.034s
3) 修改表
修改语句:alter table 表名 add/drop/change/modify(修改)
增加列的命令:
-- ALTER TABLE 表名 ADD 列名 数据类型
ALTER TABLE t_student ADD address VARCHAR(50) NOT NULL
删除列的命令为:
-- ALTER TABLE 表名 DROP 列名
ALTER TABLE t_student DROP address
修改列的数据类型:
-- ALTER TABLE 表名 MODIFY 列名 新数据类型
ALTER TABLE t_student MODIFY address VARCHAR(40)
修改列名:
-- ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型
ALTER TABLE t_student CHANGE mobile phone VARCHAR(11)
修改表名:
-- RENAME TABLE 旧表名 TO 新表名
RENAME TABLE t_student TO student
删除表的命令为:
DROP TABLE t_student
4) 修改表的约束条件
添加主键约束
-- ALTER TABLE 表名 ADD PRIMARY KEY(列名)
ALTER TABLE t_student ADD PRIMARY KEY(num)
删除主键约束
-- ALTER TABLE 表名 DROP PRIMARY KEY
ALTER TABLE t_student DROP PRIMARY KEY
设置自动增长
-- ALTER TABLE 表名 MODIFY 列名 类型 AUTO_INCREMENT
ALTER TABLE t_student MODIFY num INT AUTO_INCREMENT
删除自动增长
-- ALTER TABLE users MODIFY 列名 类型 ;
ALTER TABLE t_student MODIFY num INT
设置不能为空
-- ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;
ALTER TABLE t_student MODIFY NAME VARCHAR(10) NOT NULL
设置可以为空
-- ALTER TABLE 表名 MODIFY 列名 类型 NULL;
ALTER TABLE t_student MODIFY NAME VARCHAR(10) NULL
添加唯一约束
-- ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名)
ALTER TABLE t_student ADD CONSTRAINT mobile_unique UNIQUE(mobile)
通过约束名删除约束
-- ALTER TABLE 表名 DROP INDEX 约束名;
ALTER TABLE t_student DROP INDEX mobile_unique
添加检查约束
-- ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK(条件)
ALTER TABLE t_student ADD CONSTRAINT score_check CHECK(score>=0 AND score<=100)
删除check约束
-- ALTER TABLE 表名 DROP CHECK 约束名;
ALTER TABLE t_student DROP CHECK score_check
相关推荐
- redis的八种使用场景
-
前言:redis是我们工作开发中,经常要打交道的,下面对redis的使用场景做总结介绍也是对redis举报的功能做梳理。缓存Redis最常见的用途是作为缓存,用于加速应用程序的响应速度。...
- 基于Redis的3种分布式ID生成策略
-
在分布式系统设计中,全局唯一ID是一个基础而关键的组件。随着业务规模扩大和系统架构向微服务演进,传统的单机自增ID已无法满足需求。高并发、高可用的分布式ID生成方案成为构建可靠分布式系统的必要条件。R...
- 基于OpenWrt系统路由器的模式切换与网页设计
-
摘要:目前商用WiFi路由器已应用到多个领域,商家通过给用户提供一个稳定免费WiFi热点达到吸引客户、提升服务的目标。传统路由器自带的Luci界面提供了工厂模式的Web界面,用户可通过该界面配置路...
- 这篇文章教你看明白 nginx-ingress 控制器
-
主机nginx一般nginx做主机反向代理(网关)有以下配置...
- 如何用redis实现注册中心
-
一句话总结使用Redis实现注册中心:服务注册...
- 爱可可老师24小时热门分享(2020.5.10)
-
No1.看自己以前写的代码是种什么体验?No2.DooM-chip!国外网友SylvainLefebvre自制的无CPU、无操作码、无指令计数器...No3.我认为CS学位可以更好,如...
- Apportable:拯救程序员,IOS一秒变安卓
-
摘要:还在为了跨平台使用cocos2d-x吗,拯救objc程序员的奇葩来了,ApportableSDK:FreeAndroidsupportforcocos2d-iPhone。App...
- JAVA实现超买超卖方案汇总,那个最适合你,一篇文章彻底讲透
-
以下是几种Java实现超买超卖问题的核心解决方案及代码示例,针对高并发场景下的库存扣减问题:方案一:Redis原子操作+Lua脚本(推荐)//使用Redis+Lua保证原子性publicbo...
- 3月26日更新 快速施法自动施法可独立设置
-
2016年3月26日DOTA2有一个79.6MB的更新主要是针对自动施法和快速施法的调整本来内容不多不少朋友都有自动施法和快速施法的困扰英文更新日志一些视觉BUG修复就不翻译了主要翻译自动施...
- Redis 是如何提供服务的
-
在刚刚接触Redis的时候,最想要知道的是一个’setnameJhon’命令到达Redis服务器的时候,它是如何返回’OK’的?里面命令处理的流程如何,具体细节怎么样?你一定有问过自己...
- lua _G、_VERSION使用
-
到这里我们已经把lua基础库中的函数介绍完了,除了函数外基础库中还有两个常量,一个是_G,另一个是_VERSION。_G是基础库本身,指向自己,这个变量很有意思,可以无限引用自己,最后得到的还是自己,...
- China's top diplomat to chair third China-Pacific Island countries foreign ministers' meeting
-
BEIJING,May21(Xinhua)--ChineseForeignMinisterWangYi,alsoamemberofthePoliticalBureau...
- 移动工作交流工具Lua推出Insights数据分析产品
-
Lua是一个适用于各种职业人士的移动交流平台,它在今天推出了一项叫做Insights的全新功能。Insights是一个数据平台,客户可以在上面实时看到员工之间的交流情况,并分析这些情况对公司发展的影响...
- Redis 7新武器:用Redis Stack实现向量搜索的极限压测
-
当传统关系型数据库还在为向量相似度搜索的性能挣扎时,Redis7的RedisStack...
- Nginx/OpenResty详解,Nginx Lua编程,重定向与内部子请求
-
重定向与内部子请求Nginx的rewrite指令不仅可以在Nginx内部的server、location之间进行跳转,还可以进行外部链接的重定向。通过ngx_lua模块的Lua函数除了能实现Nginx...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)