网站首页 > 精选文章 正文
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
猜你喜欢
- 2025-01-13 如何使用数据操纵语言 DML?
- 2025-01-13 MySQL中的DML、DDL、DCL到底是什么呢?
- 2025-01-13 MySQL原理简介—8.MySQL并发事务处理二
- 2025-01-13 MySQL千万级大表优化,看这一篇就忘不掉了
- 2025-01-13 数据库版本控制中间件FlyWay部署安装及使用实例
- 2025-01-13 深入解读flink sql cdc的使用以及源码分析
- 2025-01-13 NineData:安全高效的MySQL DDL解决方案
- 2025-01-13 [MySQL] SQL语句分类 DDL语句详解
- 2025-01-13 ClickHouse学习笔记四ClickHouse基础语法
- 2025-01-13 mysql 亿级数据 在线DDL
- 05-15OSPFv2和 OSPFv3 有哪些相同点和不同点?
- 05-15为什么IPv6不支持固定IP作为地址?
- 05-15网工必备:Ping命令的十个实用技巧
- 05-15单播以及多播的书写实验
- 05-15纯净安心+支持IPv6远程使用丨NAS部署Windows激活工具教程
- 05-15笔记09:IPv6地址配置方法三——DHCPv6有状态地址自动配置
- 05-15手把手教你DHCPv6实验
- 05-15小学生钓鱼网站渗透实战
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)