数据库的基础学习

2023-11-11

     数据库对于程序员来说是一个必备的技能,我也开始了数据的学习,看的教程比较老,是郝斌的sqlsever基础教程,用的数据库是sqlsever2008.

     说起数据库,之前仿照的医药项目已经开始陆陆续续接触到了,所以也去3wschool上补过一些常用的 sql命令语句。现在是系统的学习一遍,算是巩固和加强吧。

     先谈一下我对数据库的理解吧,数据库顾名思义是数据的集合,具体的是由一张张数据表组成的,而各个数据表是相互独立却可以通过各种关系来联系起来的,比如外键表。sqlsever其实是客户端来对库进行操作的    如果对一个库删除  那个实际的库也会消失。数据库也有很多软件,有Mysql,Sqlsever和Oracle等等。

数据库和数据结构的区别?

     数据库是对硬盘数据进行操作  
     数据结构是对内存数据进行操作


     数据库的安装是比较麻烦的,一不小心就系统报错导致数据库无法运行,这时候重装系统就比较麻烦了,所以重要的事说三遍,数据库安装要慎重,慎重,慎重。网上有具体的sqlsever2008安装教程



     接下来就是对数据库的一些操作介绍了。
     1.数据库用户名的添加和修改,可以通过数据库的安全性来添加。
     2.数据库的创建直接右击数据库(新建数据库即可)创建数据库会保存在两个文件里,一个是...mdf 是用来存储数据的,另一个是...ldf是存储操作的,比如谁谁谁在什么时候对该数据库进行了什么操作,比如增删查改。
     3.数据库的添加可以右击数据库然后附加mdf文件即可。
     4.数据库的删除。如果在sqlsever对数据库进行删除的话,实际的数据库也会消失。
     5.数据库的备份。
     a.分离法有两个方法一个是右击要备份的那个数据库然后右击任务点击分离即可,直接点分离然后框框都打勾就行。会生成mdf和ldf文件,默认保存在c盘的位置。如果不修改的话,创建数据库分离数据库得到的文件都会存放在那里。
     b.生成脚本 在需要修改的数据的框框打勾然后一直点下一步最后完成即可

一个表中主键扮演着很重要的角色,是用来唯一标识数据项的。
主键一般都是和数据无关额外的创建一个列 无意义的编号int identity代表自增。
有人会问为什么要用int型的无意义的数字来标识一个数据呢 难道其他数据项不可以吗?那我只能问你,你说 用一个数字来标识一条数据方便还是一条字符串方便。而且一般我们都会设置主键是identity代表自增的主键,因为毫无规律的数字是很难记忆的,也不直观。

   create table student
         (
             student_id int primary key identity(100,5),
             student_name nvarchar(20) not null
)

student_id是自动增长的主键 从100开始 每次增长5
insert into student values(’ 李四’)
可以直接这样插入 因为student_id是主键可以直接忽略
表中删除数据又插入数据会导致主键不连续递增 这种情况是不重要的,即使主键不连续递增,也是可以的

也有人问 主键和唯一键有什么区别呢?

     主键定义:
     能够唯一标识一个事物的一个或者多个字段的组合被称为主键
     1主键是不可以赋null空值的,而唯一键可以。
     2主键是无意义的数据外的数据,是用来标识数据的,而唯一键是数据,而且是用来防止数据重复项的。

     主键的注意 :
     主键通常是整数,不建议使用字符串
     主键的值通常不允许修改,除非本记录被删除
     主键不要定义成id 而要定义表名id或者表名_id
     要用代理主键,不要用业务主键意思就是:
     任何一张表,强烈建议不要使用有业务含义的字段充当主键 我们通常都是再表中单独           添加一个整型的编号充当主键字段

还有外键也是很重要的,外键是表与表之间连接的枢纽,如果a表有数据来自b表,那a表称为外键表,外键在a表里,b表为主键表。 外键表的值来自于b表的主键
一对多的关系就是a的主键作为b的外键,b的外键可以重复
外键的定义:

 如果一个表中的若干字段是来自于另外若干个表的主键或唯一键  
 则这若干字段就是外键

注意:

外键通常是来自于另外表的主键而不是唯一键,因为唯一键可能是null
外键不一定是来自另外的表,也可能是来自于本表的主键  
比如一张表中的员工是主键 对应的上司字段是外键来自于本身的主键 

建表

1、菜单
2、建表语句
    create table 表名(
        字段 类型 [not null,primary key, auto_increment]
        ... ...
    ) 
    eg:
    create table test(
        id int primary key auto_increment,
        name varchar(50) not null,
        sex varchar(2),
        tel varchar(50),
        remark text
    )

删除表

drop table 表名;

插入语句

1、菜单
2、插入语句
    insert into 表名(列名1,列名2...) values(值1,值2,....)
    eg:
     insert into test(name,sex,tel,remark) values('张六忌','女','251314','这是备注')
     3、插入语句注意事项:
    a、values和列名一一对象
    b、value值和字段类型匹配
    c、主键不能插入值

查询语句

select 列名1,列名2 from 表名 where 条件
1、关系运算符
    >  <  =  >=  <=  <>  !
    2、逻辑运算符
    and  or   not
3、模糊查询
    like:约等于
    _:一个字符
    %:任意个字符

删除语句

    delete from 表名 where 条件

修改语句

    update 表名 set 列名=值 where 条件

去除重复(distinct)

select distinct ress from hist

between…and…(包含)

查询工资在8500到9000之间的员工信息(两种)

select * from emp where sar between 8500 and 9000
select * from emp where sar>=8500 and sar<=9000

in(匹配内容列表)

查询部门号是1,2,3这三个部门的所有员工

select * from emp where  did in(1,2,3) 
select * from emp where did=1 or did=2 or did=3

查询主键是1,4,7的员工信息

select * from emp where eid in(1,4,7)
select * from emp where eid=1 or eid=4 or eid=7 

聚合函数(count,sum,max,min,avg)

查询总共有多少个员工

#select count(*) from emp
select count(eid) from emp
#select count(ename) from emp
select count(1) from emp
#select count(900) from emp

查询所有员工的工资总和
select sum(sar) 工资总和 from emp
查询最高的工资
select max(sar) from emp
查询最低的工资
select min(sar) from emp
查询平均工资
select sum(sar)/count(eid) from emp
select avg(sar) from emp

查询所有员工的最高、最低、平均工资,工资的总和

select max(sar) max_sar,min(sar) min_sar,avg(sar)   
avg_sar,sum(sar) sum_sar from emp

分组统计

查询每个部门的平均工资
select did,avg(sar) from emp group by did
查询每个部门的平均工资,只显示大于7000的数据
select did,avg(sar) avg_sar from emp group by did having avg_sar>7000
查询每个部门的女性员工的平均工资
select did,avg(sar) from emp where sex=’m’ group by did
查询每个部门的平均工资,只显示大于5000的数据,并且按平均工资排序
select did,avg(sar) avg_sar from emp group by did having avg_sar>5000 order by avg_sar

注意:分组查询是,select后的字段必须包含在聚合函数或 GROUP BY 子句中
分组---->过滤----->排序
group by--->having--->order by

9、多表查询

子查询(一个select中嵌套了另一个select)
查询研发部的所有员工
#select did from dept where dname=’研发部’
#select * from emp where did=4
select * from emp where did=(
select did from dept where dname=’研发部’
)
查询研发部和市场部的所有员工
select * from emp where did in(
select did from dept where dname in(‘研发部’,’市场部’)
)
select * from emp where did in(
select did from dept where dname=’研发部’ or dname=’市场部’
)
nvarchar() 类型支持国际化长度可变的字符

主键命名

主键是针对一个表的, 而不是针对一个字段,因为主键是唯一的,一个表只能有一个主键。

a. 一般主键命名: 主键的命名为 pk_TableName。

b. 复合主键: ” pk_ ” + “ 字段名 ”

e.g.: Constraint pk_StudentCourse Primary key(Stud_Id, Cour_Id)

主键pk_StudentCourse,包含了两个字段 Stud_Id 和 Cour_Id

外键命名

外键的命名为 fk_外键所在的表名外键引用的表名 。因为外键所在的表为从表,所以上式可以写为 fk 从表名_主表名 。

check约束 check是对数据项限定范围的约束

Create table ss3    check约束
(
    name3 nvarchar(20) not null constraint pk_ss3 primary key,
    cc int check(cc>=10 and cc<=20)
)
insert into ss3 values('saz',22)

default是添加默认值的约束

create table ss4
(
    name nvarchar(20) not null constraint pk_ss4 primary key,
    sex nchar(1) default('男')
)

添加唯一键 可以为null值但只是其中一列为null 因为null也算一个值 在sqlsever 在oracle则可以多个null
unique可以和not null一起使用 这样子 就是不为空的唯一键

create table ss5
(   //给主键命名
    name nvarchar(20)  constraint pk_ss5 primary key, 、
    //设置默认值 
    sex nchar(1) default 's',    
    //age数据设定范围                      
    age int check(age>20), 
    //不为空的唯一值                          
    address nvarchar(20) unique not null  
    //设置的外键             
    xx nvarchar(20) constraint fk_ss2_ss1 foreign key references ss1(name)                                              
)
insert into ss5(name,address) values('sd',null)

如果insert into ss5(不填) values(全部数据项都要填,即使它被设定是默认值)
如果insert into ss5(哪几项)values(对应填哪几项,省略的都是以null形式填入,如果unique not null 或者是主键被忽略了 那么就会报错,因为这两项都不允许填入控制)

exists返回真或者假
查询没有工作经历的员工信息,要求用not exists

select e.* from emp e where not exists(
   select 1 from hist h where h.eid=e.eid
)
 exists用于数据量大的  in用于数据量小的

Union和union all的区别?

  前者去重,后者不去重

数据库包涵三种关系:

1.一对一  
2.一对多
3.多对多

先看2 一对多关系 这就是一个外键表就可以表达了 外键表的外键表示多 而对应的主键表的主键是一
再看3 是这三种关系中最复杂的。
很多人想不到该怎么解释这种关系
所以需要再额外新建一个表来表示他们的关系 ,看一下代码一目了然:

create table banji
(
    banji_id int primary key,
    banji_num int not null,
    banji_name nvarchar(20)
)
create table jiaoshi
(
    jiaoshi_id int primary key,
    jiaoshi_name nvarchar(20)
)
create table banji_jiaoshi_mapping
(
    banji_id int constraint fk_banji_id foreign key references banji(banji_id),
    jiaoshi_id int foreign key references jiaoshi(jiaoshi_id),
    kecheng nvarchar(20)
    constraint pk_banji_id_jiaoshi_id primary key (banji_id,jiaoshi_id,kecheng)
)

这是班级和老师的数据表 第三张是这两者之间的关系表也是那两张表的外键表。
班级id和老师id是外键 班级id和老师id和课程组成了该表的主键 这点注意:写法和其他主键的写法不同constraint pk_banji_id_jiaoshi_id primary key (banji_id,jiaoshi_id,kecheng)

数据库关系图也是很重要的一个东西 可以很直观的看到各个表之间的关系 当你接触一个新的数据库的时候 可以选择这个方法来了解这些数据的关系 如图所示:

这里写图片描述

表中钥匙的标志表示该字段是主键 有人会问 一个表中不是只有一个主键吗那为什么banji__laoshi__mapping 中有三个主键。 原因是因为这三个字段组合起来才是主键,所以他们都是主键的一部分。如果把表与表之间的外键关系删掉会导致外键表的数据丢失吗 答案是 不会的。 还有图中的 表和表之间是用两个圈加钥匙组成的 那哪个是主键哪个是外键呢 ? 我是这么理解的 banji_laoshi_mapping 的钥匙指向banji 意思就是它中的某些数据是取自banji 那么它就是外键表,banji就是主键表 这么理解记忆比较好

问题:
先删主键表还是外键表?
答案是:先删外键表
如果先删除主键表,会报错,因为这会导致外键表的数据引用失败

查询要掌握的:

 - 1.计算列
 - 2.distinct
 - 3.between
 - 4.in
 - 5.top
 - 6.null
 - 7.order by
 - 8.模糊查询
 - 9.聚合函数
 - 10.group by
 - 11.having
 - 12.连接查询
     - 定义
         -分类
             内连接  (最重要)
             外连接
             完全连接
             交叉连接
             自连接
             联合
    13.嵌套查询

注意:
在写SQL语句时,经常需要查询不在某个表、不等于某些值的记录,SQL Server中提供了not in来实现这个功能,但是,如果not in 后面的值有NULL值时,就会返回错误的结果,即没有任何结果返回,所以SQL中在使用not in时需要特别留意。

当数据库已经创建好后
添加约束要用

ALTER TABLE Persons    //ALTERADD是重点
ADD UNIQUE (Id_P)

还有 新建查询里面 go是分隔作用 意思就是执行完上一步才能执行下一步 有先后顺序

还有一些知识没怎么学习:

1.事务
2.索引
3.存储过程
4.游标
5.TL_SQL
6.触发器

数据库是如何存储数据的
字段 记录 表 约束(主键 外键 唯一键 非空 check default 触发器)
数据库是如何操作数据的
insert update delete T-SQL 存储过程 函数 触发器
查询 :
内连接 (核心)
左右连接
视图
事务

更新:
2018.6.28:

这学期刚学习了数据库
写了份数据库的实验报告:

https://blog.csdn.net/qq_38409944/article/details/80424093

最后设计了一个学生选课系统的数据库 可以参考下:

https://blog.csdn.net/qq_38409944/article/details/80830620

2018.7.15更新:
由于学javaweb,便也学习了Mysql,不过数据库的内容基本一致,没啥大差别。
Mysql学习笔记
Mysql存储过程学习笔记
mysql权限问题
Mysql数据备份和还原
MySQL服务无法启动 and MySQL忘记密码 and MYSQL编码问题解决方案

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

数据库的基础学习 的相关文章

  • 如何获得顶部带有千位分隔符的数字?

    SELECT count FROM table A 假设结果是8689 我怎样才能将它转换为8 689在 SQL Server 上 尝试这样 select replace convert varchar convert Money coun
  • 优化 SQL Server 上的删除

    Deletesql server 上的有时很慢 我经常需要优化它们以减少所需的时间 我一直在谷歌上搜索一些关于如何做到这一点的提示 并且我发现了各种各样的建议 我想知道你最喜欢和最有效的驯服删除野兽的技术 以及它们如何以及为什么起作用 到目
  • 在 SELECT IN 中使用 Oracle 参数时出现问题

    我在将一串数字插入sql查询时遇到问题 SELECT FROM tablename a WHERE a flokkurid IN 3857 3858 3863 3285 ORDER BY sjodategund rodun or SELEC
  • 如何找到多个列中的最小值

    我在我的 DB 3 col 中有一个值 我想在所有这些值中找到一个值 如下所述 表名 MyTable id col1 col2 col3 1 200 300 400 2 100 150 300 3 800 102 20 4 80 80 0
  • MySQL - 从临时表插入

    这看起来非常简单 但我坚持使用简单的插入语句 见下文 begin work CREATE TEMPORARY TABLE IF NOT EXISTS insert table AS select r resource id fr file
  • 删除连接到另一表 SQL 的一个表中的记录

    我有两个表 一个包含 212 000 条记录 已弃用的记录 另一个包含 10 500 000 条记录 我想在 id 和 version number 字段上连接两个表 因为两个表都有这些字段 我希望从连接表中删除匹配的记录 来自连接表 即从
  • SQL 错误:“没有这样的表”

    我试图解决为什么我的代码为所有查询返回 null 的原因 最后发现 sql 查询什么也没有返回 我使用简约代码创建了一个新的 AIR 文档 s WindowedApplication
  • PL/pgSQL SELECT 到数组中

    这是我的函数声明和主体的一部分 CREATE OR REPLACE FUNCTION access update RETURNS void AS DECLARE team ids bigint BEGIN SELECT INTO team
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • 在存储过程中验证用户的最简单方法?

    我需要一个存储过程 可以通过发送以下内容来检查登录尝试时他们是否是有效用户login and password查看它们在数据库中是否匹配 有没有一种简单的方法可以做到这一点 如果没有更多信息 我目前能提供的最好信息是 CREATE STOR
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co
  • 如何从 SQL Server 2008 查询结果中删除“NULL”

    我有一个包含 59 列和超过 17K 行的表 很多行都有NULL在某些列中 我想删除NULL以便查询返回空白 而不是NULL 我可以运行一些更新功能来替换所有NULL with 使用 SQL Server 2008R2 Management
  • 从 Getdate() 获取时间

    我想采取Getdate 结果 例如 2011 10 05 11 26 55 000 into 11 26 55 AM 我看过其他地方并发现 Select RIGHT CONVERT VARCHAR GETDATE 100 7 这给了我 11
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • SQL 约束以防止根据列的先前值更新列

    是否可以使用检查约束 或其他一些技术 来防止在更新记录时设置与其先前值相矛盾的值 一个例子是 NULL 时间戳 表明发生了某些事情 例如 file exported 一旦文件被导出并且具有非 NULL 值 就不应再将其设置为 NULL 另一
  • 如何使用 BigQuery 有效地选择另一个表中匹配子字符串的记录?

    我有一个包含数百万个字符串的表 我想将其与包含大约两万个字符串的表进行匹配 如下所示 standardSQL SELECT record FROM record JOIN fragment ON record name LIKE CONCA
  • 快速将列的副本添加到 MySQL 表

    我需要一种快速的方法来复制表中的 DATETIME 列并为其指定一个新名称 我的表中有一个名为 myDate 的列 名为 myResults 我需要一个查询来在名为 newDate 的表中创建一个新列 该列的数据与 myDate 列完全相同
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • SQL 更新 - 更新选定的行

    我正在使用 SQL Server 2008 我有一个名为MYTABLE有两列 ID STATUS 我想编写一个存储过程来返回其记录STATUS是 0 但是这个存储过程必须更新STATUS返回行数为 1 如何在单个查询中执行此选择和更新操作

随机推荐

  • (论文加源码)基于deap的四分类脑电情绪识别(一维CNN+LSTM和一维CNN+GRU

    论文和源码见个人主页 https download csdn net download qq 45874683 85002721 论文加源码 基于DEAP数据集的1D CNN和RNN情感分类 GRU和LSTM 摘要 在这里 我们研究了脑电情
  • 远程桌面的端口号是多少?

    远程桌面 Remote Desktop 是一种用于远程访问和控制计算机的技术 它允许用户通过网络连接到远程计算机并以图形化界面进行操作 远程桌面使用的端口号通常是3389 在Windows操作系统中 远程桌面协议 Remote Deskto
  • 云服务器内存使用率多少合适,什么时候应当考虑升级主机内存

    根据mysql官方说法 服务器内存占用比例达80 时 属于高负载运行状态了 内存占用比例长时间超过80 时 属于很不稳定状态 长时间超过90 就进入风险区了 这时容易产生数据丢失 数据库崩塌等不安全现象 当然 内存使用率过低又有点资源浪费
  • Wolfram Mathematica 12.3免费安装教程

    注意 本文介绍的Wolfram Mathematica仅为学习用途 如果有条件请支持正版 本文参考自贴吧激活教程 有Github账号的可以点赞支持原作者 https github com TieBaMma InstallTutorial b
  • LVGL V8应用——通过按键切换页面

    一 按键切换对象 程序 全局变量 static lv obj t contanier1 NULL static lv obj t contanier2 NULL 按钮对应回调函数 实现容器的切换 static void win btn ev
  • mybatis-spring-boot-starter依赖对应关系表

    mybatis spring boot starter版本 spring boot starter版本 mybatis版本 mybatis spring版本 2 1 2 2 2 5 RELEASE 3 5 4 2 0 4 2 1 1 2 1
  • HP服务器换硬盘流程,HP服务器SSD硬盘更换操作指南.pptx

    HP服务器SSD硬盘更换操作指南 HP服务器SSD硬盘更换 操作指南 目录 硬盘的安装 准备工作 注意事项 磁盘阵列的创建 创建Raid的流程 注意事项 数据库的创建附加 准备工作 三星磁盘 磁盘托盘 螺丝 这里磁盘托盘 从盒子里拿出来就是
  • YARN异常YarnException:Failed while publishing entity的解决方案

    版本 HDP3 0 mapreduce提交任务计算时 job已经结束 但是容器仍不能关闭持续等待五分钟 INFO Thread 100 org apache hadoop yarn event AsyncDispatcher Waiting
  • 自定义类加载器

    package com bzu csh import java io ByteArrayOutputStream import java io File import java io FileInputStream import java
  • docker容器数据卷

    1 宿主与容器之间映射添加容器卷 privileged true 数据卷的特权 docker run it privileged true v 宿主机绝对路径目录 容器内目录 镜像名 docker run it privileged tru
  • 在手机上通过ssh连接树莓派

    第一步 在手机上下载ConnectBot 豌豆荚上有的下 第二步 Ubuntu 上开启ssh服务 第一次按使用的话需要搭建环境 命令是 sudo apt get install openssh server 第三步 启动SSH服务 sudo
  • Yolov5训练自己的数据集

    本文介绍了如果通过Yolov5框架训练自己的数据集 主要内容包括数据集格式 数据集拆分方法 描述文件修改以及训练和测试方法 还没有搭建Yolov5环境的可以参考我上一篇博文 Yolov5目标检测环境搭建过程 Cuda Pytorch Yol
  • qsort库函数详解

    目录 一 qsort是什么 二 qsort的功能 三 qosrt函数详解 1 qsort函数的定义 2 qsort函数的传参 四 qsort的模拟实现 冒泡 1 如何实现交换 2 如何实现字节之间的交换 一 qsort是什么 qsort是C
  • C#.发布订阅模式

    发布订阅模式 委托可以通过简单的加减实现封装多个方法 但容易出现封装了多个方法的委托被赋值号一下子都给替换掉的问题 即外部对象会影响其他对象对发布者的订阅 委托类可以定义在发布者类之中吗 可以的 实现发布订阅模式的土方法 声明委托类 在发布
  • 关于生命的意义突然有感

    1 一个囚犯被判无期徒刑 放逐到一个海岛上 但不久附近发生海难 监狱不得不组织人手就近救援 这位囚犯十分神勇 一个救10个 于是由于被判表现良好放了 当一个人被判无期徒刑 世界上的乐趣几乎与他无关 他是最容易抑郁的人之一 但很明显 他一旦提
  • tongweb部署vue前端页面的方法

    tongweb部署vue前端页面的方法 1 在同一端口号下部署 2 在不同端口号部署 1 在同一端口号下部署 把vue项目install 运行 build完了的dist包压缩打包 上传到服务器解压 然后在解压完了的目录里新建一个空的WEB
  • 算法应用与加速器系统架构的碰撞:AI软硬结合的方向怎么走?

    2021年9月18日下午 算法应用与加速器系统架构的碰撞 讨论会在智源研究院顺利举行 参与封闭研讨的专家有 孙广宇 北京大学高能效计算与应用中心长聘副教授 黄高 清华大学助理教授 陈恺 中国科学院信息工程研究所研究员 施柏鑫 北京大学助理教
  • conda虚拟环境中安装和使用指定opencv-C++版本

    1 进入conda环境 conda activate 虚拟环境名称 2 查看conda可以安装的opencv版本 conda search opencv 3 安装opencv 这里安装4 5 3版本 conda install opencv
  • 【HarmonyOS】如何实现应用内引用HSP模块中ArkUI组件

    关键字 HSP开发 引入HSP模块中ArkUI组件 写在前面 在使用ArkTS开发HarmonyOS应用时 通常会定义一些公共组件或公共接口功能 此时可以将这些功能封装到HSP模块中 然后通过在HSP模块中导出组件或接口方式在其他模块中引用
  • 数据库的基础学习

    数据库对于程序员来说是一个必备的技能 我也开始了数据的学习 看的教程比较老 是郝斌的sqlsever基础教程 用的数据库是sqlsever2008 说起数据库 之前仿照的医药项目已经开始陆陆续续接触到了 所以也去3wschool上补过一些常