MySQL操作基础之DDL语句,数据段,数据库,表,列,索引等操作
wptr33 2025-01-11 17:48 27 浏览
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
相关推荐
- IIR数字滤波器原理及实现方法
-
欢迎大家关注转发...
- MATLAB机器学习工具箱
-
MATLAB机器学习工具箱MATLAB包含统计和机器学习工具箱(StatisticsandMachineLearningToolbox),其包含如下一些子模块:探索性数据分析、数据降维、机器学...
- MATLAB二分法求方程的根(实例加程序)
-
零点的存在性定理早在高中阶段,我们就学习过函数的零点存在性定理。简单地说,对于区间[a,b]上的连续函数f(x),如果满足f(a)f(b)<=0,那么函数在[a,b]上至少存在一个零点。...
- 优化算法matlab大杀器 —— 实现秃鹰算法
-
注意:此代码实现的是求目标函数最大值,求最小值可将适应度函数乘以-1(框架代码已实现)。.代码实现...
- 实例讲解MATLAB绘图坐标轴标签旋转
-
在我们进行绘图时,需要在图片上添加上做标轴的标签,但是当数据量比较多时,例如一天24小时的数据,这时把每个小时显示在左边轴的标签上,文字内容放不下,因此需要将坐标轴标签旋转一定的角度,这样可以更好在图...
- MATLAB的quiver函数绘制箭头向量图
-
MATLAB的quiver函数绘制箭头向量图,quiver函数的基本语法如下:基本语法...
- 「高中物理」电场和电势怎么理解?利用matlab工具完成可视化
-
高中物理给出了电场力和场强的计算方法,但是没给出电势的计算方法。下面先给出利用高中物理可接受的方法推导电势的公式可以看出电势就是场强的积分,也就是说场强是电势对距离的导数matlab做等量异种、同种...
- Matlab绘制图像,imagesc和pcolor的区别【工作记录4】
-
注意:此文章主要针对本人在工作中遇到的问题进行记录和经验上的总结,难免存在错误和遗漏,如有任何问题,请留言,我会尽快回复。最近用Matlab绘制图像时,发现用pcolor和imagesc画图区别挺大...
- 硬核浪漫!圣诞节给对象送礼的5个最没用小技巧
-
《圣诞节里吃饺子》...
- MATLAB画一阶系统单位阶跃响应、单位脉冲响应、单位斜坡响应曲线
-
在确定系统的数学模型后,便可以用几种不同的方法去分析控制系统的动态性能和稳态性能。在经典控制理论中,常用时域分析法、根轨迹法或频域分析法来分析线性控制系统的性能。显然,不同的方法有不同的特点和适用范围...
- 奇怪的Matlab画图技巧系列2–不一样的线条标记
-
毕业季马上要到了,给大家总结一些我平常用到的奇特但是好用的Matlab画图技巧不一样的线条标记论文画图通过需要通过添加不同标记或者线形,区别不同类型的参数曲线,比较土豪的同学可以选择用颜色区别外加全部...
- MATLAB画等高线的源程序和实例
-
源程序clearclcx=[60555951443937362944370121419191712323271415182429363937...
- 奇怪的Matlab画图技巧系列4–动图生成
-
毕业季马上要到了,给大家总结一些我平常用到的奇特但是好用的Matlab画图技巧MatlabGif动图保存毕业论文除了论文本身以外,在毕业论文的交流和最后的答辩过程中,通常需要制作PPT跟老师进行汇报...
- Spring Boot 打包与部署全面指南:从基础到高级实践
-
前言作为Java开发者,掌握SpringBoot应用的打包与部署是必备技能。本文将全面系统地介绍SpringBoot应用的打包与部署方式,从基础到高级,涵盖各种场景和需求。...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
git 执行pull错误如何撤销 git pull fail
-
面试官:git pull是哪两个指令的组合?
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
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)