|
SQL_Server
数据库安装完成之后,那么需要对应的启动数据库,在启动之前,需要保证数据的服务处于开启状态:在服务中-》SQL server处于运行状态
数据库创建出来之后,建议不要修改计算机名称,否则数据库在修改计算机名称之后就不能找到本地服务器名称。
如果想链接其他在同一个ip段的数据库,那么你就应该对数据库的ip的支持进行配置,需要启用服务端和客户端的TCP/IP的设置,并且需要设置端口号,SQLServer默认的端口号为1433,mysql的端口号为:3306,oracle的端口号为:1521,配置过程如下:
1:
2:
3:
服务器端的配置完成,客户端的配置也需要保证TCP/IP协议的启动
配置完成之后,你需要让你的配置生效,则需要重新启动Sql Server服务。
如果你想链接其他人的数据库,那么你需要知道的条件:链接数据库的IP、链接的数据库名,链接数据库的密码
如果数据库安装不成功,或者需要重装?
1.重装系统重装数据库(不推荐)
2. 重装数据库步骤如下:
²停止数据库的所有服务,在添加和删除程序中,卸载sqlserver的程序
²卸载完成之后,删除sqlserver在物理磁盘的文件目录
²卸载服务
²卸载注册表信息,regedit打开注册表编辑器找到HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE,对应的在Software这个文件夹下删除所有与sqlserver有关的注册表信息。
²删除之后,重启电脑,重装安装
用户登录:
可以采用windows身份验证,用计算机名和空密码进行登录
也可以采用sqlserver身份验证,采用默认的sa用户和设置的密码进行登录
修改密码:
如果sa用户密码忘记了,则可以采用windows身份验证登录之后修改sa的密码
用户登录成功之后:
可以看到在数据库的文件夹,有数据库和数据库快照文件夹
系统数据库文件夹存放的是数据库安装完成之后,自带安装的4个数据库
Master 从整体上控制用户数据库和sqlserver操作
Msdb 用来存储作业,报警等信息
Model 模型数据库
Temp 临时数据库,用来存储临时信息
当前用户登录的时候默认的使用是master数据库
我们也可以创建自己的数据库,创建的数据库就存放在当前用户下的文件夹下,谁创建的数据库,那么创建的数据库就属于谁,其他人不能访问,除非被其他人授权。
创建用户自带的数据库:一种是使用命令一种是使用图形化界面
在开始->运行-输入sqlcmd -H host -U sa -P 123进入的窗口是命令窗口
Sqlcmd –U sa 回车提示输入密码 123
Sqlcmd window 用户
此种操作是开启一个dos窗口,对数据库的操作都是使用的命名,没有图形化界面
SQL语言
SQL语言功能极其强大,但由于设计巧妙、语言十分简捷,完成核心功能只用了9个动词,如下表所示
SQL功能
| 动词
| 数据查询
| SELECT
| 数据定义DDL
| CREATE、ALTER、 DROP
| 数据操纵DML
| INSERT、UPDATE、DELETE
| 权限控制DCL
| GRANT、REVOKE
|
数据库语言的常用操作:
--一个数据库,数据库名叫ibm
create database ibm;
--如果你需要对哪个数据库进行操作,在操作之前需要将数据库处于选定状态
use ibm;
--删除一个数据库ibm
--正在使用的数据库不能够被删除
drop database ibm
--在ibm这个数据库中创建表
--那么你就应该知道表中的数据类型
--表中包括:字段名、字段类型、主键、唯一健、外键、是否为空、默认值
--字段名:在一张表中字段名不能有重复、字段名不能为数据库关键字、字段名中不能包含非法字符
--数据类型:int、varchar()、date、money()、varchar2()、float
--主键用来标示表中字段的唯一健,一般和外键关联,达到链接两张表的操作主键一般设置自动增长
--唯一健用来标示表中字段插入的值在表中唯一存在
--外键,是用来关联两张表
--是否为空,是用来对某一个字段设置能不能为空
--默认值是指如果你不给某一个字段赋值,那么该字段就采用默认设置的值
--创建一张表表名 tb_student
--sid 整型(int)主键自增长
--sname 字符型varchar(n)不能为空
--sbirth datatime 可以为空
--sclass varchar 可以为空如果班级不设置则默认为java1000班
--创建表的语法格式 create table表名(字段类型修饰,字段类型修饰......);
create table tb_student(
sid int identity(1,1),
sname varchar(16)notnull,
sbirth datetime,
sclass varchar(16)default'java1000',primarykey(sid)
);
--往创建的表中插入条语句
--插入语句的格式insert into表名(字段,字段,字段)values('值','值','值')
--如果一个表中存在主键,主键自动增长之后,主键不需要插入值会自动的添加
insert into tb_student(sname,sbirth,sclass)values('admin',getdate(),'java1002');
--在tb_student表中增加一个字段aage int此时增加的字段的值全部为空
alter table tb_studentadd sageint;
--删除表中的一个字段
alter table tb_studentdropcolumn sage;
select * from tb_student;
--查询表中的某一列的信息
select sname from tb_student;
--根据id查询某一列的记录
select *from tb_studentwhere sid=3;
--查询java1000班的学生
select *from tb_studentwhere sclass='java1000';
--根据sid值的大小查询出来的结果倒序显示 desc(降序)asc(升序)
select *from tb_studentorderby sid desc;
select *from tb_studentorderby sid asc;
--模糊查询 like %(匹配所有) _(占有符号)
--查询班级名为java开头的所有班级
select *from tb_studentwhere sclasslike 'java%';
--查询以命名的班级
select *from tb_studentwhere sclasslike '%1002';
select *from tb_studentwhere sclasslike '____1002';
select *from tb_studentwhere sclasslike 'net____';
--更新 update表名set字段名= '修改之后的值',字段名='修改之后的值'where 条件
--将id为的那条记录的sclass改为net1205
update tb_student set sclass = 'net1205'where sid= 5;
--一次将一条记录中的所有的字段都改主键的值可不可以改?
update tb_student set sname = 'IBM',sbirth=getdate(),sclass='aaaa'where sid=1;
--删除delete from表名where条件表示删除表中符合条件的记录
--删除sid=8的那条记录
delete from tb_studentwhere sid=8;
--删除多条删除id>5的记录
delete from tb_studentwhere sid>=3;
--清空表中的数据表还存在知识数据没了
truncate table tb_student;
--删除一张表,表中的数据和表在数据库中都删除
drop table tb_student;
select *from tb_student;
| SQL Server的常用函数
索引
--创建一张表tb_student(sid name,score,sclass,startschool);
create table tb_student(
sid int identity(1,1),
sname varchar(32)notnull,
score int default 0,
sclass varchar(32),
startschool datetime,
primary key(sid),
);
--往其中插入条记录
insert into tb_student(sname,score,sclass,startschool)
values('es',80,'天灾',getdate());
insert into tb_student(sname,score,sclass,startschool)
values('bs',90,'天灾',getdate());
insert into tb_student(sname,score,sclass,startschool)
values('cs',30,'近卫',getdate());
insert into tb_student(sname,score,sclass,startschool)
values('as',40,'近卫',getdate());
--聚合函数
--count 用来取出表中有多少条记录
select count(*)from tb_student;
select count(*) as'数据条数'from tb_student;
select count(1) from;
--sum求和函数对某一列的值进行求和
select sum(score)as'总成绩'from tb_student;
--avg求平均数的函数,对某一列的值进行求平均数
select avg(score)as'平均成绩'from tb_student;
--max求最大值对某一列的值进行求最大值运算
select max(score)as'最高分'from tb_student;
--min 求最小值对某一列的值进行求最小值运算
select min(score)as'最低分'from tb_student;
--日期和时间函数
--取到系统时间
select getdate() as'时间';
--取到系统时间的部分事件
select DATEPART(yyyy,getdate())as'年份';
select DATEPART(MM,getdate())as'月份';
select DATEPART(hh,getdate())as'小时';
select DATEPART(minute,getdate())as'分钟';
--用来改变取到的系统的时间
select DATEADD(yyyy,-20,getdate())as'20年前';
select DATEADD(dd,-1,getdate())as'昨天';
--DATEDIFF
select DATEDIFF(dd,'2012-1-28','2012-2-28');
--求你出生到现在有多少天
select DATEDIFF(dd,'2000-2-1','2012-2-28')as'你出生的天数';
--字符函数
--CHAR 返回对应的字符的ASSIC码值
select char(68);
--将ASCII装换成数字
select ASCII('A');
--LEET('',N);
select LEFT('IBM',3)as'333';
select RIGHT('IBM',3)
--返回指定字符串的长度(字符串尾随空格不计算)
select len('IBM');
select len(' i b m ');
--字符串的截取(表示从第三个位置开始截取两个长度的字符串,包括开始位置)
select substring('IBM',3,2);
--索引的用处:
--索引的创建一般是用来提高数据的查询效率,
--设置数据的合法性
--唯一索引:读表中的某一个或者多个字段设置成唯一索引,那么设置的字段不能有重复的数据
--创建唯一索引的语法格式:
--create unique index 唯一索引名on
-- 表名(字段,字段);
--在表的sname列上建立唯一索引
create uniqueindex unameon tb_student(sname);
--如果想一次建立多个列的唯一索引则只需要在sname后面添加即可
create uniqueindex unameon tb_student(sname,sclass);
--建立唯一索引之后无法插入有相同值的列索引名不能重复
insert into tb_student(sname,score,sclass,startschool)
values('es',80,'中立一班',getdate());
delete from tb_studentwhere sid=5;
--聚簇索引:聚簇索引的顺序与表中的物理顺序一致
--聚簇索引一般建立在最常查询的列上,但是列中纪录的改变会改变纪录的顺序值
--聚簇索引一般建立在主键上
--一张表中最多只能存在一个聚簇索引
--建立一个聚簇索引的语法格式
--create CLUSTERED index 聚簇索引名on表名(主键列名);
create clusteredindex onlyindexon tb_student(sid);
--删除一个索引删除指定表的索引
--drop index 表名.索引名
--删除刚刚建立的聚簇索引
drop index tb_student.onlyindex;
--索引不能够进行修改,所以你要修改一个表上的索引,是先删除索引,再创建对应的索引
| |
|