目录
1.SQL SERVER 2008 总结一(基础知识)
1.1 SSMS 操作
1.1.1 库的操作
1.1.2 表的操作
1.1.3 数据的操作
2.2 T-SQL操作
2.1.1 库的操作
2.1.2 表的操作
2.1.3 数据的操作
3.SOL SERVER 2008 总结三(SELECT查询)
3.1.显示所有行、所有列的数据
3.2.显示所有行、部分列的数据
3.3.显示部分行、所有列的数据
3.4.显示部分行,部分列的数据
3.5.修改查询结果中的列标题
3.6.限制结果集返回的行数
3.7.用WHERE实现条件查询
3.7.1绝对匹配 用=
3.7.2 模糊查询 用LIKE 和 %、_、__、[]组合
3.7.3比较运算符
3.7.4逻辑运算符
3.7.5 between and
3.7.6in
3.7.7空置比较
3.7.9排序ORDER BY
3.7.10创建表,包括结构和数据
3.7.11 计算
4.SOL SERVER 2008 总结四(函数总结)
4.1 聚合函数
4.1.1 求和
4.1.2 求平均值
4.1.3 求最大值
4.1.4 求最小值
4.1.5 求记录行数
4.2 数学函数
4.2.1 求绝对值
4.2.2 四舍五入
4.2.3求随机数
4.2.4取整数
4.2.5求幂次power(x,y),计算x的Y次方
4.2.6计算开平方函数:sqrt()
4.2.7用PI表示
4.3字符串函数
4.3.1.求ASCII码,ASCII(字母),
4.3.2求字符,char(数值)
4.3.3查询字符函数LEN
4.3.4去空格
4.3.5.取子串函数
4.3.6. 大小写转换
4.3.7替换子串函数
4.3.8字符串连接符:+
4.4日期时间函数
4.4.1.取系统时间函数:getdate()
4.4.2.去年份函数:year(日期)
4.4.3.取月度函数:month()
4.4.4.取日期函数:day()
4.4.5.取日期时间中任意部分
4.4.6.返回个日期之间的差。
4.4.7.日期加上数值,产生新的日期。Dateadd(日期元素,数值,日期)
4.4数据类型转换函数
4.4.1cast (数据as新类型)
4.4.2Convert(新类型,数据)
学习数据库主要就是学习如何对数据进行增删改查操作
平时所说的数据库(DBMS数据库管理系统)实际上就是一款软件, 电脑上安装了这个软件,电脑就可以称为数据库服务器
常见的DBMS:
MySQL: Oracle公司产品, MySQL 08年被Sun公司收购,09Sun公司被Oracle收购. 目前市占率排名第一, 开源软件, 原MySQL创始人从Oracle离开创办MariaDB
Oracle: Oracle公司产品, 拉里埃里森32, 闭源产品, 性能最高价格最贵. 市占率排名第二
SQLServer: 微软公司产品,闭源产品, 市占率第三, 主要应用在微软的整套解决方案中
DB2: IBM公司产品,闭源产品 主要应用在IBM整套解决方案中.
SQLite: 轻量级数据库 安装包只有几十k,主要应用在移动设备或嵌入式设备中
网站开发整套解决方案:
网站= 开发语言(Java/php/.net)+webServer+操作系统(linux/windows/mac os等)+数据库(MySQL/Oracle/SQLServer....)
开源和闭源:
开源:开放源代码, 免费 盈利方式:通过卖服务 , 有技术大拿无偿维护升级
闭源: 不公开源代码, 盈利方式:通过卖产品和服务 , 有技术大拿攻击(但是闭源产品公司一般都比较有钱 养一群人维护升级)
学习数据库主要需要掌握一门语言 SQL(Structured Query Language) 结构化查询语言 用于程序员和数据库软件之间进行交流
DDL: 数据定义语言, 负责数据库和表相关的操作
DML: 数据操作语言, 负责对数据进行增删改查
DQL: 数据查询语言, 只负责查询
TCL: 事务控制语言, 负责处理事务相关
DCL: 数据控制语言, 负责创建用户及分配用户权限相关
1. 创建库
光标定位于“数据库”à右键à新建数据库à输入库名:textà确定
2.修改库名
光标定位于要修改的库名textà右键à重命名à输入库名:good
注:修改库名后,原文件名不变。
3.分离库
光标定位于要分离的库名à右键à任务à分离(点“删除链接”)à确定
4.附加库
光表定位于数据库à右键à附加à寻找要添加的数据库à确定(刷新)
5.删除库
光标定位于要删除的数据库à右键à删除(点关闭现有链接)à确定
注:分离库于删除库的区别:
分离库文件依旧存在,文件名为分离的库名,删除库文件随之删除。
1.创建表
光标定位于数据库中的表à右键à新建表à添加列名à点击保存à输入表名称à确定
2.修改表名
光标定位于要修改的表à右键à重命名
3.修改表结构
光标定位于要修改的表à右键-->设计à修改表à点击保存
注:若不能修改则点击工具à选项àDesignersà去掉“阻止保存要求重新创建表的修改”的对号à确定.
4.删除表
光标定位于要删除的表à右键à删除à确定
1.插入数据
光标定位于要插入数据的表à右键单击“编辑前200行”à插入数据à关闭
2.修改数据
光标定位于要插入数据的表à右键单击“编辑前200行”à修改数据à关闭
3.删除数据
光标定位于要插入数据的表à右键单击“编辑前200行”à右键删除数据à关闭
4.查询数据
光标定位于要插入数据的表à右键单击“编辑前1000行”à即可查询要查询的数据,此数据不可修改à关闭
1.创建库
create database xs
on(name=xs,filename='c:\xs.mdf')
log on(name=xs_log,filename='c:\xs_log.ldf')
2.删除库
drop database xs
3.打开库(或切换库)
use xs
1.创建表
create table xsda
(
姓名 char(8),
学号 char(11),
性别 char(2),
年龄 int,
成绩 float
)
2.删除表
drop table xsda
3.修改表结构:字段名、类型、
修改表名
格式: rename table 原名 to 新名;
举例: rename table person to per;
添加表字段
最后面添加格式: alter table 表名 add 字段名 类型;
最前面添加格式: alter table 表名 add 字段名 类型 first;
在xxx字段的后面添加: alter table 表名 add 字段名 类型 after 字段名;
举例:
alter table per add gender varchar(5);
alter table per add id int first;
alter table per add hobby varchar(20) after name;
查看表字段
格式: desc 表名;
举例: desc per;
删除表字段
格式: alter table 表名 drop 字段名;
举例: alter table per drop hobby;
修改表字段
格式: alter table 表名 change 原名 新名 新类型;
举例: alter table per change id pid int;
1.插入数据
(1)所有字段
insert xsda values()
(2)部分字段
Insert stu(xh,xm)valuse()
如果执行以上SQL语句 报以下错误 在终端中执行 set names gbk; 回车 再次输入即可.
2.查询数据
(1)查询所有数据
select * from xsda
(2)查询部分数据
select * from xsda where xb=’’
3.修改数据
(1)所有数据
update xsda set xb=''
(2)部分数据
update xsda set xb=''where xm=’’
4.删除数据
(1)所有数据
delete xsda
(2)部分数据
delete xsda where xm=’’
select * from Student
select stuno , stuname from Student
select * from Student where ClassNO='20000001'
select stuno , stuname from Student where ClassNO='20000001'
select StuNo 学号,ClassNo 班号,StuName 姓名, Pwd 密码 from student
select StuNo '学号',ClassNo '班号',StuName '姓名', Pwd '密码'from student
select StuNo as 学号,ClassNo as 班号,StuName as 姓名, Pwd as 密码 from student
select 学号= StuNo, 班号=ClassNo,姓名=StuName ,密码= Pwd from student
select top 10 * from student
select top 10 percent * from student
select * from student where StuName='朱川'
select * from student where StuName='朱%'
select * from student where StuName='%朱'
select * from student where StuName='%朱%'
select * from student where StuName=' _朱%'
select * from student where StuName=' __朱%'
select * from student where StuName='[朱]%'
select * from StuCou where WillOrder<3
=
select * from StuCou where WillOrder =3
<
select * from StuCou where WillOrder <3
<=
>
>=
<>,!=
select * from StuCou where WillOrder !=3
select * from StuCou where WillOrder <>3
!<
select * from StuCou where WillOrder !<3
!>
说明:数字,不需要引号;其他需要单引号
AND:与,并且
select * from StuCou where WillOrder=3 and CouNo='003'
O:或,或者
select * from StuCou where WillOrder=3 or CouNo='003'
select * from StuCou where WillOrder >=3 and WillOrder <=4
select * from StuCou where WillOrder >2 and WillOrder <5
NOT:非,不是
select * from StuCou where not WillOrder<3
select * from StuCou where WillOrder!<3
select * from StuCou where WillOrder between 3 and 10
包括3和10
相当于
select * from StuCou where WillOrder >=3 and WillOrder<=10
select * from StuCou where WillOrder in(1,3,5)
相当于
select * from StuCou where WillOrder=1 or WillOrder=3 or WillOrder=5
select * from StuCou where CouNo in('001','003','005')
是空:select * from StuCou where RandomNum is null
非空:select * from StuCou where RandomNum is not null
(1)升序:ASC 可以省略 默认为升序
select * from StuCou order by WillOrder ASC
或
select * from StuCou order by WillOrder
(2)降序:DESC ,不能省略
select * from StuCou order by WillOrder desc
(3)多个字段排序
select * from StuCou order by StuNo desc, Willorder desc
select * into xxx from StuCou
select * into yyy from StuCou
select * from yyy
select *,willorder*10'计算结果'from StuCou
select '2+5'算式,2+5结果
select *,'2+5',2+5 from StuCou
elect SUM(willorder) from StuCou
select SUM(willorder)'求和' from StuCou
select avg(willorder)'平均值' from StuCou
select max(willorder)'最大值' from StuCou
select min(willorder)'最小值' from StuCou
(1)用字段名:select count(willorder)'总行数' from StuCou
(2)用*:select count(*)'总行数' from StuCou
select SUM(willorder)'求和',max(willorder)'最大值',avg(willorder)'平均值',min(willorder)'最小值',count(willorder)'总行数'from StuCou
select ABS(-12)
select ROUND(12.3456,3)
与
select ROUND(12.34556,3)
结果不一样
select RAND()
结果的范围是:0大1之间,不包括0和1
(1)取比原数大的整数
select CEILING(1.123)
select CEILING(100*RAND())
结果是1到100,包含1和100
(2)随机取数
select CEILING(57*RAND())
(3)去比原数小的整数
select FLOOR(123.123)
select FLOOR(100*RAND())
结果是0到99,包含0和99
select POWER (10,3)
select SQRT (4)
select PI ()
半径为5圆的面积
select POWER (5,2) *PI ()
select ASCII ('a')
select CHAR(97)
select LEN ('学员')
注:计算前面,中间的空格,不计算字符串最后的空格
select *,LEN (stuname) from Student where (stuname)=2
(1).去左侧ltrim(字符串)
select LEN (LTRIM(' 学院'))
(2)去右侧rtrim(字符串)
select LEN (RTRIM (' 学院'))
(3)去左右侧 rtrim(ltrim(字符串))
select LTRIM(rtrim (' 学院'))
(1)取字符串左侧n个字符left(字符串,n)
select LEFT ('我喜欢你',4)
select * from Student where LEFT (StuName ,1)='王'
(2)取字符串左侧n个字符:left(字符串,n)
select right ('我喜欢你',4)
select * from Student where right(StuName ,1)='丽
(3)取字符串任意字符串:substring (字符串n,m)
select substring ('我喜欢你',3,2)
select * from Student where substring (StuName ,1,1)='王'
select * from Student where substring (StuName ,2,1)= '丽’
(1)大写—小写
SELECT LOWER ('ABCDEF')
(2)小写—大写
SELECT UPPER ('abcdef')
(3)大写转小写
update Student set Pwd =LOWER (Pwd )
(4)小写转大写
update Student set Pwd =UPPER (Pwd )
Replace(原串,被替换子串,替换子串)
select REPLACE ('我喜欢你','校','院')
update Student set StuName =replace (StuName ,'丽','莉')
select '我'+'喜欢'+'你'
update Student set StuName =REPLACE (StuName ,'中国','')
update Student set StuName ='中国'+StuName
select * from Student
去掉 :update Student set StuName =replace (StuName ,'中国','')
select * from Student
select GETDATE ()
结果是字符串。
select year ('2018-5-3')
系统的年份:select year (GETDATE ())
select month ('2018-5-3')
系统的月份:select month(GETDATE ())
select day ('2018-5-3')
系统的日期:select day(GETDATE ())
(1)年
select GETDATE ()
select DATEPART (YY,GETDATE ())
(2)月
select GETDATE ()
select DATEPART (mm,GETDATE ())
(3) 日
select GETDATE ()
select DATEPART (dd,GETDATE ())
(4) 时
select GETDATE ()
select DATEPART (hh,GETDATE ())
(1)年之差:datediff (yy,日期,日期)
select DATEDIFF (yy ,'1998-08-08','2018-5-4')
(2)月之差:datediff (mm, 日期,日期)
select DATEDIFF (mm,'1998-08-08','2018-5-4')
(3)日之差:datediff (dd, 日期,日期)
select DATEDIFF (dd ,'1998-08-08','2018-5-4')
注:year\month\day\datediff 结果是“整数”
(1)年:select DATEADD (YY,10,'2018-05-04')
(2)月:select DATEADD (mm,10,'2018-05-04')
(3)日:select DATEADD (dd,10,'2018-05-04')
(4)时:select DATEADD (hh,10,'2018-05-04')
select CAST ('01234' as int )
整型转成字符串select CAST (01234 as CHAR )
字符串转成日期select CAST ('2001-2-1' as date)
日期转成字符串select CAST (GETDATE() as CHAR )
功能与cast相同,但格式写法不同