MySQL操作基础之DDL语句,数据段,数据库,表,列,索引等操作
wptr33 2025-01-11 17:48 30 浏览
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
相关推荐
- 威信Chronosonic XVX全新旗舰全球首发 设计特点彻底公开
-
第一眼看到WilsonAudio新推出的ChronosonicXVX音箱,相信大家都会直觉认为它是两年前超级旗舰WAMMMasterChronosonic的缩小版,不过这个推测并不完全正确。C...
- C#高精度Timer和Delay以及时间测量
-
在PCHMI7.0后在工具箱里会多一个MsTimer,以及Delay和Microsecond两个类。...
- python教程从基础到精通,第9课—日期与时间
-
Hello,小伙伴们,祝大家五.一玩得快乐!刚学习完了七大数据类型,今天咱们来学习日期与时间的表示方法。Python标准库中提供了时间和日期的支持:calendar:日历相关;time、datetim...
- 软件测试|教你轻松玩转Python日期时间
-
Python基础之日期时间处理...
- Go语言中互斥锁与读写锁,你知多少?
-
简述Golang中的锁机制主要包含互斥锁和读写锁互斥锁互斥锁是传统并发程序对共享资源进行控制访问的主要手段。在Go中主要使用sync.Mutex的结构体表示。一个简单的示例:funcmutex()...
- 变形金刚动画大电影——经典台词赏析
-
YOURDAYSARENUMBEREDNOW,DECEPTI-CREEPS你们活不了多久了,霸天虎小子。-{铁皮说的话,体现了铁皮的嫉恶如仇,可是后来铁皮在飞船上遇袭身亡,可谓是出师未捷身先...
- Python时间日期模块使用教程(python3日期)
-
1.时间日期处理概述在日常编程中,时间日期处理是非常常见的需求,比如:记录日志时间...
- 亚马逊介绍AWS“无服务器”云服务改进:数据库可线上扩充容量等
-
IT之家11月29日消息,在今天于美国拉斯维加斯展开的亚马逊“AWSre:Invent2023”活动中,亚马逊计算部门资深副总裁PeterDeSantis,介绍了旗下三款云端服务,IT...
- 2.日期格式 datetime(日期时间显示格式)
-
fromdatetimeimportdatetime1.获取当前日期和时间now=datetime.now()#2025-05-3110:56:01.4687822.格式化日期...
- 【科普】时间单位大盘点(时间单位都有哪些?)
-
时间单位,是7种基本单位之一,长度、时间、质量、物质的量、光照度、电流和(热力学)温度是七种基本单位。本词条中时间单位以时间从大到小列。今天我们来盘点下时间的单位换算...
- 基于PHP的Laravel框架,盘点Github高星Web管理后台,效率为王!
-
在Web开发工作中,选择一个高效、稳定的后台管理系统是提高开发效率的关键。虽然PHP在近些年中的热度有所减退,但其上手简单、开源、灵活且被广泛应用的特点,仍然使其在编程语言排行榜中保持前十的位置。这表...
- 如何使用PHP编写一个简单的留言板?
-
留言板是一个常见的Web应用程序,允许用户在网站上发布和查看留言。在本文中,我们将使用PHP编写一个简单的留言板,介绍构建过程中的关键步骤和技巧。一、准备工作在开始编写留言板之前,我们需要准备好以下工...
- 产品经理提需求时要考虑的 15 个隐性需求
-
虽然世界充满未知的变化,但是有一些大的方向还是可以把握的,本文跟大家谈谈产品经理提需求时要考虑的15个隐性需求,enjoy~俗话说,计划赶不上变化快,无论需求文档做得如何细致,考虑得如何周全,总会...
- 关于 PHP 启动 MongoDb 找不到指定模块问题
-
前言:最近有一个小demo,需要通过PHP将用户行为记录储存到MongoDB,再用Spark做协同过滤。由于以前处理跨语言交互是通过消息中间件,这次本地使用MongoDB却弄出了几个问...
- PHP程序员老鸟面试经历(php程序员怎么样)
-
在任何时代找任何工作都有面试这么一说的。特别是高端技术类的工种对技术理论和技术实操能力要求很严格。大部分公司招收技术员工的要求也越来愈高。至于PHP程序员也是如此,我估计大多数PHP老鸟已经不在意所...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
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)