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


相关推荐

  • CSS3 opacity属性

    CSS3 opacity属性CSS3opacity属性记录设置一个div元素的透明度级别实现原理:opacity属性在实现的原理上极度类似于PS中的蒙版概念样式:div{opacity:0.5;}取值范围:0~1注意:IE8和早期版本支持另一种过滤器属性。像:filter:Alpha(opacity=50)属性说明默认值:1继承性:no(不继承)版本:CSS3属性:object.style.opacity问题1.如果父元素设置opacity属性,那么这个的所有子元素都

    2022年5月26日
    39
  • 想要复制网页的文字网页不让复制_如何复制文字

    想要复制网页的文字网页不让复制_如何复制文字作者:iamlaosong当我们需要复制网页上的内容时,往往会碰到不能复制的情况,面对这个问题,不同的情况有不同的应对方法,比如禁止JavaScript运行,查看源代码,另存为网页文件等。这些方法也可以用,现在有个更通用的办法是QQ屏幕截图所带的功能,不管网页用的什么技术,能看见就可以复制,特别适合不太懂技术的人。要用QQ截图功能,QQ肯定是要登录的,然后用浏览器打开需要复制文字的网页,按QQ屏幕截图快捷键Ctrl+Alt+A选择需要复制文字的区域,在弹出的菜单中点击“翻译”或者“屏幕识图”两个按钮

    2022年10月12日
    3
  • 单选按钮控件和复选框控件_单选按钮控件和复选框控件都具有

    单选按钮控件和复选框控件_单选按钮控件和复选框控件都具有Windows单按钮、复选框、分组框控件单选按钮(Radio Button)和复选框(Check Box)是常见的Windows控件,用于从给出的选项中选择一项或多项,如下图所示:单选钮与复选框单选按钮是互斥的,只能选择其中一项;而复选框没有限制,可以选择一项或多项。单选按钮和复选框都是一种特殊的按钮,窗口类名称都是button,只不过增加了一些特殊的窗口样式罢了。单选按钮的样式为BS_…

    2022年8月18日
    12
  • BI工具不仅是数据可视化,数据挖掘和处理才是核心

    BI工具不仅是数据可视化,数据挖掘和处理才是核心随着数字化时代的来临 企业面临的数据处理与分析问题越来越多 近几年冒出了众多的 BI 工具 都着重强调其数据可视化效果有多好 诚然 数据可视化效果是很重要 清晰亮丽的各类图表 狂拽酷炫的动态大屏展示 看起来真的很爽 但是 可视化只是 BI 工具的最终呈现效果 企业做数据分析不是仅仅把表做好看 真正的数据分析需要数据的获取 清洗 形成报表 得出结论等一系列工序 最终为企业管理者提供决策支持 数据挖掘的两大基本目标是预测和描述数据 其中前者的计算机建模及实现过程通常被称为监督学习 后者的则通常被称为无监督学习

    2026年3月16日
    1
  • 深度解析:Claude Code 和 OpenClaw 底层架构的设计取舍

    深度解析:Claude Code 和 OpenClaw 底层架构的设计取舍

    2026年3月14日
    4
  • 数据外连接 LEFT OUT JOIN 的用法

    数据外连接 LEFT OUT JOIN 的用法table1 与 table2 的等值连接如下 Select nbsp A id A name A housenumber B housenumber B housenamefro table2Bwhere housenumber B housenumber nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp

    2026年3月17日
    2

发表回复

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

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