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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou