史上最全SQL基础知识总结(理论+举例)

2023-11-13

    <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/kdoc_html_views-1a98987dfd.css">
    <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-25cebea3f9.css">
            <div id="content_views" class="markdown_views prism-atom-one-dark">
                <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
                    <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
                </svg>
                <p></p> 

SQL基础知识

一、SQL 概述

1、什么是 SQL

==SQL(Structured Query Language)==是“结构化查询语言”,它是对关系型数据库的操作语言。它可以应用到所有关系型数据库中,例如:MySQL、Oracle、SQL Server 等。SQL 标准(ANSI/ISO)有:

  • SQL-92:1992 年发布的 SQL 语言标准;
  • SQL:1999:1999 年发布的 SQL 语言标签;
  • SQL:2003:2003 年发布的 SQL 语言标签;

这些标准就与 JDK 的版本一样,在新的版本中总要有一些语法的变化。不同时期的数据库对不同标准做了实现。

虽然 SQL 可以用在所有关系型数据库中,但很多数据库还都有标准之后的一些语法,我们可以称之为“方言”。例如 MySQL 中的 LIMIT 语句就是 MySQL 独有的方言,其它数据库都不支持!当然,Oracle 或 SQL Server 都有自己的方言。

2、语法要求

  • SQL 语句可以单行或多行书写,以分号结尾;
  • 可以用空格和缩进来来增强语句的可读性;
  • 关键字不区别大小写,建议使用大写;

二、SQL 分类

  • DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
  • DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);
  • DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
  • DQL(Data Query Language):数据查询语言,用来查询记录(数据)

三、DDL(Data Definition Language):数据定义语言

基本操作

查看所有数据库:show databases;

切换数据库:use mydb1,切换到 mydb1 数据库;

1.操作数据库

  1. 创建数据库:CREATE DATABASE [IF NOT EXISTS] mydb1;

例如:CREATE DATABASE mydb1,创建一个名为 mydb1 的数据库。如果这个数据已经存在,那么会报错。
例如 CREATE DATABASE IF NOT EXISTSmydb1,在名为 mydb1 的数据库不存在时创建该库,这样可以避免报错。


  1. 删除数据库:DROP DATABASE [IF EXISTS] mydb1;

例如:DROP DATABASE mydb1,删除名为 mydb1 的数据库。如果这个数据库不存在,那么会报错。DROP DATABASE IF EXISTS mydb1,就算 mydb1不存在,也不会的报错。


  1. 修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8

修改数据库 mydb1 的编码为 utf8。注意,在 MySQL 中所有的 UTF-8 编码都
不能使用中间的“-”,即 UTF-8 要书写为 UTF8。


2.数据类型

MySQL 与 Java、C 一样,也有数据类型MySQL 中数据类型主要应用在列上。
常用类型:

  • int:整型
  • double:浮点型,例如 double(5,2)表示最多 5 位,其中必须有 2 位小数,即最大值为 999.99;
  • decimal:泛型型,在表单线方面使用该类型,因为不会出现精度缺失问题;
  • char:固定长度字符串类型;(当输入的字符不够长度时会补空格)
  • varchar:固定长度字符串类型;
  • text:字符串类型;
  • blob:字节类型;
  • date:日期类型,格式为:yyyy-MM-dd;
  • time:时间类型,格式为:hh:mm:ss
  • timestamp:时间戳类型;

3.操作表

创建表

CREATE TABLE 表名(
	列名 列类型, 
	列名 列类型,
	...... 
);

 
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5

例如,创建stu表

CREATE TABLE stu(
	sid CHAR(6), 
	sname VARCHAR(20), 
	age INT, 
	gender VARCHAR(10)
);

 
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

查看表的结构

DESC 表名;

删除表

DROP TABLE 表名;

修改表

  1. 添加列:给 stu 表添加 classname 列
    ALTER TABLE stu ADD (classname varchar(100));

  2. 修改列的数据类型:修改 stu 表的 gender 列类型为 CHAR(2)
    ALTER TABLE stu MODIFY gender CHAR(2);

  3. 修改列名:修改 stu 表的 gender 列名为 sex
    ALTER TABLE stu change gender sex CHAR(2);

  4. 删除列:删除 stu 表的 classname 列
    ALTER TABLE stu DROP classname;

  5. 修改表名称:修改 stu 表名称为 student
    ALTER TABLE stu RENAME TO student;


四、DML(Data Manipulation Language):数据操作语言

1.插入数据

语法 1:
INSERT INTO 表名(列名 1,列名 2, …) ;

INSERT INTO stu(sid, sname,age,gender) VALUES('s_1001', 'zhangSan', 23, 'male');

 
 
 
 
  • 1
INSERT INTO stu(sid, sname) VALUES('s_1001', 'zhangSan');

 
 
 
 
  • 1

语法 2:
INSERT INTO 表名 VALUES(值 1,值 2,…);
因为没有指定要插入的列,表示按创建表时列的顺序插入所有列的值:

INSERT INTO stu VALUES('s_1002', 'liSi', 32, 'female');

 
 
 
 
  • 1

注意:所有字符串数据必须使用单引用!

2.修改数据

语法:
UPDATE 表名 SET 列名 1=值 1, … 列名 n=值 n [WHERE 条件];

UPDATE stu SET sname=’zhangSanSan’, age=32, gender=’female’ WHERE sid=’s_1001’;
UPDATE stu SET sname=’liSi’, age=20WHERE age>50 AND gender=’male’;
UPDATE stu SET sname=’wangWu’, age=30WHERE age>60 OR gender=’female’;
UPDATE stu SET gender=’female’WHERE gender IS NULL
UPDATE stu SET age=age+1 WHERE sname=’zhaoLiu’;

 
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5

3.删除数据

语法 1:
DELETE FROM 表名 [WHERE 条件];

DELETE FROM stu WHERE sid=’s_1001’003B;
DELETE FROM stu WHERE sname=’chenQi’ OR age > 30;
DELETE FROM stu;

 
 
 
 
  • 1
  • 2
  • 3

语法 2:
TRUNCATE TABLE 表名;

TRUNCATE TABLE stu;

 
 
 
 
  • 1

两者之间的区别:
虽然 TRUNCATE 和 DELETE 都可以删除表的所有记录,但有原理不同。DELETE的效率没有 TRUNCATE 高!
TRUNCATE 其实属性 DDL 语句,因为它是先 DROP TABLE,再 CREATE TABLE。
而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的(回滚是事务的知识!)。


五、DCL(Data Control Language):数据控制语言

1.创建用户

语法:
CREATE USER ‘用户名’@地址 IDENTIFIED BY '密码';

CREATE USER ‘user1’@localhost IDENTIFIED BY123;
CREATE USER ‘user2’@’%’ IDENTIFIED BY123;

 
 
 
 
  • 1
  • 2

2.给用户授权

语法:
GRANT 权限 1, … , 权限 n ON 数据库.* TO ‘用户名’@地址;

GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO user1@localhost;
GRANT ALL ON mydb1.* TO user2@localhost;

 
 
 
 
  • 1
  • 2

3.撤销授权

语法:
REVOKE 权限 1, … , 权限 n ON 数据库.* FROM ‘用户名’@地址;

REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;

 
 
 
 
  • 1

4.查看用户权限

语法:
SHOW GRANTS FOR ‘用户名’@地址;

SHOW GRANTS FOR user1@localhost;

 
 
 
 
  • 1

5.删除用户

语法:
DROP USER ‘用户名’@地址;

DROP USER ‘user1’@localhost;

 
 
 
 
  • 1

6.修改用户密码(以root身份)

语法 :
use mysql;
alter user '用户名'@localhost identified by '新密码';


六、DQL(Data Query Language):数据查询语言

数据库执行 DQL 语句不会对数据进行改变,而是让数据库发送结果集给客户端。

语法:
select 列名 ----> 要查询的列名称
from 表名 ----> 要查询的表名称
where 条件 ----> 行条件
group by 分组列 ----> 对结果分组
having 分组条件 ----> 分组后的行条件
order by 排序列 ----> 对结果分组
limit 起始行, 行数 ----> 结果限定

创建数据库:Info,在 Info 下创建如下表:

☆学生表:stu:
在这里插入图片描述
在这里插入图片描述

CREATE TABLE stu (
	sid CHAR(6), 
	sname VARCHAR(50), 
	age INT, 
	gender VARCHAR(50)
);
INSERT INTO stu VALUES('S_1001', 'liuYi', 35, 'male');
INSERT INTO stu VALUES('S_1002', 'chenEr', 15, 'female');
INSERT INTO stu VALUES('S_1003', 'zhangSan', 95, 'male');
INSERT INTO stu VALUES('S_1004', 'liSi', 65, 'female');
INSERT INTO stu VALUES('S_1005', 'wangWu', 55, 'male');
INSERT INTO stu VALUES('S_1006', 'zhaoLiu', 75, 'female');
INSERT INTO stu VALUES('S_1007', 'sunQi', 25, 'male');
INSERT INTO stu VALUES('S_1008', 'zhouBa', 45, 'female');
INSERT INTO stu VALUES('S_1009', 'wuJiu', 85, 'male');
INSERT INTO stu VALUES('S_1010', 'zhengShi', 5, 'female');
INSERT INTO stu VALUES('S_1011', 'xxx', NULL, NULL);

 
 
 
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

☆雇员表:emp
在这里插入图片描述

CREATE TABLE emp(
	empno INT, 
	ename VARCHAR(50), 
	job VARCHAR(50), 
	mgr INT, 
	hiredate DATE,
	sal DECIMAL(7,2), 
	comm decimal(7,2), 
	deptno INT
) ;
INSERT INTO emp values(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO emp values(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO emp values(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO emp values(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO emp values(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO emp values(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO emp values(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO emp values(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
INSERT INTO emp values(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO emp values(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO emp values(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO emp values(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO emp values(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO emp values(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);

 
 
 
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

☆部门表:dept
在这里插入图片描述

CREATE TABLE dept(
	deptno INT, 
	dname varchar(14),
	loc varchar(13)
);
INSERT INTO dept values(10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept values(20, 'RESEARCH', 'DALLAS');
INSERT INTO dept values(30, 'SALES', 'CHICAGO');
INSERT INTO dept values(40, 'OPERATIONS', 

 
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.基础查询

查询所有列
SELECT * FROM 表名;
(* :通配符,表示所有列)

SELECT * FROM stu;

 
 
 
 
  • 1

查询指定列
SELECT 列名 1, 列名 2, …列名 n FROM 表名;

SELECT sid, sname, age FROM stu;

 
 
 
 
  • 1

2.条件查询

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

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

举例说明
查询性别为女,并且年龄小于 50 的记录
SELECT * FROM stu
WHERE gender='female' AND age<50;

查询学号为 S_1001,或者姓名为 liSi 的记录
SELECT * FROM stu
WHERE sid ='S_1001' OR sname='liSi';

查询学号为 S_1001,S_1002,S_1003 的记录
SELECT * FROM stu
WHERE sid IN ('S_1001','S_1002','S_1003')

查询学号不是 S_1001,S_1002,S_1003 的记录
SELECT * FROM stu
WHERE sid NOT IN ('S_1001','S_1002','S_1003');

查询年龄为 null 的记录
SELECT * FROM stu
WHERE age IS NULL;

查询年龄在 20 到 40 之间的学生记录
SELECT * FROM stu
WHERE age>=20 AND age<=40;
或者
SELECT * FROM stu
WHERE age BETWEEN 20 AND 40;

查询性别非男的学生记录
SELECT * FROM stu
WHERE gender!='male';
或者
SELECT * FROM stu
WHERE gender<>'male';
或者
SELECT * FROM stu
WHERE NOT gender='male';

查询姓名不为 null 的学生记录
SELECT * FROM stu
WHERE NOT sname IS NULL;
或者
SELECT * FROM stu
WHERE sname IS NOT NULL;


3.模糊查询

SELECT 字段 FROM 表 WHERE 某字段 Like 条件
其中关于条件,SQL 提供了两种匹配模式:

  1. % :表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情
    况下若是中文,请使用两个百分号(%%)表示。
  2. _: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字 符长度语句。

举例说明
查询姓名由 5 个字母构成的学生记录
SELECT * FROM stu
WHERE sname LIKE '_ _ _ _ _';

查询姓名由 5 个字母构成,并且第 5 个字母为“i”的学生记录
SELECT * FROM stu
WHERE sname LIKE '_ _ _ _i';

查询姓名以“z”开头的学生记录
SELECT * FROM stu
WHERE sname LIKE 'z%';
其中“%”匹配 0~n 个任何字母。

查询姓名中第 2 个字母为“i”的学生记录
SELECT * FROM stu
WHERE sname LIKE '_i%';

\查询姓名中包含“a”字母的学生记录
SELECT * FROM stu WHERE sname LIKE '%a%';

4.字段控制查询

去掉重复记录
去除重复记录(两行或两行以上记录中系列的上的数据都相同),例如 emp 表中 sal 字段就存在相同的记录。当只查询 emp 表的 sal 字段时,那么会出现重复记录,那么想去除重复记录,需要使用 DISTINCT:
SELECT DISTINCT sal FROM emp;

查看雇员的月薪与佣金之和
因为 sal 和 comm 两列的类型都是数值类型,所以可以做加运算。如果 sal 或 comm 中有一个字段不是数值类型,那么会出错。
SELECT *,
sal+comm FROM emp;
comm 列有很多记录的值为 NULL,因为任何东西与 NULL 相加结果还是 NULL,所以结算结果可能会出现 NULL。下面使用了把 NULL 转换成数值 0 的函数 IFNULL:
SELECT *, sal+IFNULL(comm,0) FROM emp;

给列名添加别名
在上面查询中出现列名为 sal+IFNULL(comm,0),这很不美观,现在我们给这一列给出一个别名,为 total:
SELECT *, sal+IFNULL(comm,0) AS total FROM emp;
给列起别名时,是可以省略 AS 关键字的:
SELECT *, sal+IFNULL(comm,0) total FROM emp;


5.排序

查询所有学生记录,按年龄升序排序
SELECT * FROM stu
ORDER BY sage ASC;
或者
SELECT * FROM stu ORDER BY sage;

查询所有学生记录,按年龄降序排序
SELECT * FROM stu
ORDER BY age DESC;

查询所有雇员,按月薪降序排序,如果月薪相同时,按编号升序排序
SELECT * FROM emp
ORDER BY sal DESC ,empno ASC;


6.聚合函数

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

  • 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 SUM(sal), COUNT(sal) FROM emp;
或者
SELECT AVG(sal) FROM emp;

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

7.分组查询

分组查询

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

查询每个部门的部门编号和每个部门的工资和:

SELECT deptno, SUM(sal)
FROM emp
GROUP BY deptno;
  • 1
  • 2
  • 3
  • 4

查询每个部门的部门编号以及每个部门的人数:

SELECT deptno,COUNT(*)
FROM emp
GROUP BY deptno;

 
 
 
 
  • 1
  • 2
  • 3

查询每个部门的部门编号以及每个部门工资大于 1500 的人数:

SELECT deptno ,COUNT(*)
FROM emp
WHERE sal>1500`
GROUP BY deptno;

 
 
 
 
  • 1
  • 2
  • 3
  • 4

HAVING 子句

查询工资总和大于 9000 的部门编号以及工资和:

SELECT deptno, SUM(sal)
FROM emp
GROUP BY deptno
HAVING SUM(sal) > 9000;

 
 
 
 
  • 1
  • 2
  • 3
  • 4

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

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

查询 5 行记录,起始行从 0 开始
SELECT * FROM emp LIMIT 0, 5;
注意,起始行从 0 开始,即第一行开始!

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

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

9.多表连接查询: 表连接分为内连接和外连接。

他们之间最主要的区别:内连接仅选出两张表中互相匹配的记录,外连接会选出其他不匹配的记录。

例如: 以下是员工表 staff 和职位表 deptno:
在这里插入图片描述

内连接

select staff.name,deptname from staff,deptno where
staff.name=deptno.name;

 
 
 
 
  • 1
  • 2

在这里插入图片描述

外连接分为左连接和右连接

左连接:包含左边表中所有的记录,右边表中没有匹配的记录显示为 NULL。
右连接:包含右边表中所有的记录,左边表中没有匹配的记录显示为 NULL。

外连接(左连接):

select staff.name,deptname from staff left join deptno onstaff.name=deptno.name;

 
 
 
 
  • 1

在这里插入图片描述
外连接(右连接):

select deptname,deptno.name from staff right join deptno ondeptno.name=staff.name;

 
 
 
 
  • 1

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

史上最全SQL基础知识总结(理论+举例) 的相关文章

  • 想要从字符格式转换为带小数的数字格式

    想要将字符格式 00001000000 转换为10000 00 请帮我 我已经尝试过 select to number 00012300 9999999999 99 nls numeric characters from dual 这个脚本
  • 获取MySql中重复行的列表

    我有一张这样的桌子 ID nachname vorname 1 john doe 2 john doe 3 jim doe 4 Michael Knight 我需要一个查询 该查询将从具有相同 nachname 和 vorname 的记录
  • 选择不带 FROM 但有多于一行的选择

    如何在不从现有表中进行选择的情况下生成 2 行 2 列的表 我正在寻找的是一个返回的选择语句 e g id value 1 103 2 556 Use UNION http dev mysql com doc refman 5 0 en u
  • SQL:两个没有完整列匹配的表的并集

    我有一个table A其中有一组列A1 A2和一个具有一组列的 table bB1 B2 碰巧的是A2 B1但其余列不匹配 也不应该匹配 我想附加表格 所以我使用UNION ALL 对于不匹配的列 我使用null as COLUMN NAM
  • 将游标中的数据合并为一个

    我有一个存储过程 它多次执行另一个存储过程 我需要联合并返回数据 这是在执行第二个过程后得到的 我可以以某种方式将多个游标中的数据合并到另一个游标中吗 没有临时表或类表数据类型是否可能 编辑 联合的游标计数实际上是 n 其中 n 是 1 2
  • 一组记录中某些值相同的唯一约束

    DBMS MS Sql Server 2005 标准版 我想创建一个表约束 以便只有一个记录在表的子集中具有特定值 其中行共享特定列中的值 这可能吗 Example 我的 myTable 中有一些记录 其中有一个非唯一的外键 fk1 以及一
  • 仅使用 SQL 中的 MAX 函数更新重复行

    我有一张这样的桌子 假设为了举例 NAME是一个唯一的标识符 NAME AGE VALUE Jack Under 65 3 Jack 66 74 5 John 66 74 7 John Over 75 9 Gill 25 35 11 Som
  • 在 Oracle 中创建数据库链接时出错

    我有两个数据库 需要编写跨数据库查询 所以我试图创建一个数据库链接 CREATE PUBLIC DATABASE LINK DBLink CONNECT TO SchemaName IDENTIFIED BY 123 using DBNam
  • 导致聚集索引扫描的日期参数

    我有以下查询 DECLARE StartDate DATE 2017 09 22 DECLARE EndDate DATE 2017 09 23 SELECT a col1 a col2 b col1 b col2 b col3 a col
  • 为什么 Orchard 在执行内容项查询时如此慢?

    假设我想查询所有 Orchard 用户 ID 并且还想包括那些已被删除 也称为软删除 的用户 该数据库包含大约 1000 个用户 Option A 大约需要 2 分钟 Orchard ContentManagement IContentMa
  • 带有 viewbags 的 MVC 数据集

    如何将数据集放入视图袋中并在视图中显示结果 我有一个来自模型的数据集 并将其写入视图包 我想使用 foreach 循环从视图中的视图包中获取数据行 我已经有一个变量进入视图 所以我无法正常传递数据集 每页我还会有许多其他数据集 所以我认为
  • 动态SQL生成列名?

    我有一个查询 我正在尝试将行值转换为列名称 目前我正在使用SUM Case As ColumnName 声明 像这样 SELECT SKU1 SUM Case When Sku2 157 Then Quantity Else 0 End A
  • 将两个sql查询合并为一个查询

    如何组合以下 2 个查询以便获得两列 PAYMODE 和付款类型 两个查询都很相似 并且针对同一个表 将两个 sql 查询合并为一个查询 这样我就不需要执行两个单独的查询 SELECT ETBL DESC TXT as PAYMODE FR
  • 单向关系和双向关系的区别

    我想知道这两个词是什么意思 我遇到他们是在教义的文档 http www doctrine project org documentation manual 2 0 en association mapping 但我不明白他们的意思 这与常见
  • 如何比较表中最后一个和倒数第二个条目的值?

    我在 Oracle 中有一个名为quotes 的表 其中包含两列 date 和value 我想比较表中最后一个条目和倒数第二个条目的值 在此示例中 我想获取日期13 1 和 11 1在一行中以及每个日期的值之间的差异 10 5 5 报价表
  • SQL:将现有列设置为 MySQL 中的主键

    我有一个包含 3 列的数据库 id name somethingelse 该表没有设置索引 我收到 未定义索引 在 phpmyadmin 中id 是一个 7 位字母数字值 每行都是唯一的 我想将 Drugid 设置为主键 索引 我不知道有没
  • 删除重复的 SQL 记录以允许唯一键

    我在 MYSQL 数据库中有一个表 销售 该表理应强制执行唯一约束以防止重复 事实证明 首先删除欺骗并设置约束有点棘手 表结构 简化 id 唯一 autoinc 产品编号 目标是强制product id 的唯一性 我想要应用的重复数据删除策
  • 将 copyfromrecordset 写入范围

    我有以下 vba 它从单元格 C10 开始读取 MCO 直到其为空 并将从 SQL 数据库获取机器数量 解密和升级机器数量 这工作正常 但我在获取相应行中的数据时遇到问题 目前它总是将数据写入 D10 因为我已经对其进行了硬编码 但我不确定
  • 无法将方法组“Read”转换为非委托类型“bool”

    我正在尝试使用SqlDataReader检查条目是否存在 如果存在则返回ID 否则返回false 当我尝试编译时 出现错误 无法将方法组 Read 转换为非委托类型 bool 我一直在遵循在 VB 中找到的示例 但似乎翻译可能不正确 pri
  • 列的 SQL MAX(包括其主键)

    Short 从下面的 sql select 中 我获取了 cart id 和该购物车中最高价值商品的值 SELECT CartItems cart id MAX ItemValues value FROM CartItems INNER J

随机推荐

  • LLM推理部署(一):LLM七种推理服务框架总结

    自从ChatGPT发布以来 国内外的开源大模型如雨后春笋般成长 但是对于很多企业和个人从头训练预训练模型不太现实 即使微调开源大模型也捉襟见肘 那么直接部署这些开源大模型服务于企业业务将会有很大的前景 本文将介绍七中主流的LLM推理和服务开
  • 数字电路和模拟电路-10时序逻辑电路的分析和设计

    前言 学习同步时序逻辑电路的分析 设计 一 同步时序逻辑电路的分析 1 时序逻辑电路的分析步骤 步骤一 逻辑图 同步or异步 计数器or状态机 一条总线同步 多条总线是异步 计数器无输入 状态机有输入 状态机还分摩尔型和米里型 步骤二 驱动
  • zotero配置

    1 下载安装 2 配置坚果云同步 编辑 首选项 同步 输入zotero账户密码进行数据同步 文件同步选择坚果云同步 3 配置茉莉花插件 安装pdftk
  • C++-函数模板特化如何避免重复定义

    本文转自 https www cnblogs com dracohan p 3401660 html 转来收藏以便查阅 感谢原作者 另一篇相关博文 https blog csdn net shixin 0125 article detail
  • 【Tensorflow 2.12 电影推荐系统之排序模型】

    Tensorflow 2 12 电影推荐系统之排序模型 学习笔记 导入相关模块 准备数据 加载数据 数据预处理 获取词汇表 构建模型 定义评分排序模型 定义损失函数以及模型评估指标 定义完整的评分排序模型 训练和评估 创建排序模型实例 缓存
  • 2022年大厂Android高级面试题分享,安卓Apk安装过程

    现在的IT行业竞争压力越来越大 尤其是Android开发行业 而很多Android程序员却每天都在重复CRUD 原地徘徊 今年年初 你就想改变现状 于是在网上刷了大量面试题 强行记下之后 开始参加面试 但是你发现 现在的面试 却越来越难了
  • 2017.03 JAVA 面试题 中高级

    2017年3月份 从北京跳槽来到深圳 各种面试 面试的大部分公司都发了offer 现整理出面试的问答题目 如下 一 基础知识 1 集合类 List和Set比较 各自的子类比较 ArrayList Vector LinkedList Hash
  • angular 跨平台&dom操作&组件嵌套&投影

    angular 跨平台 angular 是跨平台的 不仅仅可以再pc端运行 anulgar 为跨平台做的工作 为了能够支持跨平台 Angular 通过抽象层封装了不同平台的差异 比如定义了抽象类 Renderer2 抽象类 RootRend
  • 小程序base64 图片for循环多个展示不了_微信小程序基础之一

    1 微信小程序在wxss中不能直接引用图片 微信小程序在wxss中使用背景图片会报错 渲染层网络层错误 pages demo demo wxss 中的本地资源图片无法通过 WXSS 获取 可以使用网络图片 或者 base64 或者使用
  • Anaconada 几个系统基本命令

    1 python 命令加入系统路径 找出 anaconada 安装路径 打开系统变量并写入该路径即可在系统内运行 python 命令 2 pip 命令写入系统路径 pip 的写入路途则是如下 方法相同 3 conda 的运行 conda c
  • 028.PowerDesigner16:导入SQL脚本、显示中文注释

    导入SQL脚本 生成物理模型 1 击File gt Reverse Engineer gt Database 2 弹出弹窗对模型进行命名 同时在DBMS下拉选择框中需要选择自己对应的数据库类型 点击确定 3 新的弹窗 选中Using scr
  • 西米支付:如何选择自己需求的接口(传奇游戏支付接口)

    传奇游戏是中国网游无法绕过的一座碑 也是千万初代网游玩家的游戏启蒙 2001年一款游戏横空出世 靠着超爽的打击感 和多人同屏战斗迅速在网游火了起来 它就是传奇 随着 传奇 盛大的成长 兴盛与衰弱 一路走来 已经在14年 游戏的充值模式也由以
  • 达梦8常用性能优化相关SQL

    一 内存性能相关 1 1 查看数据库当前运行内存大小 select select sum n pages page size 1024 1024 from v bufferpool MB as BUFFER SIZE select sum
  • 计算shell脚本执行的时间

    我们在使用shell脚本进行一些批量活动的时候 在有的场景下会需要知道脚本执行用了多长的时间 一谈到这个话题 我们一般的想法就是记录时间再开始阶段 执行完成后再记录时间 然后求时间差 这样是可以的 但是要进行格式的转换 比较麻烦 今天我们使
  • Mysql 问题集锦

    一 Host is not allowed to connect to this MySQL server解决方法 1 在安装Mysql数据库的主机上登录root用户 mysql u root p use mysql select host
  • 巧用闭包拷贝对象

    我们知道对象的赋值实际上是赋值它的应用 并没有产生对象的副本 如 var p1 x 1 y 2 var p2 p1 p2 x alert p1 x 得出的结果是2 改变p2 x的值 p1 x的值随之改变 当然可以重新new一个对象 但是这样
  • 如何把项目打jar包,然后暴露接口给第三方应用提供服务【实战讲解】

    如何把项目打jar包 然后暴露接口给第三方应用提供服务 实战讲解 下面这个例子 是我在开源项目CR949中使用到的部分代码 作为讲解 发布到这里 jar包中的controller 如何对外暴露接口 这样一个场景 比如 我去gitee上面 下
  • TypeError: __init__() got an unexpected keyword argument ‘autocompletion‘

    1 TypeError init got an unexpected keyword argument autocompletion 在使用mmclassification的时候会出现该错误 看起来是哪里的自动补全出了问题 在报错的文件里会
  • 如何快速下载Python解决在官网下载缓慢问题以及如何安装Python

    不知道你们碰到过这样的情况没有 在Python官网下载Python却很慢 刚开始我还以为是被限速了 后来才了解到这是因为Python官网的服务器是在外网 所以呢那我找到了一个Python的国内下载网址 CNPM Binaries Mirro
  • 史上最全SQL基础知识总结(理论+举例)

    div class markdown views div