SQL基本语法入门 看这里就够了

SQL基本语法入门 看这里就够了SQL执行顺序第一步:执行FROM第二步:WHERE条件过滤第三步:GROUPBY分组第四步:执行SELECT投影列第五步:HAVING条件过滤第六步:执行ORDERBY排序一、创建、删除库–创建新数据库CREATEDATABASE数据库名;–删除数据库DROPDATABASE数据库名;二、增加1、添加列名、设置主键、设…

大家好,又见面了,我是你们的朋友全栈君。

SQL执行顺序

第一步:执行FROM

第二步:WHERE条件过滤

第三步:GROUP BY 分组

第四步:执行SELECT 投影列

第五步:HAVING条件过滤

第六步:执行ORDER BY排序

一、创建、删除库

-- 创建新数据库 
CREATE DATABASE 数据库名; 
-- 删除数据库 
DROP DATABASE 数据库名;

二、增加

1、添加列名、设置主键、设置自动增长列

primary key表示当前列为主键列,不能重复,不能为空

out_increment表示当前列为自动增长列,由DBMS分配该列的值,可以保证不重复

CREATE TABLE t_user(
    id INT PRIMARY KEY AUTO_INCREMENT, -- 编号 
    userName VARCHAR(20),-- 用户名 
    birthday DATE,-- 生日 
    tel CHAR(11),-- 电话
    -- 枚举类型,该列的值只能取男和女 
    sex ENUM('男','女'),
    -- 性别 -- 最后一列不能加“,”。 
    money INT -- 账户余额 
);

2.添加行(新增记录)

①如果添加多条信息,中间用”,”分割。VALUES只用写一次,写在表头和表值之间。

②如果列名和列的值不写,则默认添加为空(null),如果数据库设计时存在默认值,则为添加默认值。——2019/11/09更新,感谢评论纠正。

INSERT INTO t_user(表头1,表头2) values(值1,值2); 
例如: 
INSERT INTO t_user(userName,pwd,birthday,tel,sex,money) 
VALUES ('张无忌','123','1980-05-09','13948577789','男',2000); 
例如: 
INSERT INTO t_student(userName,pwd,birthday,tel,sex) 
VALUES('张勇','111','1998-01-01','13112341234','男');

3.添加列(维护常用)

-- t_student:表名;address:表头。 
ALTER TABLE t_student ADD address VARCHAR(50);

三、删除

1.删除表

-- t_user:表名 
DROP TABLE t_user;

2.删除列

-- t_student:表名;userAddress:列名 
ALTER TABLE t_student DROP COLUMN userAddress;

3.删除行(记录)

-- 如果不加where 后面的条件则全部删除。 
DELETE FROM t_user WHERE id=2;

四、修改

1、修改列

修改列的值必须与修改后的类型相符,如果修改列的值为null,则可以改为任意类型。如果修改列的值类型为varchar,最长为20,则修改后的类型必须为char类型,长度不能低于20。

ALTER TABLE t_student CHANGE address userAddress VARCHAR(100);

2、修改值

UPDATE t_product SET 修改列名=修改后新值 WHERE id=1; 
-- 修改,将张无忌的密码修改为333,工资修改为2500 
UPDATE t_user SET pwd='333',money='2500' WHERE userName='张无忌';

五、查询

1、查询表中所有数据

 *表示显示所有的列,也可以指定显示列的列表,中间用”,”分割。

SELECT * FROM t_user; 
-- 例如(显示姓名和工资列): 
select userName,money from t_user

2、查询返回限定行

第一个参数为起始记录数,从0开始,第二个参数为显示记录数

-- MySQL语法
SELECT * FROM t_student LIMIT 0,3;

3、查询空值null

null不能用=,只能用is null 或 is not null

SELECT *FROM t_student WHERE money IS NULL;

4、查询多条信息(or/in)

-- 查询张三和李四的信息 
SELECT * FROM t_student WHERE userName='张三' OR userName='李四'; 
SELECT * FROM t_student WHERE userName IN('张三','李四');

5、模糊查询(_或%)

-- 查询姓李的二个字的员工 
SELECT * FROM t_student WHERE userName LIKE '李_'; 
-- 查询出所有商品名包括“糕”的商品的信息 
SELECT * FROM t_product WHERE productName LIKE '%糕%';

6、查询多条件+显示部分(LIMIT)

-- 查询前5条价格在100-1000的酒类商品 (MySQL语法)
SELECT * FROM t_product WHERE productType='酒类' AND price>=100 AND price<=1000 LIMIT 0,5 ;

7、查询去除重复的类名(distinct)

-- 查询所有的性别,distinct 表示去除重复记录 
SELECT DISTINCT sex FROM t_student;

8、查询排序显示(ORDER BY)

-- 按员工工资排序,默认为升序ASC,降序需要加上DESC。 
-- 工资相同,按年龄大小排序。 
SELECT * FROM t_student ORDER BY money DESC,birthday;

9、查询当前日期

select curdate() from 表名

六、判断语句

1、单分支条件判断

if(条件,返回值1,返回值2)
 -- 例如: 
select s.*,if(grade>=60,'合格','不合格')appraise from t_students;

2、多分支条件判断

(case 
when 条件1 then 返回值1 
when 条件2 then 返回值2 
else 返回值3 END) 
-- 例子1(选择显示): 
SELECT p.*,(CASE 
            WHEN money<5000 THEN '低薪阶层' 
            WHEN money>=5000 AND money<=10000 THEN '中薪阶层' 
            WHEN money>10000 THEN '高薪阶层' 
            ELSE '实习生' END) grade FROM t_student p; 
-- 例子2(选择添加): 
UPDATE t_product SET price =price+(CASE 
                                    WHEN productType='药品类' THEN 5 
                                    WHEN productType='食品类' THEN 2 
                                    WHEN productType='酒类' THEN 100 END);

七、聚合函数的运用

-- 学生成绩表 
CREATE TABLE t_grade( 
    id INT PRIMARY KEY AUTO_INCREMENT,-- id 主键 
    sname VARCHAR(20),-- 学生姓名 
    sex ENUM('男','女'),-- 学生性别 
    className VARCHAR(20),-- 学生班级 
    grade INT -- 学生成绩 
);

a.统计学生的人数

-- count(*)只要是记录都要统计。count(列名)只统计非空列。 
SELECT COUNT(*) '学生总人数', COUNT(grade)'参考人数' FROM t_grade;

b.统计学生的总分、平均分、最高分、最低分

-- avg求平均分,也只统计非空列 
SELECT SUM(grade) ,AVG(grade),SUM(grade)/COUNT(*), MAX(grade),MIN(grade) FROM t_grade

c.统计每个班的人数

SELECT className,COUNT(*) num FROM t_grade GROUP BY className;

d.统计每个班的总分和平均分

SELECT className,SUM(grade)'总分',SUM(grade)/COUNT(*) '平均分' FROM t_grade GROUP BY className;

八、having运用

-- 列出班级人数小于等于3个人的班级 
SELECT className,COUNT(*) FROM t_grade GROUP BY className HAVING COUNT(*)<=3; 
-- 列出班级总分大于300分的班级 
SELECT className,SUM(grade) FROM t_grade GROUP BY className HAVING SUM(grade)>300;

九、复制表

create table 新表名 select * from 原表名;

十、where与if条件连用

WHERE  IF(条件,  true执行条件, false执行条件 )
select * from sys_user where if(id<10,name='zhangsan',name='lisi')

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139804.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月29日 上午8:36
下一篇 2022年5月29日 上午8:36


相关推荐

  • 操作系统-时间片轮转调度算法

    操作系统-时间片轮转调度算法基本概念时间片轮转法 Round Robin RR 主要用于分时系统中的进程调度 为了实现轮转调度 系统把所有就绪进程按先入先出的原则排成一个队列 新来的进程加到就绪队列末尾 每当执行进程调度时 进程调度程序总是选出就绪队列的队首进程 让它在 CPU 上运行一个时间片的时间 时间片是一个小的时间单位 通常为 10 100ms 数量级 当进程用完分给它的时间片后 系统的计时器发出时钟中断 调度程序便停止该

    2026年3月18日
    1
  • 服务器raid5阵列修复,RAID5磁盘阵列的安装与故障修复

    服务器raid5阵列修复,RAID5磁盘阵列的安装与故障修复本文将为大家简单介绍RAID5磁盘阵列的相关内容,以及在磁盘阵列发生故障后,我们应该怎么样去修复RAID5磁盘阵列的故障。有兴趣的用户,敬请关注!如何实现RAID5磁盘阵列ATARAID控制器目前市场上的RAID控制器主要有两种:1、主板上集成的IDERAID控制器,现在很多高端主板都具有集成ATARAID控制器。2、一款支持并行接口RAID5磁盘阵列模式的磐英I875P主板,以及单独的…

    2022年6月10日
    152
  • Java 贪吃蛇 最简易地实现方法 超简短代码实现 (附源码 详解)

    Java 贪吃蛇 最简易地实现方法 超简短代码实现 (附源码 详解)分享一个我刚刚写的贪吃蛇小游戏,非常简短的代码实现方法。这可能是全网最简单实现方法,效果图如下:有多简短呢?上代码!!一共四个类!Food类packagecom.snake;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Point;publicclassFoo…

    2022年6月18日
    37
  • linux 没有root权限的用户安装GCC[通俗易懂]

    linux 没有root权限的用户安装GCC[通俗易懂]在Linux下,如果有root权限的话,使用sudoaptinstall就可以很方便的安装软件,而且同时也会帮你把一些依赖文件也给编译安装好。但是如果不是用的自己的机器,一般情况下是没有root权限的。所以就需要自己动手下载tar文件,解压安装。在安装中遇到的最大的问题是依赖的问题。手动下载编译GCC,首先下载tar文件,可以在这里下载https://ftp.gnu.org/gnu/gc…

    2022年5月26日
    38
  • 学习计算机一个很好的免费资料下载网站地址(大家学习网论坛)

    学习计算机一个很好的免费资料下载网站地址(大家学习网论坛)原文发布时间为:2008-07-30——来源于本人的百度文章[由搬家工具导入]http://club.topsage.com子版面本版版规3today全国计算机等级考试版主:妖僧三

    2022年7月2日
    32
  • WCF入门

    WCF入门WCF 入门预备知识 XML 远程处理 RPC 消息队列 MSMQ 面向服务的体系结构 SOA WCF 入门 WCF 基础知识 WCF 体系结构承载 WCF 的方式 WCF 服务端和客户端编程基础 WCF 服务器端编程模型 WCF 客户端编程模型编写服务端和客户端程序的基本思路设计和实现协定协定和特性服务协定数据协定消息协定服务绑定与终结点配置在服务端配置文件中配置 WCF 服务终结点绑定方式需要绑定的元素及其含义协议通道绑定元素传

    2026年3月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号