MySQL学习(DDL,DML,DQL)基本语法总结

2024-09-06 01:44

本文主要是介绍MySQL学习(DDL,DML,DQL)基本语法总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DDL

  • 使用某个数据库
use world;
  • 展示表
show tables;
  • 创建表
 create table student(id int,name varchar(10),age int,gender varchar(10));
  • 删除表
drop table student; 
  • 修改表结构
  1. 查看表结构
  desc student;
  1. 添加列
  alter table student add dept varchar(10);
  1. 修改列名和类型
  alter table student change name st_name varchar(10);
  1. 删除列
  alter table student drop dept;
  1. 修改表名
  rename table student to st;

DML

  • 数据操作
  1. 插入数据
insert into student values(1, '鲁思豪', 21, '男'), (2, '撒刀锋战士', 18, '男'), (3, '发送端', 17, '女'), (4, '问啊发大水', 38, '男'), (5, '雨课堂', 27, '女'), (6, '当然土豪', 5, '女'), (7, '首都儿', 25, '女'), (8, '饿死认同感', 24, '男'), (9, '散热通过', 31, '女'), (10, '色让他', 22, '男'); 
  1. 删除数据(id小于4的数据)
  delete from student where id < 4;
  1. 更新数据
  update student set name = '谢谢小星星' where id = 4;
  • 约束
  1. 主键约束(primary key) PK: 唯一加非空
    创建时加上:[constraint pk1] primary key(字段1,字段2)
    创建好后,使用
ALTER TABLE student ADD PRIMARY KEY (id);

删除主键约束:

ALTER TABLE student DROP PRIMARY KEY;
  1. 自增长约束(auto_increment): 实现主键的自增长
    在创建表时在primary key后加auto_increment
    设置开始值:在create的括号后加auto_increment = min, 或在创建表结束后使用ALTER TABLE student auto_increment = min
    delete删除数据后,自增长从最后一个值基础上增长,turncate删除数据后,自增长从默认开始值增长
  2. 非空约束(not null)
    – 创建表时加not null,或
 ALTER TABLE student MODIFY name VARCHAR(10) NOT NULL;

删除约束

ALTER TABLE student MODIFY name VARCHAR(10);
  1. 唯一性约束(unique)
    创建表时加unique, 或
ALTER TABLE student ADD CONSTRAINT unique_pn unique(id); 

删除唯一约束

ALTER TABLE student DROP INDEX unique_pn;
  1. 默认约束(default)
    创建表时加default ‘默认值’,或
ALTER TABLE student MODIFY dept VARCHAR(10) DEFAULT 'sdas';

删除默认约束

 ALTER TABLE student MODIFY dept VARCHAR(10) DEFAULT NULL;
  1. 零填充约束(zerofill): 插入数据是,当该字段的长度小于定义长度时,会在该值前面补0,zerofill默认为int(10)
    创建表时加zerofill
    删除零填充约束:ALTER TABLE student MODIFY ‘字段’

DQL

  • 查询数据
select id, name from student;
  • 别名
	-- 表别名SELECT * FROM student AS p;-- 列别名SELECT id AS '编号', name AS '名字' FROM student;
  • 去掉重复值
    SELECT DISTINCT age FROM student;SELECT DISTINCT * FROM student;
  • 运算查询
    SELECT name, age +10 FROM student;
  • 过滤
    select * from student where age > 20;
  • 模糊匹配
    SELECT * FROM student where name LIKE '%发%'; -- %匹配任意字符SELECT * FROM student where name LIKE '_思%'; -- _匹配任意字符
  • least和greatest
    SELECT LEAST(10, 5, 20) AS min_number;  -- 最小值SELECT GREATEST(10,20,30) AS max_number;  -- 最大值
  • 分组聚合
select gender, avg(age), sum(age), max(age), min(age), count(*) from student group by gender; -- 分组后的结果筛选  havingSELECT gender, avg(age), sum(age), max(age), min(age), count(*) FROM student GROUP BY gender HAVING AVG(age) > 22;
  • 排序
    select * from student where age > 20 order by age asc;select * from student where age > 20 order by age desc;
  • 分页
    select * from student limit 5; # 限制取5条数据select * from student limit 9, 5; # 跳过10条取5条数据
  • INSERT INTO SELECT语句
    INSERT INTO student SELECT * FROM stu;INSERT INTO student(id, name, age) SELECT id, name, age FROM stu;
  • 正则表达式
    -- ^ 在开头进行匹配SELECT 'abcdefg' REGEXP '^a'; -- 1-- $ 在结尾匹配SELECT 'grfdgsrte' REGEXP 'e$'; -- 1-- . 匹配任意单个字符(除了换行符)SELECT 'asdasf' REGEXP '.s';  -- 1SELECT 'asdasf' REGEXP 'a.';  -- 1SELECT 'asdasf' REGEXP '.f';  -- 1-- [...] 匹配括号内任意单个字符SELECT 'zsfrsdfr' REGEXP '[abc]'; -- 0SELECT 'faredfarews' REGEXP '[ared]'; -- 1-- [^...] 匹配括号内任意字符之外的字符SELECT 'a' REGEXP '[^abc]'; -- 0SELECT 'x' REGEXP '[^abc]'; -- 1SELECT 'abc' REGEXP '[^a]'; -- 1-- a* 匹配0个或多个a,包括空字符串,可以作为占位符用,有没有指定字符都可以匹配到数据SELECT 'stab' REGEXP '.ta*b'; -- 1SELECT 'stb' REGEXP '.ta*b';  -- 1SELECT '' REGEXP 'a*'; -- 1-- a+ 匹配1个或多个a,不包括空字符串SELECT 'stab' REGEXP '.ta+b'; -- 1SELECT 'stb' REGEXP '.ta+b';  -- 0SELECT '' REGEXP 'a+'; -- 0-- a? 匹配0个或1个aSELECT 'stab' REGEXP '.ta?b'; -- 1SELECT 'stb' REGEXP '.ta?b';  -- 1SELECT 'staab' REGEXP '.ta?b'; -- 0-- a1|a2 匹配a1或a2SELECT 'a' REGEXP 'a|b';  -- 1SELECT 'bc' REGEXP 'a|b';  -- 1SELECT 'c' REGEXP 'a|b';  -- 0-- a{m} 匹配m个aSELECT 'abbba' REGEXP 'ab{3}a'; -- 1SELECT 'abbba' REGEXP 'ab{4}a'; -- 0-- a{m,} 匹配m个或更多aSELECT 'abbbbbbba' REGEXP 'ab{2,}a'; -- 1-- a{m, n} 匹配m到n个aSELECT 'abbbbba' REGEXP 'ab{2,7}a'; -- 1SELECT 'aba' REGEXP 'ab{2,7}a';  -- 0 

这篇关于MySQL学习(DDL,DML,DQL)基本语法总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140648

相关文章

MySQL字符串转数值的方法全解析

《MySQL字符串转数值的方法全解析》在MySQL开发中,字符串与数值的转换是高频操作,本文从隐式转换原理、显式转换方法、典型场景案例、风险防控四个维度系统梳理,助您精准掌握这一核心技能,需要的朋友可... 目录一、隐式转换:自动但需警惕的&ld编程quo;双刃剑”二、显式转换:三大核心方法详解三、典型场景

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数

C# List.Sort四种重载总结

《C#List.Sort四种重载总结》本文详细分析了C#中List.Sort()方法的四种重载形式及其实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录1. Sort方法的四种重载2. 具体使用- List.Sort();- IComparable

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

MySQL MHA集群详解(数据库高可用)

《MySQLMHA集群详解(数据库高可用)》MHA(MasterHighAvailability)是开源MySQL高可用管理工具,用于自动故障检测与转移,支持异步或半同步复制的MySQL主从架构,本... 目录mysql 高可用方案:MHA 详解与实战1. MHA 简介2. MHA 的组件组成(1)MHA

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro