MySQL的常用SQL语句

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 修改密码这是常见的大家一般都要用的  首先安装成功了打开cmd –> mysql -u root -p –>输入你的密码 –>修改mysql root用户密码   格式:mysql> set password for 用户名@localhost = password(‘新密码’);    举例:mysql> set password for root@localhost = password(‘root’); 上面例子将用户root的密码更改为root; 如果是学习使用一般密码该简单些,如root,123等,这样便于记忆。

修改密码


这是常见的大家一般都要用的

  首先安装成功了打开cmd –> mysql -u root -p –>输入你的密码
–>修改mysql root用户密码

   格式:mysql> set password for 用户名@localhost = password(‘新密码’);
   举例:mysql> set password for root@localhost = password(‘root’);
上面例子将用户root的密码更改为root;
如果是学习使用一般密码该简单些,如root,123等,这样便于记忆。

接下来就是SQL语句了,进入今天的主题了:
SQL:Structure Query Language。(结构化查询语言)

Sql的分类


DDL (Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等; CREATE、 ALTER、DROP
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据); INSERT、 UPDATE、 DELETE
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
SELECT
*注意:sql语句以 ; 结尾
这些都是数据库的SQL的基础知识(也是常识),一定要记住。

DDL:操作数据库、表、列等


使用的关键字:CREATEALTERDROP

创建

create database mydb1;
Create database mydb2 character set gbk;-- 设置编码格式
Create database mydb3 character set gbk COLLATE gbk_chinese_ci; -- 设置编码格式和排序方式

查询
查看当前数据库服务器中的所有数据库
show databases;
查看前面创建的mydb2数据库的定义信息
Show create database mydb2;
删除前面创建的mydb3数据库
Drop database mydb3;

修改
查看服务器中的数据库,并把mydb2的字符集修改为utf8;
alter database mydb2 character set utf8;

删除
drop database mydb3;

其他:
查看当前使用的数据库
select database();
切换数据库
use mydb2;

操作数据表
语法:创建数据库

create table 表名(
    字段1 字段类型,
    字段2 字段类型,
    ...
    字段n 字段类型
);

常用数据类型


int:整型
double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char:固定长度字符串类型; char(10) ‘abc ’
varchar:可变长度字符串类型;varchar(10) ‘abc’
text:字符串类型;
blob:字节类型;
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

重点:
当前数据库中的所有表
SHOW TABLES;
查看表的字段信息
DESC emp;
在上面员工表的基本上增加一个image列。
ALTER TABLE emp ADD image blob;
修改job列,使其长度为60。
ALTER TABLE emp MODIFY job varchar(60);
删除image列,一次只能删一列。
ALTER TABLE em DROP image;
表名改为user。
RENAME TABLE emp TO user;
查看表格的创建细节
SHOW CREATE TABLE user;
修改表的字符集为utd-8
ALTER TABLE user CHARACTER SET utf-8;
列名name修改为username
ALTER TABLE user CHANGE name username varchar(100);
删除表
DROP TABLE user ;

DML操作(重要)


查询表中的所有数据
SELECT * FROM 表名;
DML是对表中的数据进行增、删、改的操作。不要与DDL混淆了。
INSERT 、UPDATE、 DELETE

注意事项:
  在mysql中,字符串类型和日期类型都要用单引号括起来。’tom’ ‘2017-07-10’
  空值:null

插入操作:INSERT:
语法: INSERT INTO 表名(列名1,列名2 …)VALUES(列值1,列值2…);

注意:列名与列值的类型、个数、顺序要一一对应。
   可以把列名当做java中的形参,把列值当做实参。
   值不要超出列定义的长度。
   如果插入空值,请使用null
   插入的日期和字符一样,都使用引号括起来。

修改操作 UPDATE:
  语法:UPDATE 表名 SET 列名1=列值1,列名2=列值2 …….. WHERE 列名=值

删除操作 DELETE:
语法 : DELETE FROM 表名 【WHERE 列名=值】

注意:where语句可以不写
   DELETE :删除表中的数据,表结构还在;删除后的数据可以找回。
   TRUNCATE :删除是把表直接DROP掉,然后再创建一个同样的新表。
   删除的数据不能找回。执行速度比DELETE快。

DQL操作


  DQL数据查询语言 (重要):这个我们经常用因为数据库建好了之后我们主要用的就是去查询我们想要的数据,然后把它显示在页面上。
  数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。
  查询返回的结果集是一张虚拟表。

查询关键字:SELECT

语法: SELECT 列名 FROM表名
【WHERE –> GROUP BY –>HAVING–> ORDER BY】

语法:

  SELECT selection_list /*要查询的列名称*/
  FROM table_list /*要查询的表名称*/
  WHERE condition /*行条件*/
  GROUP BY grouping_columns /*对结果分组*/
  HAVING condition /*分组后的行条件*/
  ORDER BY sorting_columns /*对结果分组*/
  LIMIT offset_start, row_count /*结果限定*/

查询代码的书写顺序和执行顺序

 查询语句书写顺序:select – from- where- group by- having- order by-limit
 查询语句执行顺序:from - where -group by - having - select - order by-limit
查询所有列
SELECT * FROM 表名;

查询指定列
SELECT 列名 FROM 表名;

条件查询

条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:

  =、!=、<>、<、<=、>、>=;
  BETWEEN…AND;
  IN(set);
  IS NULL; IS NOT NULL
  AND;
  OR;
  NOT;

模糊查询

  当想查询姓名中包含a字母的学生时就需要使用模糊查询了。模糊查询需要使用关键字LIKE。

 通配符:
  “_”     :任意一个字符
  “% ”     :任意0~n个字符

字段控制查询


  • 去除重复记录:

       去除重复记录(两行或两行以上记录中系列的上的数据都相同)。

     语法:

        SELECT DISTINCT 列名 FROM 表名;


  • 给列名添加别名

      SELECT *,列名 AS 别名 FROM 表名;

      给列起别名时,是可以省略AS关键字的:

      SELECT *,列名 别名 FROM 表名;


排序 order by 列名 asc(默认) desc

语法:

  • ORDER BY 列名 ASC;

  • ORDER BY 列名 DESC;


聚合函数 sum avg max min count


聚合函数是用来做纵向运算的函数:

  • COUNT():统计指定列不为NULL的记录行数;

  • MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

  • MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

  • SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

  • AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

举例:

COUNT


当需要纵向统计时可以使用COUNT()。

  • 查询emp表中记录数:
    SELECT COUNT(*) AS cnt FROM emp;
  • 查询emp表中有佣金的人数:
    SELECT COUNT(comm) cnt FROM emp;

注意,因为count()函数中给出的是comm列,那么只统计comm列非NULL的行数。

  • 查询emp表中月薪大于2500的人数:
SELECT COUNT(*) FROM emp
WHERE sal > 2500;
  • 统计月薪与佣金之和大于2500元的人数:
SELECT COUNT(*) AS cnt FROM emp WHERE sal+IFNULL(comm,0) > 2500;
  • 查询有佣金的人数,有领导的人数:
    SELECT COUNT(comm), COUNT(mgr) FROM emp;

SUM和AVG


当需要纵向求和时使用sum()函数。
- 查询所有雇员月薪和:

SELECT SUM(sal) FROM emp;
  • 查询所有雇员月薪和,以及所有雇员佣金和:
SELECT SUM(sal), SUM(comm) FROM emp;
  • 查询所有雇员月薪+佣金和:
SELECT SUM(sal+IFNULL(comm,0)) FROM emp;
  • 统计所有员工平均工资:
SELECT AVG(sal) FROM emp;

MAX和MIN


  • 查询最高工资和最低工资:
SELECT MAX(sal), MIN(sal) FROM emp;

分组查询


  当需要分组查询时需要使用GROUP BY子句,例如查询每个部门的工资和,这说明要使用部门来分组。

  注:凡和聚合函数同时出现的列名,一定要写在group by 之后

HAVING子句


  • 查询工资总和大于9000的部门编号以及工资和:
    SELECT deptno, SUM(sal)
    FROM emp
    GROUP BY deptno
    HAVING SUM(sal) > 9000;

  注:having与where的区别:
   1.having是在分组后对数据进行过滤.
    where是在分组前对数据进行过滤

   2.having后面可以使用聚合函数(统计函数)
     where后面不可以使用聚合函数。

    WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

LIMIT(分页查询) MySQL自己的sql语句


LIMIT用来限定查询结果的起始行,以及总行数。

  • 查询5行记录,起始行从0开始
SELECT * FROM 表名 LIMIT 0, 5;

  注意,起始行从0开始,即第一行开始!

  • 查询10行记录,起始行从3开始
SELECT * FROM emp LIMIT 3, 10;

分页查询

  如果一页记录为10条,希望查看第3页记录应该怎么查呢?
  第一页记录起始行为0,一共查询10行;
  第二页记录起始行为10,一共查询10行;
  第三页记录起始行为20,一共查询10行;

最后一部分

主键、唯一性约束、自动增长、默认值、非空约束


  这里我就大概写几个代码你们看下,因为这里都比较简单。至于触发器这个一般都不在数据库写了一般直接在java代码中操作了,约束也可以直接用js等语言去约束。

        -- 第一种
        CREATE TABLE student(
        Id int primary key,
        Name varchar(50)
        );
        -- 第二种
        CREATE TABLE student(
        id int,
        Name varchar(50),
        Primary key(id)
        );

        -- 也属于第二种吧(多个主键)
        CREATE TABLE student(
        id int,
        Name varchar(50),
        Primary key(id,name)
        );

        -- 第三种
        CREATE TABLE student(
        Id int,
        Name varchar(50)
        );
        ALTER TABLE student
        ADD  PRIMARY KEY (id);

唯一性约束

CREATE TABLE student(
Id int primary key,
Name varchar(50) unique
);

自动增长列(auto_increment)

给主键添加自动增长的数值,列只能是整数类型,但是如果删除之前增长的序号,后面再添加的时候序号不会重新开始,而是会接着被删除的那一列的序号

CREATE TABLE student(
Id int primary key auto_increment,
Name varchar(50)
);

默认值default

CREATE TABLE student(
Id int pirmary key,
Name varchar(50) not null,
Sex varchar(10) default ‘男’
);

非空约束:** **null(默认),not null;

CREATE TABLE student(
Id int pirmary key,
Name varchar(50) not null,
Sex varchar(10)
);

  到这里就把常用的MySQL语句写完了,其他的语句都不太常用就没再这里写,如果感觉我写的不错就赞一下。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11天前
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
129 11
|
1月前
|
SQL 存储 关系型数据库
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
|
1月前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
1月前
|
SQL 关系型数据库 MySQL
MySQL 高级(进阶) SQL 语句
MySQL 提供了丰富的高级 SQL 语句功能,能够处理复杂的数据查询和管理需求。通过掌握窗口函数、子查询、联合查询、复杂连接操作和事务处理等高级技术,能够大幅提升数据库操作的效率和灵活性。在实际应用中,合理使用这些高级功能,可以更高效地管理和查询数据,满足多样化的业务需求。
211 3
|
1月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
1月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
1天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
5天前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
70 0
|
1月前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
63 3
|
1月前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
81 3