c#用代码建立数据库

我想用c#程序代码来建立数据库,请问怎么用代码实现?还有:用代码实现建表,建立表于表之间的关联?前面二位的意思是说:还是要用sql语句来实现啊?是不是写存储过程,然后用c... 我想用c#程序代码来建立数据库,请问怎么用代码实现?
还有:用代码实现建表,建立表于表之间的关联?
前面二位的意思是说:还是要用sql语句来实现啊?是不是写存储过程,然后用c#调用存储过程就可以实现我要的那些功能呢?

看了哈sql2000,现在已经会用c#代码创建数据库和表以及一些数据库基本的插入、删除等操作了哈!

但是不会用代码实现表与表之间的关联哈!请指教!最好是给个例子嘛!

晕,没事合适的答案啊!

郁闷的很啊

很对哈,其实用c#来对数据库操作,都是写一个字符串,字符串就是sql语句,其实就是sql的问题。

谁能给出一个数据库与数据库的表的关联的例子啊?

如:A库中的B表与C库中的D表
展开
 我来答
百度网友caef6e2bb
2007-12-26 · TA获得超过2425个赞
知道小有建树答主
回答量:1174
采纳率:0%
帮助的人:1424万
展开全部
联接可分为以下几类:
内部联接(典型的联接运算,使用类似于 = 或 <> 的比较运算符)。内部联接包括同等联接和自然联接。

内部联接使用比较运算符根据每个表的通用列中的值匹配两个表中的行。例如,检索 students 和 courses 表中学生标识号相同的所有行。

外部联接。外部联接可以是左向外部联接、右向外部联接或完整外部联接。

在 FROM 子句中可以用下列某一组关键字来指定外部联接:

LEFT JOIN 或 LEFT OUTER JOIN。

左向外部联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某一行在右表中没有匹配行,则在关联的结果集行中,来自右表的所有选择列表列均为空值。

RIGHT JOIN 或 RIGHT OUTER JOIN

右向外部联接是左向外部联接的反向联接。将返回右表的所有行。如果右表的某一行在左表中没有匹配行,则将为左表返回空值。

FULL JOIN 或 FULL OUTER JOIN

完整外部联接将返回左表和右表中的所有行。当某一行在另一个表中没有匹配行时,另一个表的选择列表列将包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

交叉联接

交叉联接将返回左表中的所有行。左表中的每一行均与右表中的所有行组合。交叉联接也称作笛卡尔积。

复习完里基础就来看看下面的实际场景来练练手吧。
这是我工作中的实际遇到的场景,这里就使用上面的学生与课程表做个类比吧。

假设现在有几个表,分别是:

学生信息表(student:student_id, student_name,......)、
课程表(courses:courses_id,courses_name,...... )、
还有学生选课表(student_elective_courses:student_id, courses_id)、
学生感兴趣的课程表(student_interest_courses:student_id, courses_id)

现在的需求是:找出关注某个课程的学生关注的其他哪些课程。(这里的关注包括选了课及感兴趣两个概念)

程序化表达:通过某个courses_id可以在两个关系表student_elective_courses、student_interest_courses中得到一些student_id,通过这些student_id又可以在两个表中得到一些courses_id。要求是找出来之后还要按照课程的“人气”排序(关注人数多的排前面,关注人数多一样的时候选课人多的排前面)

举个例子:对于课程“离散数学”,有些同学已经选了这门课在学了,有些同学还没选,但是对这门课有兴趣。当然两类同学本身可能有选修了其他的课程或对其他的课程有兴趣。我们就是想统计这些“其他”的课程。

这种类型的统计在商业上是很有必要挖掘的信息。例如某个网上书城,如果能在用户浏览某本书的时候给出其他浏览或购买这本书的用户还在浏览其他的一些什么书籍,相信会很好的引导用户浏览更多的书。当然销售量也会跟着上去咯,因为“臭味相投”的人还是很多的。

回到原来的问题,这个问题的难点在于要统计的关注人数分布在两个表中。分两次查询再合并结果也是可以的,就是比较麻烦。看看下面的解决脚本:

SELECT
a.courses_id,
a.courses_name,
COUNT(DISTINCT b.student_id)+COUNT(DISTINCT c.student_id) as attentionCount,
COUNT(DISTINCT b.student_id) as interestCount

FROM student a LEFT JOIN
student_elective_courses b ON a.courses_id = b.courses_id LEFT JOIN
student_interest_courses c ON a.courses_id = c.courses_id LEFT JOIN
student_elective_courses b1 ON b.student_id = b1.student_id OR c.student_id = b1.student_id LEFT JOIN student_interest_courses c1 ON b.student_id = c1.student_id OR c.student_id = c1.student_id
WHERE (b1.courses_id = 1 OR c1.courses_id = 1) AND a.courses_id <> 1 --这里“1”是可变参数
GROUP BY a.courses_id,a.courses_name
HAVING COUNT(DISTINCT b.student_id)+COUNT(DISTINCT c.student_id) >0
ORDER BY attentionCount DESC, interestCount DESC, a.courses_id
分析说明:
看看关联student_elective_courses b1 的条件:
b.student_id = b1.student_id OR c.student_id = b1.student_id
这个条件得到:选了某些课的学生(表b1)还选了哪些课(表b,条件b.student_id = b1.student_id)以及还关心了哪些课(表c,条件c.student_id = b1.student_id),关联表c1也是同样道理。最后加上个聚和就得到了想要的结果。
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
wozuiruhe
2007-12-12 · TA获得超过229个赞
知道答主
回答量:213
采纳率:0%
帮助的人:0
展开全部
上面的大魔法是说:只要你会用sql语言建立表、建立表之间的关系,就可以用C#代码建立表、建立关系,只需要把sql语句存到一个string中,然后执行这个string 即可。

当然要用sql语言或者存储过程来实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fudengji
2007-12-12 · TA获得超过221个赞
知道小有建树答主
回答量:559
采纳率:0%
帮助的人:302万
展开全部
上两位真热心,好感动!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
石亮东
2007-12-13 · TA获得超过1217个赞
知道小有建树答主
回答量:2022
采纳率:66%
帮助的人:1436万
展开全部
就是写个SQL,执行就好了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cpudotorg
2007-12-18 · TA获得超过282个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:252万
展开全部
执行 [create database name]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ychs55
2007-12-18 · TA获得超过406个赞
知道小有建树答主
回答量:398
采纳率:0%
帮助的人:485万
展开全部
其实你已经涉及到ORM概念了,你可以使用DevExpress控件来做到这些,这个控件下的DevExpress.Xpo命名空间下已经提供了所有方法,你只要写一个类,此类就自动映射为数据库表,数据库和表都是自动生成,而且支持不同的数据库,特别方便.
你只需要把这个类库给DOWN下来,然后学习怎么使用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式