当前位置: 首页 > news >正文

SQL server学习03-创建和管理数据表

目录

 一,SQL server的数据类型

1,基本数据类型

2,自定义数据类型

 二,使用T-SQL创建表

1,数据完整性的分类

2,约束的类型

3,创建表时创建约束

4,任务

5,由任务编写的SQL语句 

三,使用T-SQL管理表 

1,创表时添加约束名 

1)添加约束名 

2) 修改由任务编写的SQL语句 (添加约束名)

2,使用ALTER TABLE修改表

1)从表中删除列

2)向表中添加列 

3)修改表中列的长度

4)对指定表添加默认约束 

 3,使用DROP TABLE删除表


通过前一篇SQL server学习02-使用T-SQL创建数据库-CSDN博客的学习

我已经创建好了数据库,接下来开始使用创好的库创表。首先了解表的概念:

  1. 表是数据关系模型中表示实体的方式 
  2. 表是数据库中用来组织和存储数据,具有行列结构的数据库对象,数据库中的数据都存储在表中。
  3. 表由行和列组成。

    值得注意的是,一张表就是一个关系。 表有行和列,关系有记录和字段。表有表名,每个关系都有一个关系名。

    行称为记录,是组织数据的单位,每行都是一条独立的数据记录。
    列称为字段,主要描述数据的属性。

如下就是常见的一张excel二维表。

表分为普通表和系统表。

  1. 普通表由用户创建:用户定义的表也称为标准表,用来存储数据库应用系统中的数据。
  2. 系统表由系统创建:存储了有关数据库服务器的配置,数据库设置,用户和数据库对象的描述等系统信息,用户不能创建。

在同一个数据库中,表名不能重复,在同一张表中列名不允许相同,但在不同的表中列名可以相同。

【ps:同一张表列名重复无意义。由于不同表之间可能存在联系,因此会有相同列名。】

 一,SQL server的数据类型

 在创建表之前,需要考虑要创建的表包含哪些内容,例如一张表包含

  1. 哪些列
  2. 每列都是什么数据类型

可以看到,在创表时,数据类型很关键。SQL server提供了基本数据类型和自定义数据类型。

先来学习基本数据类型(也称系统数据类型)。

1,基本数据类型

基本数据类型是系统本身就自带的,可以直接拿来用,如下👇 

2,自定义数据类型

自定义数据类型不是系统自带的基本数据类型,但用户需要以SQL server系统数据类型为基础创建。

多张表中的列要存储相同类型的数据时,往往要确保这些列具有完全相同的数据类型,长度和为空性(数据的值是否允许为空) ,可以通过用户自定义数据类型来实现。例如:

  1. 电话的长度都为11,非空,且唯一。

    如果某个系统要求电话这一列的长度为11个字符,那么有效的电话内容可以是“12345678912”或“98765432121”,但“123”或“123456”就不符合这个要求。
     
  2. 身份证的长度为18,非空,且唯一。

下面通过SSMS创建一个名为char30的自定义数据类型,要求基于char系统数据类型,大小为30个字符。

 鼠标右击“用户定义数据类型”子节点,可以看到之前的自定义数据类型char30已被排列在“用户自定义数据类型”列表中:

 二,使用T-SQL创建表

不管是在MySQL中还是在SQL server中,创库创表都是一样的关键字"CREATE",如果创库后面接DATABASE ,创表后面则接TABLE 。 

 在SQL server中使用T-SQL语句创表的语法如下:

CREATE TABLE 数据表名
(列名 数据类型[列级完整性约束条件]
[,...n]
[,表级完整性约束条件]
)

 可以看到,在上述语法总,“约束条件”出现了两次。约束时SQL server提供的自动保持数据库完整性的一种方法。之所以存在约束条件,是因为需要保持数据库的完整性(即数据完整性)。

 用户在向表格中添加数据时,有些数据的内容可能与实际情况不相符,例如:

  1. 年龄:1000岁     (没有人能够活到1千岁)
  2. 性别:好             (性别没有“好”,要么是“男”或“女”,要么是美国的97 种性别中的一个)
  3. 身份证号:12     (身份证号必须是18位,极少数是15位)
  4. 邮箱:123           (邮箱格式写错)

可以看到,这些数据都是不可靠的,为了能够保证数据的准确可靠,就需要对数据表进行数据完整性设置。

1,数据完整性的分类

  1.  实体完整性(行完整性):

    指表的每一行在表中是唯一的实体。一般用主键约束 PRIMARY KEY。

    例如,学生表中的每一行代表表中唯一的一名学生,不会有两行或两行以上的记录来表示同一个学生(太浪费空间,没必要)。
     
  2. 域完整性(列完整性):

    指列满足特定的数据类型和约束。可以使用检查约束或非空约束。

    例如,成绩表中成绩这一列的值限定在[0,100],学生表中性别只能为“男”或“女”,年龄非空。
     
  3. 参照完整性(引用完整性):

    指表和表之间的字段指是有关联的(特殊情况是产生在同一张表的不同字段值之间),参照表中的外键值必须存在于被参照表中的主键值中(这句话的意思就是:你要参照我的数据,那么我的外键列在你的表中必须是主键列)。使用外键约束。

    例如,成绩表中的学号这一列(外键)的值必须存在于学生表中学号这一列(主键)的值中。
     
  4. 用户定义的完整性:

    指某一具体的应用必须满足的语义要求或用户实际的业务规则。(较少使用)
     

 接下来了解SQL server中的约束类型。

2,约束的类型

分为:

  1. 检查约束(CHECK)

    指定某列可取值的集合或范围,用于实现域完整性。一张表可以有多个检查约束。

    在设置检查约束时,需要加上逻辑表达式,即:CHECK(逻辑表达式)
     
  2. 默认约束(DEFAULT)

    若在表中定义了默认值约束,用户在插入新的数据行时,如果没有为该列指定数据,那么系统会将默认值赋值给该列。
     
  3. 主键约束(PRIMARY KEY)

    主键是表中某列或多个列的组合,可以唯一确定一条记录。可以保证实体完整性。每张表只能有一个主键,主键不能为空(即如果一个字段为主键,就必须同时设置为非空约束)。
     
  4. 外键约束(FOREIGN)

    表与表之间是有关系的,有两张表分别为表A和表B,两张表中有相同的列m,假设列m在表A中是主键(或具有唯一约束),则列m在表B中为外键,需要使用外键约束。语法如下:
     
    --表A中
    CREATE TABLE A(
    列名m 数据类型 约束条件为主键PRIMARY KEY,
    )--表B中
    CREATE TABLE B(
    列名m 数据类型,
    FOREIGN KEY (m) REFERENCES A(m)
    )


    此时,表A称为主表(或被参考表),表B为从表或参考表。存在相互联系的两种表中,谁有主键,谁就是主表。

    外键表示一张表中的列于另外一张表中列的引用关系,以保证不同表中数据的一致性。用于实现参照完整性。
  5. 唯一约束(UNIQUE)

    用于指定表中某列或多个列的组合值,具有唯一性,确保在非主键列中输入非重复值。可以保证实体的完整性。虽然这点和主键约束很像,但是使用唯一约束的字段允许为空null,并且只能有一个该字段值为空,即如果有一条记录的该字段为空,那么其他记录的该字段必须有值,并且这些值必须是唯一的。在一张表中,唯一约束可有多个,而主键约束只能有一个。

    例如,现在我有一张表的数据如下,sphone设置了唯一约束:
     
    snosphone
    1153xxxxxxxx
    2null
    3189xxxxxxxx

    如果再试图插入另一条记录,如果sphone也为空,就会违反唯一约束,从而导致插入失败。

  6. 非空约束(NOT NULL)

    指定表中的某些列必须有具体值,可以实现域完整性。
     

知道了数据完整性和约束条件这两个概念,就可以在创建表的同时创建约束,也可以在修改表时创建约束。

为了方便后期删除指定约束,有些时候在创建约束的时候可以给当前的约束指定一个约束名字(约束名),删除表中指定约束时,可以使用指定约束的约束名来进行删除该约束。 constraint拘束。

添加表中约束的语法如下👇

ALTER TABLE 表名
ADD CONSTRAINT 约束名 约束条件(表中需要加指定约束的列名)

删除表中约束时,使用关键字DROP,如下👇

ALTER TABLE 表名
DROP CONSTRAINT 约束名;

一般不用自己写,使用默认的约束名就行。

3,创建表时创建约束

语法格式如下:

CREATE TABLE 数据表名(从表)
(
列名 数据类型,
.
.
.
FOREIGN KEY (列名) REFERENCES 主表名(列名)
)

4,任务

在StuScore数据库中,根据需要还需要创建系部表,班级表和用户表。使用T-SQL语句按照下表所示的表结构创建所需的三张表。以下是数据库中各张表的结构👇

注意点:

  1. 学生表不是第一张先创的表,从图中可以看到,学生表有一个班级编号外键classid,表示在学生表students和班级表classes之间,班级表是主表,学生表是从表。因此要先将创建班级表,再创建学生表。
  2. 根据之前所学的约束条件,上面的建表就会很简单,使用默认的约束条件。
  3. 约束条件:

    主键  PRIMARY KY
    检查  CHECK(gender='男' or gender='女')
    外键  FOREIGN KEY
    唯一  UNIQUE
     

上述表中,唯一特别的就是成绩表score中的sno和cno都是主键约束,通过之前的学习,我知道了一张表只能有一个主键约束。

为什么成绩表score中会有两个主键?

答:因为每个学生可以选修多门课,所以成绩表中的学生学号sno就会有重复,这意味着仅使用sno作为主键无法保证数据的实体完整性,因为它不能唯一标识每一条成绩记录。然而,每个学生在同一门课程中只会有一条成绩记录,因此sno和cno的组合可以唯一标识每一条成绩记录。通过将这两个字段合并为一个复合主键,能够有效地保证数据的实体完整性。

复合主键”:就如上面的情况,一张表只能有一个主键,但是有些时候需要多个字段同时为一个主键,这种时候就需要使用到复合主键。

值得注意的是,因为我是事先看表结构来创表的,因此,我知道要用到复合主键,sno和cno先不加任何约束,之后再一起添加主键约束。

如果不小心将学号设置成了主键,就需要先使用如下语句删掉原有的主键,再添加复合主键进去。

--删除约束
ALTER TABLE 表名
DROP CONSTRAINT 约束名  -- 添加复合主键约束
ALTER TABLE 表名
ADD CONSTRAINT 约束名  PRIMARY KEY(列名1,列名2)

上面这张表主要是用于连接数据库,对应数据库的sa用户及密码。 如果后面做项目的话,会用到。

按照生活常识:

  1. 没有系部的成立,就没有班级
  2. 学生达到一定人数,才会开设课程。
  3. 没有学生考试,就不会有成绩。

可以看到,首先应该创建的是系部表,再是班级表,接着就是学生表,课程表,成绩表。

编写的sql语句如下:

5,由任务编写的SQL语句 

USE Stuscore  --之前创建的数据库
----系部表
-- 检查并删除表 dept
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'dept' AND type = 'U')DROP TABLE dept
CREATE TABLE dept(deptno char(5) NOT NULL PRIMARY KEY,dname nchar(10) NOT NULL,dean nchar(4),phone char(8) UNIQUE
);--班级表
-- 检查并删除表 classes
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'classes' AND type = 'U')DROP TABLE classes;
CREATE TABLE classes(classid char(6) NOT NULL PRIMARY KEY,speciality nchar(12) NOT NULL,deptno char(5) NOT NULL, counselor nchar(4),FOREIGN KEY (deptno) REFERENCES dept(deptno)
);--学生表
-- 检查并删除表 students
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'students' AND type = 'U')DROP TABLE students;
CREATE TABLE students
(sno char(8) NOT NULL PRIMARY KEY,sname nchar(4) NOT NULL,gender nchar(1) CHECK(gender='男' or gender='女'),classid char(6) NOT NULL,  birthday date,phone char(13) UNIQUE,FOREIGN KEY (classid) REFERENCES classes(classid)
)--课程表
-- 检查并删除表 courses
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'courses' AND type = 'U')DROP TABLE courses;
CREATE TABLE courses
(cno char(10) NOT NULL PRIMARY KEY,cname nvarchar(20) NOT NULL,period int NOT NULL,credit tinyint NOT NULL,  type nchar(5) NOT NULL
)--成绩表
-- 检查并删除表 score
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'score' AND type = 'U')DROP TABLE score;
CREATE TABLE score
(sno char(8) NOT NULL,cno char(10) NOT NULL,CONSTRAINT PK_score_sno_cno PRIMARY KEY(sno, cno),grade tinyint CHECK(grade>=0 and grade<=100),FOREIGN KEY (sno) REFERENCES students(sno), FOREIGN KEY (cno) REFERENCES courses(cno)    
)--用户表
-- 检查并删除表 users
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'users' AND type = 'U')DROP TABLE users;
CREATE TABLE users(login char(10) NOT NULL PRIMARY KEY,username nchar(5) NOT NULL,  pwd char(10) NOT NULL
)-- 检查是表中的字段是否完整
SELECT * FROM dept
SELECT * FROM classes
SELECT * FROM students
SELECT * FROM score
SELECT * FROM users

三,使用T-SQL管理表 

1,创表时添加约束名 

这里以系部表dept为例。

1)添加约束名 

系部表中的deptno为主键约束,如果不添加主键约束名的语句就如下编写:

deptno char(5) NOT NULL PRIMARY KEY,

但如果想要给主键加上约束名,就需要先写好列deptno不急着添加主键约束,需要再写一行语句给列deptno添加主键约束及主键约束名:

    deptno char(5) NOT NULL,CONSTRAINT PK_dept_deptno PRIMARY KEY(deptno),

 为什么需要给约束添加上约束名,主要是因为随着时间的推移,有些约束条件需要改变,比方说,成绩表中的成绩grade现在的约束是0~100分,但是满分可能会变成150分,即约束为0~150。

如果想要在不删除表格的前提下修改该约束,就需要通过约束名来修改该约束条件。

如果不给约束条件加上约束名,系统会为该约束条件分配名字,但由系统给的约束名字会变。

使用如下语句查看系统给的约束名(这里是dept表,查看主键PK):

SELECT name FROM sys.key_constraints WHERE parent_object_id = OBJECT_ID('dept') AND type = 'PK';

先不手动添加约束名,dept表的deptno列约束名就会随着程序的每一次运行而改变,如下👇:

第一次执行下面的语句: 

 再次执行下面的语句: 

仔细看,会发现表示主键约束的关键字PK及表名dept不变,但是后面的约束名会变。 如果想要通过约束名来删除该约束无疑是天方夜谭。因此建议只要含有主键约束的列最好都加上对应的约束名。约束名可以写成如下形式:

约束条件单词首位字母大写_数据表名_被添加约束的列名

手动添加约束名之后再去查看约束名,就不会随着程序的运行而改变: 

2) 修改由任务编写的SQL语句 (添加约束名)

--USE Stuscore  --之前创建的数据库----系部表
-- 检查并删除表 dept
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'dept' AND type = 'U')DROP TABLE dept
CREATE TABLE dept(dno char(5) NOT NULL CONSTRAINT PK_dept_dno PRIMARY KEY(dno), --dno系编号 dne nchar(100) NOT NULL,  --dne系名 dept nameddn nchar(100), --ddn系主任  dept deandpe char(11),   --dpe系联系电话 dept phoneCONSTRAINT CK_deptno_dpn UNIQUE(dpe)
)--班级表
-- 检查并删除表 classes
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'classes' AND type = 'U')DROP TABLE classes;
CREATE TABLE classes(cno char(6) NOT NULLCONSTRAINT PK_classes_cno  PRIMARY KEY(cno), --cno班级编号cne nchar(100) NOT NULL,  --cne班级名 classes namedno char(5) NOT NULL,  --dno系编号ccr nchar(100),  --班级辅导员 classes counsellorCONSTRAINT FK_dept_dno FOREIGN KEY (dno) REFERENCES dept(dno)
);--学生表
-- 检查并删除表 students
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'students' AND type = 'U')DROP TABLE students;
CREATE TABLE students
(sno char(8) NOT NULL  CONSTRAINT PK_students_sno  PRIMARY KEY(sno),  --sno学生编号sne nchar(100) NOT NULL,  --sne 学生名 students namessx nchar(6)CONSTRAINT CK_students_ssx  CHECK(ssx='male' or ssx='female'), --ssx学生性别 students sexcno char(6) NOT NULL,    --cno班级编号sbd date,  --sbt学生出生日期 students birth dayspe char(11) CONSTRAINT UQ_students_spe UNIQUE(spe),   --spe学生联系方式 students phonesnn nvarchar(100)  CONSTRAINT DF_students_snn DEFAULT 'China', --snn学生国籍 students nationCONSTRAINT FK_students_cno FOREIGN KEY (cno) REFERENCES classes(cno)
);--课程表
-- 检查并删除表 courses
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'courses' AND type = 'U')DROP TABLE courses;
CREATE TABLE courses
(cno char(10) NOT NULLCONSTRAINT PK_courses_cno  PRIMARY KEY(cno),   --cno课程编号 cne nvarchar(100) NOT NULL,   --cne 课程名 courses namecpd int NOT NULL,      --cpd课程学时  courses periodcct tinyint NOT NULL,   --cct  课程学分  courses creditcte nchar(20) NOT NULLCONSTRAINT CK_courses_type CHECK(cte='optional_course' or cte='required_course')  --cte课程类型 courses type
)--成绩表
-- 检查并删除表 score
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'score' AND type = 'U')DROP TABLE score;
CREATE TABLE score
(sno char(8) NOT NULL, cno char(10) NOT NULL,CONSTRAINT PK_score_sno_cno PRIMARY KEY(sno, cno),get tinyint,  --get 成绩得分CONSTRAINT CK_score_get  CHECK(get>=0 and get<=100),CONSTRAINT FK_score_sno FOREIGN KEY (sno) REFERENCES students(sno), CONSTRAINT FK_score_cno FOREIGN KEY (cno) REFERENCES courses(cno)    
)--用户表
-- 检查并删除表 users
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'users' AND type = 'U')DROP TABLE users;
CREATE TABLE users(uln char(100) NOT NULL   CONSTRAINT PK_users_uln  PRIMARY KEY(uln),  --uln 用户登录 users loginune nchar(100) NOT NULL,    --une  用户名  users name  upd char(10) NOT NULL    -- upd 用户登录密码 users password
)-- 检查是表中的字段是否完整
--SELECT * FROM users
SELECT * FROM studentsSELECT * FROM deptSELECT * FROM classesSELECT * FROM score

2,使用ALTER TABLE修改表

有些时候已经创好表,点击执行之后,会存在少列,少约束等问题。这些问题都不用担心,能够在创建好数据表后添加。

可以使用ALTER  TABLE... DROP COLUMN...删除列,ALTER...ADD...添加列。

1)从表中删除列

语法如下: 

ALTER TABLE 数据表名 DROP COLUMN 要删除的列名(无任何约束条件)

 需要注意的是,删除的列必须没有任何约束,这里以用户表users为例,我现在删除主键列login

可以看到,因为有约束条件-主键约束,所以该列无法删除。

但是如果我想要删除没有任何约束的列pwd,是完全可以删除的,如下👇

2)向表中添加列 

 语法如下:

ALTER TABLE 数据表名 ADD 新列的名字 新列的数据类型

依旧可以使用ALTER TABLE关键字将删除的列pwd再添加回来:

3)修改表中列的长度

语法如下: 

ALTER TABLE 数据表明 COLUMN 列名(新的长度)

以上面的用户表users为例,将列pwd的长度由原来的10变成20,可以如下编写语句:

ALTER TABLE users ALTER COLUMN  pwd char(20)

 如果想要查看修改的长度是否生效,可以使用如下语句查看列的长度:

--查看列的长度
SELECT column_name AS 列名, data_type AS 数据类型, character_maximum_length AS 数据长度
FROM information_schema.columns
WHERE table_name = 'users' AND column_name = 'pwd';

如上,长度修改成功。 

4)对指定表添加默认约束 

 这里以学生表students为例,向学生表中添加新列nation国籍 nvarchar(10),默认值为“中国”。

 ALTER TABLE studentsADD nation nvarchar(10)  CONSTRAINT DF_students_nation DEFAULT('中国')

 通过上图可以无法直观的感受到默认值的优势,后面插入数据的时候会更直观。

ALTER TABLE courses ADD  CONSTRAINT DF_courses_cte DEFAULT 'required_course' FOR cte
INSERT INTO dept(dno,dne,ddn,dpe)
VALUES('1','Computer','QiangguoGong','1531111111')INSERT INTO classes(cno,cne,ccr,dno)
VALUES('1','Computer24','JianjunSong','1')INSERT INTO students(sno,sne,ssx,sbd,spe,cno) 
VALUES('1','zs','male','2000.1.1','18911111111','1')INSERT INTO courses(cno,cne,cpd,cct)
VALUES('1','SQLserver DataBase Application principle','96','6')INSERT INTO users(uln,une,upd)
VALUES('SQL_identity','sa','123456')

 3,使用DROP TABLE删除表

 能够创建表自然也就能够删除表。删表的语法如下:

DROP TABLE 数据表名

有问题请在评论区留言或者是私信我,回复时间不超过1天。

相关文章:

SQL server学习03-创建和管理数据表

目录 一&#xff0c;SQL server的数据类型 1&#xff0c;基本数据类型 2&#xff0c;自定义数据类型 二&#xff0c;使用T-SQL创建表 1&#xff0c;数据完整性的分类 2&#xff0c;约束的类型 3&#xff0c;创建表时创建约束 4&#xff0c;任务 5&#xff0c;由任务编写…...

【UE5 “RuntimeLoadFbx”插件】运行时加载FBX模型

前言 为了解决在Runtime时能够直接根据FBX模型路径直接加载FBX的问题&#xff0c;推荐一款名为“RuntimeLoadFBX”的插件。 用法 插件用法如下&#xff0c;只需要指定fbx的地址就可以在场景中生成Actor模型 通过指定输入参数“Cal Collision”来设置FBX模型的碰撞 还可以通过…...

【潜意识Java】深入理解 Java 面向对象编程(OOP)

目录 什么是面向对象编程&#xff08;OOP&#xff09;&#xff1f; 1. 封装&#xff08;Encapsulation&#xff09; Java 中的封装 2. 继承&#xff08;Inheritance&#xff09; Java 中的继承 3. 多态&#xff08;Polymorphism&#xff09; Java 中的多态 4. 抽象&…...

windows同时使用多个网卡

windows同时链接了有线网络,多个无线网卡,默认会使用有线网络,如果想要局域网内使用某个特定的网络,可以设置静态ip 1. 首先删除原来的静态网络(不冲突可以不删除),我这里usb无线网卡切换过usb插口,这里需要删除原来的. 使用 route print 查看接口列表及静态路由信息 route p…...

Spark执行计划解析后是如何触发执行的?

在前一篇Spark SQL 执行计划解析源码分析中&#xff0c;笔者分析了Spark SQL 执行计划的解析&#xff0c;很多文章甚至Spark相关的书籍在讲完执行计划解析之后就开始进入讲解Stage切分和调度Task执行&#xff0c;每个概念之间没有强烈的关联&#xff0c;因此这中间总感觉少了点…...

B4X编程语言:B4X控件方法汇总

1、AddNode、AddView方法 AddNode(Node As javafx.scence.Node,Left As Double,Top As Double,Width As Double,Height As Double) B4J控件 AddView(View As javafx.scence.Node,Left As Double,Top As Double,Width As Double,Height As Double) B4J的B4XView …...

基于XML配置Bean和基于XML自动装配

目录 基于XML配置Bean id分配规则 通过id获取bean 通过类型获取bean 通过C命名空间配置bean 使用C命名空间 通过P命名空间配置bean 通过util:list进行配置bean 指定id&#xff0c;直接ref引用过来 通过外部属性文件配置Bean Bean信息重用&#xff08;继承&#xff09;…...

全排列 dfs

给定一个由不同的小写字母组成的字符串&#xff0c;输出这个字符串的所有全排列。 我们假设对于小写字母有 a<b<…<y<z &#xff0c;而且给定的字符串中的字母已经按照从小到大的顺序排列。 输入格式 输入只有一行&#xff0c;是一个由不同的小写字母组成的字符串…...

linux内存相关命令的尝试

文章目录 前言freeMem 部分的解释Swap 部分的解释 vmstatProcs (进程)Memory (内存)Swap (交换)IO (磁盘 I/O)System (系统)CPU (处理器) pidstat标题行解释数据列解释 sar字段含义解释示例分析 总结 前言 菜就多练&#xff0c;昨天看了一篇有关剖析 RocksDB 内存超限问题的文…...

Vue2 基础

Vue 2 是 Vue.js 的第二个主要版本&#xff0c;于 2016 年发布。它是一个渐进式的 JavaScript 框架&#xff0c;以其简单、灵活、易用性高而广受欢迎。Vue 2 主要专注于构建用户界面&#xff08;UI&#xff09;&#xff0c;并且非常适合用于构建单页应用&#xff08;SPA&#x…...

递归问题(c++)

递归设计思路 数列递归 : 如果一个数列的项与项之间存在关联性&#xff0c;那么可以使用递归实现 ; 原理 : 如果一个函数可以求A(n)&#xff0c;那么该函数就可以求A(n-1)&#xff0c;就形成了递归调用 ; 注意: 一般起始项是不需要求解的&#xff0c;是已知条件 这就是一个典型…...

系统思考—战略决策

别用管理上的勤奋&#xff0c;来掩盖经营上的懒惰。 日本一家物业公司&#xff0c;因经营不善&#xff0c;面临生死存亡的危机。老板为了扭转局面&#xff0c;采取了很多管理手段——提高员工积极性&#xff0c;推行业绩与绩效挂钩&#xff0c;实施各种考核制度。然而&#xf…...

wxwidgets xml插入图片的两种方案

wxwidgets xml插入图片的两种方案: 1.使用wxWidgets中的wxRichTextCtrl插入图片,将wxRichTextCtrl的buffer导出为xml文件 参考richtextctrl例子 if (wxTheClipboard->IsSupported(wxDF_BITMAP)){wxBitmapDataObject data;wxTheClipboard->GetData(data);wxBitmap bi…...

大模型呼入机器人如何赋能呼叫中心?(转)

大模型呼入机器人如何赋能呼叫中心&#xff1f;(转) 原作者&#xff1a;开源呼叫中心FreeIPCC 大模型呼入机器人在赋能呼叫中心方面发挥着重要作用&#xff0c;主要体现在以下几个方面&#xff1a; 一、提升服务效率与质量 24小时不间断服务&#xff1a; 大模型呼入机器人能…...

linux下socket本地套接字通讯

使用套接字除了可以实现网络间不同主机间的通信外&#xff0c;还可以实现同一主机的不同进程间的通信&#xff0c;且建立的通信是双向的通信。socket进程通信与网络通信使用的是统一套接口&#xff0c;只是地址结构与某些参数不同。 用途 进程间通信&#xff1a;本地套…...

NDRCContextUnmarshall断点函数分析之I_RpcBindingCopy函数的作用

NDRCContextUnmarshall断点函数分析之I_RpcBindingCopy函数的作用 第一部分&#xff1a; void RPC_ENTRY NDRCContextUnmarshall ( // process returned context OUT NDR_CCONTEXT PAPI *phCContext,// stub context to update IN RPC_BINDING_HANDLE hRPC, …...

WebView2教程(基于C++)【一】环境初始化

创建一个VisualStudio C项目&#xff0c;通过NuGet包管理器安装两个包&#xff1a; 注意&#xff0c;在项目属性页设置项目使用&#xff1a;C 20&#xff0c;子系统设置成窗口&#xff08;相应的预处理器也要改变&#xff09;&#xff0c;DPI识别设置成每个监视器高DPI识别。 …...

go语言中context的用法

0 概述 Context 是 Go 语言中非常重要的一个概念&#xff0c;它主要用于跨多个函数或 goroutine 传递 取消信号、超时控制、截止时间 和 请求范围数据。在并发编程中&#xff0c;Context 提供了更好的控制和管理&#xff0c;尤其是当你需要在多个 goroutine 之间传递状态或进行…...

概括网络给社会生活带来的种种影响

题目 【2002年国考申论】给定资料反映了网络给社会生活带来的种种影响&#xff0c;用不超过200字对这些影响进行概括。 要求&#xff1a;全面&#xff0c;有条理&#xff0c;有层次。(20分) 审题 特定事实&#xff1a;网络给社会生活带来的种种影响基本题型&#xff1a;单一…...

OpenCV相机标定与3D重建(16)将点从齐次坐标转换为非齐次坐标函数convertPointsFromHomogeneous()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::convertPointsFromHomogeneous 是 OpenCV 库中的一个函数&#xff0c;用于将点从齐次坐标&#xff08;homogeneous coordinates&#xff09;…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...