创建新表导入数据
1 在数据库中创建一个新的数据库,命名。
2 命名之后在数据库文件选择路径,两个都要确定。
3 在新建的数据库中新建一个表,添加所需要的数据后,
要设计一个ID;在ID列名设计主键,然后设计标识符;保存。
4 可以在创建的数据库中导入数据,点中新建数据库右键任务导入数据;
选择需要的路径:
路径:数据源excel;文件路径根据文件所在的地方;
然后是选择SQL。
5 再导入的表中编辑所有行:
右键窗格:打开SQL,跟关系图,
第一步选择院系表的资料,右键添加分组依据,执行,然后右键选择更改类型
在院系表中右键设计ID,主键,标识符;
第二步:在开始选择的表中右键窗格打开SQL,跟关系图,
右键添加表,连线,添加分组依据,把需要创建新表的资料打钩;更改类型;执行
打开新表右键窗格:打开SQL,跟关系图;选择专业表的资料,添加表,右键添加分组依据,执行,然后右键选择更改类型,然后设计ID,主键,标识符;保存
在开始选择的表中右键窗格打开SQL,跟关系图,添加专业表,选择需要的文件右键添加分组依据,执行,右键更改类型生产新表,
跟第六的一样;
在第七那个表里,然后跟第七的一样,最后设计ID,主键,标识符,保存,
在最后一个表里可以右键窗格关系图打开添加多个表;
6 在新的数据库中打开数据库关系图创建新的关系图,添加多个表;连线;
增删改修
1 在所要的数据库中新建查询:
1、增insert(标准):
insert into A02专业表(
专业ID,院系ID, 专业名称, 国家专业编码,专业简称, 学制, 培养层次, 年级)
values(
143,5,'工业艺术','050111','工艺',4,'本科',2017)
insert into A03班级表( 专业ID, 学号前缀, 班级名称)
values(11,'090340204','电气09-4')
小结:(1)主键,设定为“标识符”,则不能显示为主键插入值;
(2)列的数据类型是“数字型”,不可以加任何引号
(3)插入的值,所有的指令符号都是英文状态
(4)插入的值的个数和数据类型必须和表结构定义的列的个数和数据类型保持一致。
(5)新增的外键的值,必须在主键表中存在。比如:在“A03班级表”中,新增的“专业ID”的值,必须在“A02专业表”中存在这个=值
(6)一条新增指令只能操作一个表。
2、修改(更新)update
update A02专业表
set 专业名称='视觉艺术',国家专业编码='060111',专业简称='视觉',学制=5
where 专业ID=143
update A02专业表
set 专业名称='视觉艺术1',国家专业编码='060111A',专业简称='视觉',学制=5
where 专业名称='视觉艺术' AND 国家专业编码='060111'
小结:(1)一条新增指令只能操作一个表
(2)一定要注意是否启用where;建议启用 “键值ID”精确定位数据。
3、删除Delete
delete from A02专业表
where 专业ID=143
小结:(1)一条新增指令只能操作一个表
(2)一定要注意是否启用where;建议启用 “键值ID”精确定位数据。
4、查询select
1、最简单的单表查询
(1)查询所有列 (SELECT *)
SELECT 学生ID, 班级ID, 学号, 姓名
FROM A04学生表
(2)查询部分列
SELECT 学号, 姓名
FROM A04学生表
2、多表查询
(1)两个表查询
SELECT A01学院表.院系名称, A02专业表.专业名称,
A02专业表.国家专业编码, A02专业表.学制, A02专业表.培养层次,
A02专业表.年级
FROM A01学院表 INNER JOIN
A02专业表 ON A01学院表.院系ID = A02专业表.院系ID
(2)三个表连接
SELECT A01学院表.院系名称, A02专业表.专业名称, A02专业表.国家专业编码,
A02专业表.学制, A02专业表.培养层次,
A02专业表.年级, A03班级表.班级名称
FROM A01学院表 INNER JOIN
A02专业表 ON A01学院表.院系ID = A02专业表.院系ID INNER JOIN
A03班级表 ON A02专业表.专业ID = A03班级表.专业ID
(3)条件查询
(1)where and 多表
SELECT A01学院表.院系名称, A02专业表.专业名称,
A02专业表.国家专业编码, A02专业表.学制, A02专业表.培养层次,
A02专业表.年级, A03班级表.班级名称, A04学生表.学号, A04学生表.姓名
FROM A01学院表 INNER JOIN
A02专业表 ON A01学院表.院系ID = A02专业表.院系ID INNER JOIN
A03班级表 ON A02专业表.专业ID = A03班级表.专业ID INNER JOIN
A04学生表 ON A03班级表.班级ID = A04学生表.班级ID
where A01学院表.院系ID=3 and A02专业表.年级=2007
and A03班级表.班级名称='英语07-2'
(2)where and or () 多表
SELECT A01学院表.院系名称, A02专业表.专业名称,
A02专业表.国家专业编码, A02专业表.学制, A02专业表.培养层次,
A02专业表.年级, A03班级表.班级名称, A04学生表.学号, A04学生表.姓名
FROM A01学院表 INNER JOIN
A02专业表 ON A01学院表.院系ID = A02专业表.院系ID INNER JOIN
A03班级表 ON A02专业表.专业ID = A03班级表.专业ID INNER JOIN
A04学生表 ON A03班级表.班级ID = A04学生表.班级ID
where A01学院表.院系ID=3 and (A02专业表.年级=2007 or A02专业表.年级=2006 )
(2)like % % 模糊查询,多表
SELECT ltrim(rtrim(A01学院表.院系名称)), A02专业表.专业名称,
A02专业表.国家专业编码, A02专业表.学制, A02专业表.培养层次,
A02专业表.年级, A03班级表.班级名称, A04学生表.学号, A04学生表.姓名
FROM A01学院表 INNER JOIN
A02专业表 ON A01学院表.院系ID = A02专业表.院系ID INNER JOIN
A03班级表 ON A02专业表.专业ID = A03班级表.专业ID INNER JOIN
A04学生表 ON A03班级表.班级ID = A04学生表.班级ID
- where ltrim(rtrim(A02专业表.专业名称)) like '%精细%'
and (A02专业表.年级=2007 or A02专业表.年级=2006 )
SQL代码的存储
共享与被第三方调用
在数据库中的可编程序的存储过程新建存储过程,
形参的初始值
y=x+z y x z形参
假设 x=1,z=4 声明形参的时候,赋予的第一组实参值,叫初始值
x=1 z=2 1 2 88 99 实参
x=99 z=88
非参数化存储过程
ALTER PROCEDURE [dbo].[根据班级模糊查询学生] --存储过程命名
AS
BEGIN --开始指令
--存储过程代码体
SELECT ltrim(rtrim(A01学院表.院系名称)), A02专业表.专业名称,
A02专业表.国家专业编码, A02专业表.学制, A02专业表.培养层次,
A02专业表.年级, A03班级表.班级名称, A04学生表.学号, A04学生表.姓名
FROM A01学院表 INNER JOIN
A02专业表 ON A01学院表.院系ID = A02专业表.院系ID INNER JOIN
A03班级表 ON A02专业表.专业ID = A03班级表.专业ID INNER JOIN
A04学生表 ON A03班级表.班级ID = A04学生表.班级ID
where ltrim(rtrim(A02专业表.专业名称)) like '%计算机%'
and (A02专业表.年级=2007 or A02专业表.年级=2006 )
END--代码体结束指令
参数化存储过程
ALTER PROCEDURE [dbo].[参数化模糊查询学生]
@专业名称 char(30)='',@年级1 int=0,@年级2 int=0
AS
BEGIN --开始指令
--存储过程代码体
SELECT ltrim(rtrim(A01学院表.院系名称)), A02专业表.专业名称,
A02专业表.国家专业编码, A02专业表.学制, A02专业表.培养层次,
A02专业表.年级, A03班级表.班级名称, A04学生表.学号, A04学生表.姓名
FROM A01学院表 INNER JOIN
A02专业表 ON A01学院表.院系ID = A02专业表.院系ID INNER JOIN
A03班级表 ON A02专业表.专业ID = A03班级表.专业ID INNER JOIN
A04学生表 ON A03班级表.班级ID = A04学生表.班级ID
where ltrim(rtrim(A02专业表.专业名称)) like '%'+ltrim(rtrim(@专业名称))+'%'
and (A02专业表.年级=@年级1 or A02专业表.年级=@年级2 )
END--代码体结束指令
VS (面对对象编程)
创建一个新的VS文件,然后在已有代码中加入一个类(class)
加入标识符然后赋值;
例如:
public string myDateTime = DareTime.Now.ToString();
public void DengLu (string myName,string myPassword)
{
if (myName == “Fine Jade”&& myPassword ==”112323”)
{
Console.WriteLine();
}
else{
Console.WriteLine(“”)
}
}
DateTime是结构,属于Struct的类;
属性是字段的加强,是保护字段的,同属一类;
然后新建一个对象,并赋予它的值;
Public void Main (string [] args)
{
QQ myQQ = new QQ();
string myName = “Fine Jade”;
string myPassword = “112323”;
myQQ.DengLu(myName,myPassword);
Console.WriteLine(“\n登录时间是:”+ myQQ.myDateTime);
Console.Readline();//把这个加进去就不会在显示的时候不会一闪而过
}
字段、属性、方法的本质:把内存分块,并用来存放数据,只是特征不同。
字段是类的变量,类的成员;
属性是用来限制(保护)变量,变量确切讲是方法的成员;
类的成员:可以没有任何顺序,
建议:归类书写
类的成员:字段、方法、属性;
方法(函数)体:程序代码,必须有先后逻辑关系;
调用类:必须有逻辑先后顺序;
(不然就会出现显示不出来的情况;或者出现错误)
计算机语言逻辑结构:顺序结构,选择结构,循环结构
命名空间—---->类(Class)/结构(struct,轻量级的类)-----à类的成员
类的成员:字段 属性 方法
字段,类的变量;
变量,方法的变量;
While与Do While的关系
1、do while 无论如何都执行一次循环体;
例如:
int intBegin02=999; 每次循环次数是999
do{
intCount = intCount + 1;
intBegin02++;
Console.WriteLine(“循环次数:{0},intBegin02={1}”,
intCount,intBegin02);
}
While (intBegin02<100); 取值范围小于100;
Console.ReadLine();
Do while是先执行do里面的然后才在while里进行判断;
2、while 循环是在规定的取值之内不停地循环;直到取值范围能承受的最大值。
例如:int intBegin02 = 1; 每次循环次数都是1
While (intBegin02 < 100) 取值范围小于100;
{
intCount = intCount +1;
intBegin02++;
Console.WriteLine(“循环次数:{0},intBegin02={1}”, intCount, intBegin02);
}
Console.ReadLine();
3、如果while的取值范围大于100,而intBegin02又大于100,那么就会一直循环下去,直到电脑内存占满死机。
例如:
int intBegin02=100;
While (intBegin02>100) 取值范围大于100
{
intCount = intCount +1;
intBegin02++;
Console.WriteLine(“循环次数:{0},intBegin02={1}”, intCount, intBegin02”)
}
Console.ReadLine();
4、for循环流程
static void Main()
{
int Fine; 开始时的名称, 名称可以改
const int Jade = 100; 取值范围和名称也可以改
//可以没有 int htop = 0; 每次运行的结果后加上Fine
int like = 0; 在每次开始循环的时候加上1
for ( Fine = 1; Fine <= Jade; Fine++)//
{
like = like + 1;
Console.WriteLine("循环运行次数{0} ", like);
htop = htop + Fine;
if (Fine % 10 == 0)
{
break;//跳出整个当前页面
}
Console.WriteLine("1 ~ {0} 的求和等于 {1} ", Fine, htop);
{0}这个数是可以改的;其他两个不行 不过只能改成0或者1
//if (intBegin % 10 == 0)
//{
// Console.WriteLine("1 ~ {0} 的求和等于 {1} ", Fine, htop);
{0}这个数是可以改的;其他两个不行 不过只能改成0或者1
//}
}
Console.Read(); 加上这个是可以在显示的时候不会一闪而过
Fine = 1; Fine <= Jade; Fine++不可以分开写,不然就出错啦;
5、continue跳出当前循环继续执行下一次循环,直到整个循环结束
break跳出当前整个页面,中断;
6、 嵌套模式1;
static void Main()
{
const int intMaxSpeed = 120;
const int intMinSpeed = 60;
int intNowSpeed = 0;
//对于名称,数据,内容都是可以更改的,而蓝色字母的都是配套好的,不能更改
Console.WriteLine("请输入目前车速");
intNowSpeed = Convert.ToInt32(Console.ReadLine());
if (intNowSpeed > intMaxSpeed)
{
Console.WriteLine("请注意,你已经超速!请减速行驶!");
}
else
{
if(intNowSpeed > intMinSpeed)
{
Console.WriteLine("目前车速适中,请保持车速!");
}
else
{
Console.WriteLine("请注意,目前车速过慢,请加速!");
}
}
Console.ReadLine();
7、嵌套模式2:
Static void Main()
{
double Cost = 0;
double Rate = 0;
Cost = Convert.ToDouble(Console.ReadLine());
if (Cost >1000)
Rate = 0.7;
else if (Cost > 800)
Rate = 0.8;
else if (Cost >500)
Rate = 0.9;
else Rate = 1.0;
//上面跟下面是相等的,方便看懂;
//if (Cost <= 500)
//{
// Rate = 1.0;
//}
//if (Cost > 500 && Cost <= 800)
//{
// Rate = 0.9;
//}
//if (Cost > 800 && Cost <= 1000)
//{
// Rate = 0.8;
//}
//if (Cost > 1000)
//{
// Rate = 0.7;
//}}
Console.WriteLine("您当前购物总价是:{0};,您当前享受的折扣是:{1}", Cost, Rate);
Console.ReadLine();
}
SQL(创建新表导入数据)
最新推荐文章于 2024-08-04 18:42:20 发布