MySQL数据库和SQL语句

一、数据库介绍&安装

1. 什么数据库软件

在前期学习的过程中,对于数据的保存方式有两种体现

一种是将数据保存到本地的文件中,优点是可以持久保存,但是数据管理查询等相当麻烦。

一种是将数据保存到本地的内存中,优点是效率高,但是程序运行结束后数据会消失。

数据库软件:保存数据的仓库,俗称数据库。它体现我们电脑中,就是一种应用软件系统。用来管理数据的软件。需要使用固定的语言(SQL语言)去操作文件中的数据。

我们主要是学习数据库的操作,而不是开发数据库软件。

2. 数据库软件介绍

数据库软件都是由第三方公司研发提供,我们只需要下载安装使用即可。

常见的数据库软件:

Oracle:它是Oracle公司的产品,功能强大,收费高。和java程序兼容性好,适合中大型项目。

BD2:IBM公司的数据库,它是收费的。功能一般。帮助文档和问题解决方案没有Oracle丰富。

SqlServer:微软数据库,功能一般,收费一般。和微软开发语言兼容性好,适合中小项目。

Sybase:Sybase公司的产品,市场占有率低。 powerDesigner软件,拖一拖生成表单。

MySql:早期瑞典一个公司发明,后期被sun公司收购,后期被Oracle。是开源的,功能一般,免费。和java程序兼容性好,适合中小型项目

Java开发应用程序主要使用的数据库:Oracle、BD2、MySQl

3. 关系型数据库

在开发软件的时候,软件中的数据之间必然会有一定的关系存在,当把数据保存到数据库中时候,也要在数据库中维护数据之间的关系,而前面介绍的几种数据库软件都是可以维护数据关系的。因此我们也把他们叫做关系型数据库。

还有一种数据库软件叫做非关系型数据库,他同样需要维护数据之间的关系,只是维护的方式不同。

关系型数据库:可以维护数据库中数据之间的关系。保存数据时,需要使用E-R图来描述数据关系,然后根据E-R图来生成对应的数据表单保存数据。

E-R实体关系图

实体:可以理解为我们Java程序中的一个类,在E-R图中使用矩形表示。

实体中的数据,我们称为这个实体的数据,可以理解为java中类的成员变量,在E-R图中使用 椭圆表示。

实体和实体之间的关系在E-R图中使用菱形表示。

二、数据库的操作

学习对数据库的操作,首先要学习mysql数据库的连接以及内部存储方式。

1. 连接数据库

当一台电脑安装了mysql数据库之后,这个台电脑就可以称为是一个数据库服务器。用户可以连接这台电脑中的mysql数据库,进行数据的查询等操作。在开发中会有专门的高性能计算机用于安装操作数据库。

用户通过在dos窗口中输入:mysql (-h 连接的主机ip -P端口3306)-u 用户名 -p 密码

mysql -h 192.168.1.253 -P 3306 -u root -p 1234 前提是 192.168.1.253 主机远程的访问开启。

连接本机: 省略 -h 和 -P  主机和端口。直接使用:mysql -u 用户名 -p 密码

2. mysql数据库的内部存储结构

当一个电脑安装了数据库之后,那么这个台电脑中就可以保存数据,但是数据不能直接保存在数据库软件中,我们需要先在数据库软件中创建数据仓库,然后在数据仓库中创建数据表,数据表中用来保存数据。

总结:数据库软件,可以管理多个数据仓库。一个数据仓库可以管理多个数据表。每个数据表中可以存储多行数据记录。

3. SQL语句

如果想操作数据库软件中的数据仓库和数据表以及表中的数据,需要使用SQL语句。

SQL语句:Structured Query Language结构化查询语言。SQL语句不依赖于任何平台,对所有的数据库是通用的。SQL语句的语法标准是由W3C组织制定的,具有查询、操纵、定义和控制关系型数据库的四方面功能。

SQL语句是一个非过程性的语言,每一条SQL执行完都会有一个具体的结果出现。

比如前面学习的Java等语言属于过程性语言,在其中可以定义变量等完成复杂的运算。而SQL语句本身是不支持这些的,但是不同的数据库厂商针对自己数据库的特点在原有的SQL语句上进行的增强。比如 Sqlserver中的T-SQL、Oracle中的PL/SQL等可以编写复杂的SQL语句。

4. SQL分类

DDL:数据定义语言 - Data Definition Language,用来定义数据库的对象,如数据表、视图、索引等。

DML:数据处理语言 - Data Manipulation Language,在数据库表中更新,增加和删除记录。

DCL:数据控制语言 – Data Control Language,指用于设置用户权限和控制事务语句。

DQL:数据查询语言 – Data Query Language,用于查询数据表中的数据,通过select关键字。

我们学习SQL语句的路线:

  1. 学习SQL数据对数据仓库的操作
  2. 学习SQL语句对数据表的操作
  3. 学习SQL语句对数据表中的数据记录操作

5. 查询所有数据库

(1)查询当前数据库软件中的所有数据仓库

语法: show databases;

(2)查看数据库创建规则(编码表等)

语法: show create database 数据库名;

当我们创建数据库的时候,如果没有指定编码表,默认使用的是安装数据库软件时指定的编码表。

6. 创建数据库语法

create database 数据库名; #创建时没有指定编码表,因此会使用安装数据库时默认的编码表。
create database 数据库名 character set 编码表名; #创建数据库会使用指定的编码表。
create database 数据库名 character set 编码表名 collate 排序规则; #使用指定的编码表同时还可以根据编码表指定排序规则。 规则查看MySQL_5.1 版本的API。

(1)创建一个名称为mydb1的数据库。

create database mydb1;

(2)创建一个使用utf8字符集的mydb2数据库。

create database mydb2 character set utf8;  #在sql 语句中utf-8的编码表名称不能写 -

(3)创建一个使用utf8字符集,并带校对规则的mydb3数据库。

create database mydb3 character set utf8 collate utf8_bin;

7. 删除数据库

语法: drop database 数据库名;

(1)删除前面创建的mydb1数据库。

drop database mydb1;

8. 修改数据库编码集

语法:alter database 数据库名称 character set 字符集 collate 比较规则;

(1)修改mydb2字符集为gbk

alter database mydb2 character set gbk;

9. 切换数据库和查看正在使用的数据

当我们创建好了数据仓库之后,需要在数据库中创建数据表。最终在数据表中保存数据。我一个数据库软件中可以创建多个数据仓库,所以在创建数据表之前,我们需要先切换到指定的数据库中。

(1)查询正在使用的数据库语法

select database(); #null表示当前并没有在使用任何的数据库。

(2)切换数据库语法

use 数据库名;

  

重点练习: 创建库、删除库、切换库的语句。

三、创建表的操作

有了数据仓库之后,我们就可以在数据仓库创建数据表,用来保存数据。

1. 查看所有表

语法:show tables;

2. 数据表的创建

语法:create table 表名(列名 类型(长度),列名 类型(长度)... );

数据表是基于java中的类创建出来的,一个类可以对应数据库中的一张表。我们创建数据表的目的是给数据表中保存数据。而我们的数据最终来源于Java程序。

有如下一个Java类,通过java类来创建一个对应的数据库表单。

class Student{
    private String name;
    private String sex;
    private String password;
    private Date birthday;
}

一个数据表可以存在很多列(字段),每列需要指定数据类型和长度。

在创建学生的这个数据表的时候,数据表中最少需要定义和Java中Student类中相同的属性(成员变量)。就需要把Java中类的属性和数据库中表的列一一对应,因此我们就需要研究在Mysql数据库中表的每一列的数据类型。

2.1 MySQL的数据类型

MySQL的数据类型可以参考MySQL的API。

字符串型

Java中的String 和char 类型 对应 mysql  中的  varchar(列的长度)、char(列的长度)

varchar:变长

char:定长

假设我们要存储 abcd 这个字符串。如果定义成varchar(10) 这时储存的数据不足10个,这时会把多余的释放。

如果使用char(10),它会把存储的数据添加到10个长度。如果存储的长度超出了表中列的长度,存储报错。

数值型

Java中 :byte、   short 、 int 、long 、float、double   

mysql中:tinyint 、smallint、int、 bigint、float、double 在创建数据表的时候,数值型也有自己的长度,一般不需要指定,使用默认的长度。

逻辑型 

Java中: boolean

mysql中:BIT

日期型

Java中:Date、Time、DateTime、TimeStamp

mysql中:DATE(年月日)、TIME(时分秒)、DATETIME(年月日时分秒)、TIMESTAMP(年月日时分秒)。

timestamp和datetime都可以保存年月日时分秒,但是timestamp它在保存数据时会自动更新保存数据时的当前时间。

大数据类型(图片文件类型的数据)

Java中: 字节流:InputStream。   字符流:Reader。

mysql中:BLOB 保存的字节数据   TEXT 保存字符数据

2.2 练习创建表

练习:创建如下表单

create table student(
   name varchar(32) ,
   sex varchar(10),
   password varchar(32),
   birthday date
);

2.3 查看表结构语法

语法:desc 表名;

3. 单表创建时约束

约束:通过某些限制,来规定当前数据表中的某列数据是否可以为null,是否可以重复,某一列中的数据在当前表中必须唯一等限制。

约束的目的:只是为了保证存储在数据表中的数据完整性和有效性。

(1)唯一约束:unique

列名 列的类型 unique; #该列(字段)的值不允许重复。   

在一张表中唯一约束的列可以有多列。

(2)非空约束:not null

列名 列的类型  not null; #表示该字段的值不能为空。

(3)主键约束:primary key

列名 列的类型  primary key; 

主键只能标识数据表中的某一列,使用这一列来区分此列数据和其他数据的不同。这一列的数据在整个数据表中是不允许重复的。效果 = 唯一 + 非空。

① 主键的选型:主键我们开发中不建议使用和业务密切相关的字段充当,创建一个与业务无关的字段充当,比如student表,我们不使用学号充当主键,我们创建一个id的字段充当

② 主键可以有多个:如果只有一个主键,我们成为唯一主键,如果有多个主键,我们成为联合主键

(4)自增长

列名 列的类型  auto_increment

数值类型的字段,每次添加的时候,无须指定值,由数据库指定值,并且该值用后,就不在使用。

① 自增长从1开始,值不会重复使用,添加的时候无须为自增长字段设值

② 自增长的字段也可以手动赋值,但是不推荐,会造成冲突

(5)练习

创建一个 studnet2 表,添加相应的约束:

create table student2(
   id int primary key auto_increment,  
   name varchar(32)  not null ,  
   sex varchar(10),
   password varchar(32) unique not null,  
   birthday date
);

 查看studnet2 表结构:desc student2;

 

4. 数据表结构修改

修改数据表:可以对表名、表中的列名、列的类型、列的约束进行增删改。

(1)语法

alter  table 表名 增/删/改 列名 类型(长度) 约束;

(2)增加列

alter table 表名 add 列名 类型(长度) 约束;

(3)修改现有列类型、长度和约束语法

alter table 表名 modify 列名 类型(长度) 约束;

(4)修改现有列名称语法

alter table 表名 change 旧列名 新列名 类型(长度) 约束;

(5)删除现有列语法

alter table 表名 drop 列名 ;

(6)修改表名语法

rename table 旧表名 to 新表名;

(7)修改表的字符集语法 

alter table 表名 character set utf8;

(8)练习

① 在student2表上增加height列

alter table student2 add height double ;

  

② 修改birthday列不能为null

alter table student2 modify birthday date not null;

③ 修改列名name为username

alter table student2 change name username varchar(48) not null;

 

④ 修改username列的长度为60

alter table student2 modify username varchar(60) not null;

⑤ 删除sex列

alter table student2 drop sex;

⑥ 将student2表名修改为person表

rename table student2 to person;

⑦ 将person 表的编码表修改为gbk编码表。

alter table person character set gbk;

⑧ 查看数据表信息

show create table 表名;

5. 数据表删除

语法:drop table 表名;

(1)删除前面创建的student表

drop table student;

 

四、简单数据表的增删改查

数据表的常见操作简称:CRUD:create  read  update  delete

1. 向数据表插入数据

语法:insert into 表名 (列名,列名,列名......) values (值,值,值......);

下图为表的结构

(1)给person表中插入数据

insert into person
    (id,username,password,birthday,height,age)
    values 
    (1,’zhangsan’,’1234’,’1990-09-09’,178.8,18);

(2)查看表中数据语法

select * from 表名;

(3)在插入数据的时候,如果某些列可以为null,或者是自动增长的列,或者有默认值的,在插入的时候可以省略。

insert into person
    (id,username,password,birthday)
    values
    (2,'lisi','abcd','1998-10-10');

(4)如果给表中的所有列插入数据,这时可以省略表名后面的列名,直接写values

insert into person values (3,'wangwui','aaaa','1988-9-8',167.8,25);

2. 表中数据的默认值

在创建表单时,针对于表中的字段可以给出默认值,当在给表中插入数据时,如果当前字段有默认值,在插入时可以省略,此时当前字段的值就会自动赋值为默认值。同时在插入输入时,也可以给当前字段重新赋值。

如果某个字段被设置为了主键约束,那么则不可以设置默认值。

如果某个字段被设置为了唯一约束,那么第一个插入的数据可以不用赋值,结果使用默认值,但是第二个插入数据在赋值时,一定要重新赋值,因为唯一约束不允许出现重复的值。

语法

create table 表名(
    列名 类型(长度) default 默认值,
    列名 类型(长度)...
);

练习—准备数据

create table teacher(
    id int primary key auto_increment,
    age int default 18 unique,
    name varchar(30) default '磊哥'
);

(1)给表中添加数据,有默认值的字段直接使用默认值

insert into teacher(id)values(1);

(2)依然使用默认值给表中添加数据

insert into teacher(id)values(2);

因为age是被unique唯一约束,所以第二次赋值时,必须重新赋值,但是name并没有被唯一约束,所以可以继续使用默认值。

insert into teacher(id,age)values(,77);

3. 数据记录修改操作

update 表名 set 列名=值,列名=值.... where条件语句;

练习

(1)修改person表中的所有用户的age 为 30岁

update person set age = 30;

注意:一般在修改数据表中的数据时,都需要加条件,而不能直接修改表中的某一列的所有值。

(3)修改姓名为zhangsan的这个用户的年龄为88

在修改数据的时候,需要添加条件,如果要添加条件,需要在修改语句的后面加上where关键字,在where后面添加具体的条件。

update person set age= 88 where username=’zhangsan’;

(4)把id为2 的用户 的 username 和password 修改为 lisi

update person set username=’lisi’ , password=’lisi’ where id = 2;

(5)把id为3的用户, 用户名修改为 中文的 王五;

update person set username=’王五’ where id =3;

在对数据表中的数据进行修改、插入的时候,使用的是dos窗口,这时dos窗口需要对插入的中文进行编码,然后把数据插入到数据库中。而dos窗口中使用的编码表是gbk。但是在mysql数据库中针对客户端控制的设置的编码表是utf8。这时只能修改数据库中默认的客户端程序的编码表。

MySQL有六处使用了编码表,分别为:client、connection、database、results、server、system。

修改mysql的配置文件,my.ini

修改完mysql的配置文件之后,需要重启mysql的服务。重新进入到表所在的数据仓库中。

4. 数据记录的删除操作

delete from 表名 where条件语句;

注意:如果删除表中的记录时,没有添加where条件,这时会把表中的所有数据删除。

delete from person; 把person表中的所有数据全部删除,但是person的表还存在。

drop table person; 把person数据表从数据库中删除。

(1)删除person表中username 为zhangsan 的用户信息

delete from person where username = ‘zhangsan’;

(3)删除表中所有的数据

delete from person;

(4)如果要删除一张表中的所有数据,这时可以使用 truncate table 表名;

truncate table person;

(5)面试题

删除表中的数据时没有加where 条件,会删除表中的所有数据,它与truncate 有什么区别?

delete删除表中的数据是按照行逐行删除。 效率低

truncate它是先把表删掉,然后再把表创建出来。 效率高

五、数据表记录的查询

查询当前某个数据表的数据,查询的方式有多种,有时需要查询所有数据,有时需要查询部分满足条件的数据,所以我们需要知道如何对数据的条件进行判断。

1. MySQL运算符

判断两个数据是否相等:  相等=     不等 <>

逻辑运算:and 逻辑与  or 逻辑或  not 逻辑非

区间判断: between ...and... 在两者之间取值

如: between 70 and 80

    等价于 >=70 <=80    注意前面那个数要比后面那个数要小

age >= 24 and age <=50  between 24 and 50

列表值取一in(值,值,值) 在指定值中任取一个 in(70,80,90) 值可以是70、80或者90

where 列名 in (值,值,值.......);

where 列名 = 值 or 列名=值 or 列名=值 .......

模糊查询like ' pattern' 进行模糊查询 ,表达式有两个占位符: % 任意字符串 , _ 任意单个字符。

例如:

name like '张%' 所有姓张学员    %张% 中间有张字的学员,字数不限制

name like '张_' 所有姓张名字为两个字学员   _张_ 三字中间为张的学员

null空判断 is null 判断该列值为空。    is not null 判断该列值不为空。

sql中对null的判断,不能写 = null   在sql 中 null = null 结果不成立。

2. 准备数据

create table student(
    id int primary key auto_increment,
    age int ,
    name varchar(32) not null,
    sex varchar(10) not null,
    score double not null,
    birthday date
);
insert into student (id,age,name,sex,score,birthday) values(null,23,'zhangsan','male',98.99,'1990-09-09');
insert into student (id,age,name,sex,score,birthday) values(null,23,'lisi','男',56.99,'1990-02-09');
insert into student (id,age,name,sex,score,birthday) values(null,24,'王五','女',75.99,'1988-01-01');
insert into student (id,age,name,sex,score,birthday) values(null,25,'赵六','男',80.99,'1980-11-12');
insert into student (id,age,name,sex,score,birthday) values(null,null,'秋香','女',84,null);

3. 查询表中的数据

selse 查询的内容 from 从哪张表中查询 where 查询的条件。

查询语法

select * from; # 查询表中的所有数据
select * from 表名 where 查询条件; # 根据条件查询表中的所有数据
select 列名,列名... from 表名; # 查询指定列的所有数据
select 列名,列名... from 表名 where 查询条件; # 根据条件查询指定列的所有数据

(1)查询所有学生的姓名和年龄

select name , age from student;

(2)查询表中年龄大于等于24岁的学生展示姓名和年龄

select age,name from student where age >= 24;

(3)查询年龄等于23的所有学生信息。

select * from student where age = 23;

(4)查询成绩在80~100(包含)之间的学生信息

select * from student where score >=80 and score <=100;
select * from student where score between 80 and 100;

(5)查询年龄>23,成绩>80的同学信息

select * from student where age > 23 and score > 80;

(6)查询年龄为18,23,25的同学信息

select * from student where age in(18,23,25);
select * from student where age = 18 or age = 23 or age = 25;

(7)查询所有姓赵的学生信息

select * from student where name like ‘赵%’;

(8)查询没有年龄的学员信息

select * from student where age is null;

(9)查询有年龄的学员信息

select * from student where age is not null;

4. 排序查询

有时候我们需要对查询的结果进行排序显示:使用order by 子句排序查询结果。

语法:select * from 表名 order by 列名 asc|desc ;

asc是升序排列,desc是降序排列

(1)对年龄排序按从高到低(降序)的顺序输出。

select * from student order by age desc;

(2)对学生年龄按照升序排序,年龄相同按照成绩降序

select * from student order by age asc , score desc;

5. 别名

别名:可以对查询出来的列名 起别名(另外的名字,理解为外号也可以)。

语法:select 列名 as 别名,列名 as 别名,列名 as 别名.... from 表名 where 条件;

在使用别名的时候,as 关键字可以省略。

(1)查询年龄和成绩,并指定别名。

select age as 年龄,score as 成绩 from student;

(2)起别名时省略 as 语句。

select age 年龄 , score 成绩 from student;

(3)面试

select age score from student;

select age , score from student;

什么区别?

第一个是把查询出来的学生年龄 起别名为score。

第二个是查询 当前student表中中的age 和score两列数据。

6. 排重查询

重复的数据只查看一次。

语法

select distinct 列名 from 表名 where 条件;

(1)排重查看student表中的年龄

select distinct age from student;

7. 截取查询

截取的查询需要使用到表中数据的下标,数据表中的每个数据都有下标,和数组类似,也是从0开始。

语法

select * from 表名 limit n; # 表示从0下表开始截取前N个数据
select * from 表名 limit n , m; # 表示从n下表开始截取m个数据,如果m超过最大下标,则返回n下标开始的所有数据。

(1)截取student表中的前3个数据。

select * from student limit 3;

(2)截取student表中1下表开始的后5个数据。

select * from student limit 1,5; 

六、SQL中的函数

聚合函数,分组函数,聚集函数,内建函数,合计函数.....

SQL语言中定义了部分的函数,可以帮助我们完成对查询结果的计算操作:

count()函数 统计个数

sum()函数:求和

avg()函数:求平均值

max()、min() 函数 求最大值和最小值

1. count函数

语法

select count(*)|count(列名) from 表名 where 条件;
    # count(*) : 统计某一列的数据,包含null
    # count(列名):统计指定列的数据,不包含null

(1)统计一个班级共有多少学生?

select count(*) from student;
select count(age) from student;

(2)统计成绩大于80的学生有多少个?

select * from student where score > 80;
select count(*) from student where score > 80;
select count(score) from student where score > 80;

2. sum函数

语法:select sum(列名) from 表名 where 条件;

(1)统计一个班级成绩和

select sum(score) from student;

(2)分别统计年龄和成绩的和

select sum(age) 年龄 , sum(score) 成绩 from student;

(3)统计年龄和成绩和值

select sum(age) + sum(score) 和值 from student;

select sum(age+score) 和值 from student;

使用上述语句发现统计的和值结果是不正确的,原因是如果使用sum() 多列进行求和的时候,如果某一列中的值有null,这一列所在的行中的数据结果为0,null和任何数据相加都等于0。

可以使用mysql 数据库提供的函数: ifnull(列名,值)

select sum(ifnull(age,0) + ifnull(score,0)) 和值 from student;

在数据库中定义double类型数据,是一个近似值,需要确定准确的位数,这时可以把这一列设计成numeric类型。numeric(数据的总列数,小数位数) numeric可以替代 double float

3. avg函数

语法:select avg(列名) from 表名 where 条件;

(1)求一个班级平均分 先计算出成绩总分,在除以成绩人数。

select sum(score)/count(score) from student;

select avg(score) from student;

4. max,min函数

语法:select max(列名),min(列名) from 表名 where 条件;

(1)求班级最高分和最低分

select max(score) 最高分,min(score) 最低分 from student;

5. group by分组函数

语法:select * from 表名 group by 列名;

group by 它可以根据指定列对数据进行归类。如果这一列中有重复的数据会被合并成一个。

准备数据

create table orders(
    id int,
    product varchar(20),
    price float
);
insert into orders(id,product,price) values(1,'电视',900);
insert into orders(id,product,price) values(2,'洗衣机',100);
insert into orders(id,product,price) values(3,'洗衣粉',90);
insert into orders(id,product,price) values(4,'桔子',9);
insert into orders(id,product,price) values(5,'洗衣粉',90);

对订单表中商品归类后,显示每一类商品的总价。

(1)先对商品进行归类:

select * from orders group by product;

(2)归类后显示商品的总价

select product,sum(price) from orders group by product;

(3)查询购买的商品价格总和超过150的商品

select product , sum(price) from orders group by product where sum(price) > 150;
    # 在 where 条件后面不可以跟聚合函数
select product , sum(price) from orders group by product having sum(price) > 150;
    # 在 having 条件后面不可以跟聚合函数,条件的筛选和where是一样的。

如果使用group by 对数据进行分组之后还要过滤。这时一般不能使用where,因为where关键字的后面不能跟上面讲解的这些函数。如果需要在过滤的条件中加上述的函数,只能使用having关键字。

(4)面试题

wherehaving 都可以完成数据的条件判断,但是having后面可以跟上述的函数。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
建立环境实验和数据库/表 实验学时:2学时 实验类型:验证 实验要求:必修 一、实验目的 通过本实验的学习,使学生熟悉SQL Server 2014的集成环境,帮助学生掌握数据库、表的建立方法以及SQL Server的数据导入方法 二、实验内容    (一)、SQL Server 2014的安装 SQL Server2014的安装过程与 SQL Server 2008、SQL Server2012的安装过程类似,都提供了一个功能树以用来安装所有 SQL Server 组件,包括计划、安装、维护、工具、资源、高级、选项等功能。下面是各功能选项中所包含的内容,如图3-1所示。 图3-1 安装计划中的内容 (1)选择“安装”功能,因为要创建SQL Server 2014的全新安装,单击“全新SQL Server 2014独立安装或向现有安装添加功能”选项,如图3-2所示。 图3-2 “安装”功能中的内容 (2)在“产品密匙”页上,选择相应的单选按钮,这些按钮指示是安装免费版本的SQL Server还是具有产品密匙的产品版本,如果使指免费的评估版,只有180天的试用期限,如图3-3所示。 图3-3 “产品密钥”界面 (3)在“许可条款”页上阅读许可协议,然后选中相应的复选框以接受许可条款和条件。如图3-4所示。 图3-4 “许可条款”界面 (4)系统进行安装程序支持规则检查,以确定安装SQL Server安装程序支持文件时可能发生的问题。必须更正所有的失败,安装程序才能继续。如图3-5所示。 图3-5 “安装规则”界面 (5)在“设置角色”页上选择SQL Server功能安装,如图3-6所示。 图3-6 “设置”角色界面 (6)在“功能选择”页上选择要安装的组件。选择功能名称后,右侧窗体中会显示每个组件的说明。可以根据实际需要,选中一些功能,如图3-7所示。一般应用可选择“数据库引擎服务”、“客户端工具连接”、“SQL客户端连接”和“管理工具”等选项。 图3-7“功能选择”界面 (7)在“实例配置”页上制定是安装默认实例还是命名实例,对于默认实例,实例的名称和ID都是MSSQLSERVER,也可以自己“命名实例”安装实例,如图3-8所示。SQL Server支持多个实例,即支持在同一台计算机上同时运行多个SQL Server数据库引擎实例,每个SQL Server数据库引擎实例各有一套不为其它实例共享的系统及用户数据库。应用程序连接同一台计算机上的SQL Server数据库引擎实例的方式与连接其它计算机上运行的SQL Server数据库引擎的方式基本相同。 图3-8 “实例配置”界面 (8)在“服务器配置”页上指定SQL Server服务的登录帐户。SQL Server提供了多种服务,可以为所有SQL Server服务分配相同的登录账户,也可以分别配置每个服务账户。还可以指定服务是自动启动、手动启动还是禁用。Microsoft建议对各服务账户进行单独配置,以便为每项服务提供最低特权,即向SQL Server服务授予它们完成各自任务所需的最低权限,如图3-9所示。SQL Server中的每个服务代表一个进程或一组进程,每个进程需要有访问SQL Server相关文件和系统注册表的权限,为了能让SQL Server服务在操作系统中正常的启动和运行,就需要指定SQL Server的服务帐户,所以服务帐户指的是Windows操作系统中的帐户。 图3-9 “服务器配置”界面 (9)在“数据库引擎配置”的“服务器配置”页上指定身份验证模式、用户名、密码,如图3-10所示。这里的用户身份验证指的是登录到服务器使用的身份验证模式及用户名和密码。身份验证模式分为“Windows身份验证模式”和“混合模式(SQL Server身份验证和Windows身份验证)”。如果选择“Windows身份验证模式”表示则只能使用Windows的帐号登录,即使用当前登录到操作系统的帐号进行登录,通过这种方式用户登录到SQL Server中时不再需要输入帐号和密码。如选择“混合模式(SQL Server身份验证和Windows身份验证)”表示除了可以用使用登录到Windows的帐号作为登录的依据外,还可以使用SQL Server系统的帐号登录,这里必须为内置SQL Server系统管理员账户(SA)提供一个强密码。必须至少为SQL Server实例指定一个系统管理员。若要添加用以运行SQL Server安装程序账户,则要单击“添加当前用户”按钮。若要向系统管理员列表中添加账户或从中删除账户,则单击“添加…”或“删除…”按钮,然后编辑将拥有SQL Server实例的管理员特权的用户、组或计算机列表。 图3-10 设置身份验证模式和管理员 (10)在“准备安装”页显示安装过程中的安装选项的树视图,如图3-11所示。若要继续,单击“安装”按钮。在安装过程中,“安装进度”页会提供相应的状态,因此可以在安装过程中监视安装进度。 图3-121“准备安装”界面 (11)安装完成后,“完成”页提供指向安装日志文件摘要以及其他重要说明的链接。如图3-12所示。 图3-12 “安装完成”界面 (二)、建库建表练习      1、利用语句建库和建表: 创建学生数据库StuDB,文件名和位置自定,在此数据库中创建如下三张表: 学生表(student) (   学号(sno) 普通编码定长字符类型,长度9,主码,   姓名(sname) 普通编码定长字符类型,长度10,非空,   性别(ssex) 统一编码定长字符类型,长度2,   年龄(sage) 微整型,   所在系(sdept) 统一编码可变长字符类型,长度20 ) 课程表(course) (   课程号(cno) ,通编码定长字符类型,长度4,主码,   课程名(cname) 统一编码定长字符类型,长度,40,非空,   开课学期(Semester) 短整数, 学分(credit) 短整数 ) 修课表(sc)(   学号(sno) 普通编码定长字符类型,长度7,主码,外码   课程号(cno) 普通编码定长字符类型,长度6,主码,外码   成绩(grade) 小整型,   修课类别(ctype)普通编码定长字符类型,长度4 ) 2、建立“汽车”数据库,文件名和位置自定,在此数据库中创建如下三张表: 汽车表(CarT),结构如下:   汽车序号(CId) 整型 主关键字,   汽车名称(CName) 普通编码定长字符类型 长度为10  非空,   型号(CType)普通编码变长字符类型 长度为60  非空,   价格(CPrice) 整型,   车身眼色(Ccolor)普通编码变长字符类型 长度为20。 部门表(DepartT),结构如下:   部门序号(DId)整型 主关键字,   部门名(DName)普通编码定长字符类型 长度为20   非空,   负责人名(DLead)普通编码定长字符类型 长度为10  非空,   人数(DAmount) 整型。 汽车出厂表(FacT),结构如下:   汽车序号(CID) 整型 非空,   部门序号(DId) 整型 非空,   出厂日期(FDate)小日期时间型 非空,   出厂数量(FAmount) 整型,   出厂价格(FPrice) 整型。   其中:主关键字为(汽车序号,部门序号,出厂日期)   “汽车序号”为引用汽车表的“汽车序号”的外部关键字; “部门序号”为引用部门表的“部门序号”的外部关键字。 3、使用数据库的可视化工具建库建表 建立银行贷款表,具体要求同课堂教学的建库建表一致。 银行表(BankT)( 银行代码(Bno) 主键 银行名称(Bname) 非空 电话(Tel) ) 法人表(LET)( 法人代码(Eno)主键 法人名称(Ename)取值唯一 经济性质(Enature) 注册资金(Ecapital) 法定代表人(Erep) ) 贷款表(LoanT)( 法人代码(Eno) 银行代码(Bno) 贷款日期(Ldata) 贷款金额(Lamount) 贷款期限(Lterm) )        (三)、数据导入练习 将“学生数据库数据.xls”中的数据导入到学生数据库的三张表中。 将“银行贷款数据.xls”中的数据导入到银行贷款数据库的三张表中。 三、实验报告 将实验结果反映在实验报告中,并对实验中遇到的问题及解决方案、进行整理、分析总结,提出实验结论或自己的看法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书启秋枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值