<span>数据库基础语句</span>

1、创建数据库

-- 1、创建数据库
CREATE DATABASE school CHARACTER SET utf8;

2、创建表

-- 2、创建表
CREATE TABLE stu(
	stuid INT PRIMARY KEY AUTO_INCREMENT,
    stuname VARCHAR(20) NOT NULL,
    stusex VARCHAR(5) DEFAULT '男' CHECK(stusex='男' OR stusex='女'),
    stuage INT DEFAULT 0
) DEFAULT CHARSET=utf8;

CREATE TABLE course(
    cid INT PRIMARY KEY AUTO_INCREMENT,
    -- unique: 值唯一
    cname VARCHAR(20) NOT NULL UNIQUE
) DEFAULT CHARSET=utf8;

CREATE TABLE stu_score(
    id INT PRIMARY KEY AUTO_INCREMENT,
    stuid INT,
    cid INT,
    score DOUBLE,
    -- 设置外键(一般不建议设置)
    -- FOREIGN KEY(stuid) REFERENCES stu(stuid),
    -- FOREIGN KEY(cid) REFERENCES course(cid)
) DEFAULT CHARSET=utf8;

3、插入

-- 3、插入数据
INSERT INTO stu(stuname) VALUES('规划明');
INSERT INTO course VALUES(NULL,'高等数学');
INSERT INTO stu_score VALUES(NULL,1,2,66.6);

4、查询

4.1、过滤查询

-- 4、过滤查询
SELECT * FROM stu;
SELECT * FROM stu WHERE stuname LIKE '%明';
SELECT * FROM stu WHERE stuname LIKE '小_';

4.2 、起别名

-- 对查询结果起别名,修改列名显示
SELECT stuname AS '姓名' ,stuage AS '年龄' FROM stu;

4.3、分页查询(limit)

-- 显示4条查询数据
-- 0:开始位置;4:显示4个
SELECT * FROM stu LIMIT 0,4;

4.4、子查询

-- 查询成绩为100分的学生的姓名
SELECT stuid FROM stu_score WHERE score=100;
SELECT stuname FROM stu WHERE stuid = 2;

SELECT stuname FROM stu WHERE stuid =(
     SELECT stuid FROM stu_score WHERE score=100
)

4.5 、连接查询

4.5.1内连接?

-- 查询分数信息,显示学生姓名,课程名,分数。
-- 第一种方法
-- 1.查什么写什么
SELECT stuname,cname,score FROM stu,course,stu_score
-- 2.建立关系
WHERE stu.stuid=stu_score.stuid 
AND course.cid=stu_score.cid

-- 第二种方法
SELECT stuname,cname,score FROM stu 
INNER JOIN stu_score ON stu.stuid=stu_score.stuid
INNER JOIN course ON stu_score.cid=course.cid

4.5.2左外连接和右外连接?

左外连接:显示左表的全部信息,右表没有的部分用null表示。右外连接类似。

-- 查询学生分数,显示学生姓名和分数
SELECT stuname,score FROM stu 
LEFT JOIN stu_score ON stu.stuid=stu_score.stuid 

4.6 、case语句

SQL中CASE语句相当于if---else 语句

-- 显示学生性别信息
SELECT stuid,stuname,stusex,stuage FROM stu;

-- CASE有两种格式
-- 简单case函数
SELECT stuid,stuname,
CASE stusex
WHEN '1' THEN '男'
WHEN '0' THEN '女'
ELSE '保密'
END,stuage FROM stu

-- case搜索函数
SELECT stuid,stuname,
CASE WHEN stusex='1' THEN '男'
WHEN stusex='0' THEN '女'
ELSE '保密'
END,stuage FROM stu

select 与 case结合使用好处:

  • 一是在显示查询结果时可以灵活的组织格式
  • 二是有效避免了多次对同一个表或几个表的访问

5、删除

DELETE FROM stu WHERE stuname='哈哈';

6、修改

UPDATE stu SET stusex='女' WHERE stuname='哈哈';

7、去重复(distinct)

-- 7、去重复,作用于单列或多列。返回唯一不同的值。distinct必须放在开头。
-- 去掉相同的stuname,然后显示信息
SELECT DISTINCT stuname FROM stu;

8、统计(count)

-- 8、 统计: count
-- 学生表中stuname去重后的数目
SELECT COUNT(DISTINCT stuname) FROM stu;
-- 统计学生表中一共有多少个学生
SELECT COUNT(stuid) FROM stu;
SELECT COUNT(1) FROM stu;
SELECT COUNT(*) FROM stu;

8.1、COUNT(*)和COUNT(1)的区别

  这两种方式都可以用来统计表中总数据量,但是他们的实现方式略有不同。

  • COUNT(*)是统计表中的(该行数据同时都不为null)的数据总量,

    也就是说如果有一行所有数据都为null,那么就不会被统计

  • COUNT(1)是通过在该表的表结构中添加一列,该列的数据都为1,

    最终是通过统计该列中有多少个数据为1的数量,即为数据总数。

9、排序

升序: asc 降序: desc

-- 9 、排序  默认升序
SELECT * FROM stu ORDER BY stuage;
-- 升序: asc   降序: desc
SELECT * FROM stu ORDER BY stuage ASC;
SELECT * FROM stu ORDER BY stuage DESC;
-- 根据查询结果的第二列进行降序排序
SELECT stuname,stuage FROM stu ORDER BY 2 DESC;

10、常用的聚合函数

count sum avg max min
计数 求和 平均值 最大值 最小值
-- count 计数;sum 求和;avg 平均值;max 最大值;min 最小值
SELECT SUM(score) FROM stu_score;
SELECT AVG(score) FROM stu_score;

11、null 的特殊性

1、在sql中,任何数据和null做运算,运行的结果还是null

4+NULL
NULL/0

2、null不是0
3、可以通过特定的函数,将null设置为特定的值。注意有null值时,结果为null
4、将字段中null值替换为指定值的方法

-- 方法1:使用isnull替换
select keyId,isnull(info,'替换null值') as info from test 
-- 方法2:使用case when 替换
select keyId,case when info is null then '替换null值' else info end as info from test 
-- 方法3:使用coalesce替换相应的值
select keyId , coalesce(info,'替换null值') as info from test 
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
9578次浏览 87人参与
# 你的实习产出是真实的还是包装的? #
1710次浏览 40人参与
# MiniMax求职进展汇总 #
23826次浏览 308人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7449次浏览 43人参与
# 简历第一个项目做什么 #
31547次浏览 330人参与
# 重来一次,我还会选择这个专业吗 #
433345次浏览 3926人参与
# 米连集团26产品管培生项目 #
5725次浏览 214人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
186964次浏览 1120人参与
# 牛客AI文生图 #
21408次浏览 238人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152287次浏览 887人参与
# 研究所笔面经互助 #
118866次浏览 577人参与
# 简历中的项目经历要怎么写? #
310048次浏览 4192人参与
# AI时代,哪些岗位最容易被淘汰 #
63387次浏览 803人参与
# 面试紧张时你会有什么表现? #
30485次浏览 188人参与
# 你今年的平均薪资是多少? #
213006次浏览 1039人参与
# 你怎么看待AI面试 #
179843次浏览 1234人参与
# 高学历就一定能找到好工作吗? #
64307次浏览 620人参与
# 你最满意的offer薪资是哪家公司? #
76432次浏览 374人参与
# 我的求职精神状态 #
447981次浏览 3128人参与
# 正在春招的你,也参与了去年秋招吗? #
363237次浏览 2637人参与
# 腾讯音乐求职进展汇总 #
160581次浏览 1111人参与
# 校招笔试 #
470371次浏览 2963人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务