云南建设网站,网站建设公司现在还挣钱吗,wordpress 计划任务,安卓软件开发培训机构下面是一些总结#xff0c;如果执行时发现错误#xff0c;可以查看错误消息进行解决#xff0c;也可上网查资料 数据库的组成#xff1a; 主数据文件#xff1a;有且只有一个#xff0c;扩展名为.mdf。 次数据文件#xff1a;可以没有#xff0c;也可以有任意个。扩展名… 下面是一些总结如果执行时发现错误可以查看错误消息进行解决也可上网查资料 数据库的组成 主数据文件有且只有一个扩展名为.mdf。 次数据文件可以没有也可以有任意个。扩展名为.ndf。 日志文件: 至少有一个扩展名为.ldf。 数据库的相关操作 1.创建 请看代码例子 create database testone --创建数据库名为testone注意数据库名、数据文件的逻辑名、数据文件的物理名可以各不相同。写的时候最好这样
on
primary( --申明主数据文件nametestone, --主数据文件逻辑名filenamed:\sql server shujuku\testone.mdf,--主数据文件物理名即在硬盘的位置size10MB, --初始大小maxsizeunlimited, --最大值unlimited表示不限制大小filegrowth1MB --自动增长
)
log on( --申明日志文件nametestone_log, --日志文件逻辑名filenamed:\sql server shujuku\testone_log.ldf,--日志文件物理名size1MB,maxsizeunlimited,filegrowth10%
)
go 2.查看数据库信息 请看代码例子 exec sp_helpdb 测试 --可以查看数据库数据文件信息 3.打开 请看代码例子 use testone 4.修改(右击数据库点击属性也能操作) 请看代码例子 alter database testone --alter,表示改变的意思modify表示修改
modify name测试alter database 测试
add file(name测试_log02,filenamed:\sql server shujuku\测试_log02.ldf --即使该文件不存在数据库会自动生成的
)alter database 测试
remove file 测试_log2 5.删除 请看代码例子 drop database li sql sever中的数据类型 常用的数据类型有 int java与之对应的int 类型。 float java与之对应的float类型。 char 一个字符占一个字节空间不足斩断尾部空间多余空格填充。java与之对应的String类型。 varchar 一个字符占一个字节空间不足斩断尾部空间多余不用空格填充。java与之对应的String类型。 nchar 一个字符占两个字节空间不足斩断尾部空间多余空格填充。java与之对应的String类型。 nvarchar 一个字符占两个字节空间不足斩断尾部空间多余不用空格填充。java与之对应的String类型。 记忆方法var 表示变的意思就是空间多余不用空格填充有n 表示一个字符占两个字节。 注意一个字母相当于一个字符而一个汉字可以理解为两个字符也就是说char(2)只能放下一个汉字。 datetime java与之对应的可以是java.sql.Date,也可以是string类型但是要以日期格式。 表的相关操作 1.表的创建 语法基本格式 create table 表名 ( 列名 数据类型[(长度)] [null |not null] [identity(初始值,步长)] [约束], ........ ) 列名书写习惯作为主键的应该写在最前头如果不在最前头或是组合主键列名为列名_pk。作为外键或是组合外键列名为列名_fk。 没写not null 默认表示nullidentity表示自增长不用插入数值。 约束 主键约束[constraint 约束名] primary key 外键约束[constraint 约束名] foreign key references 参照表(参照列)[on delete cascade | on update cascade] 唯一键约束[constraint 约束名] unique(列名) 检查约束[constraint 约束名] check(检查表达式) 默认值约束[constraint 约束名] default 默认值 constraint 表示约束的意思。references表示参考的意思。cascade表示串联的意思[on delete cascade | on update cascade]表示级联操作。 加上constraint 约束名是便于约束之间的区别便于以后的删除。注意约束名是相对于数据库而非表也就是说一个数据库不可能有同样的约束名。 约束名命名规范主键pk外键fk唯一键uq检查ck默认df。例如表名成绩有列名学号课程号 如果让学号做主键那么命名为pk_cj_xh,如果让学号和课程号组合主键那么命名为pk_cj_xh_kch。 如果这样有命名冲突查看错误消息进行合理的编号如pk_cj01_xh01。 如果是组合主键格式为[constraint 约束名] primary key(列名1[,...])。 如果是组合外键格式为[constraint 约束名] foreign key(列名1[,...]) references 参照表(参照列1[,...])[on delete cascade | on update cascade]。前提是参照表要有与之对应的组合键。 如果是组合唯一键格式为:[constraint 约束名] unique(列名1[,...])。 请看代码例子 use 测试
create table xs(学号 char(10) not null primary key,姓名 varchar(20) not null,成绩 smallint not null
) 2.查看表的信息 请看代码例子 exec sp_help xs --可以查看表中列的属性和约束等信息 3.修改表 a.修改表名和列名请看代码例子 exec sp_rename cj,成绩表 --修改表名 exec sp_rename 成绩表.学号,xh --修改表中的列名 b.添加列、修改列的属性、删除列(一个alter table 命令一次只能对表进行一项修改操作)请看代码例子 如果你想改变字段的位置可以通过表的设计进行操作 alter table cj
add 年龄 int not null --增加列alter table cj alter column 年龄 int null --修改列的属性,注意只能修改字段的数据类型和能否为nullidentity(初始值,步长)约束都不能操作 --但添加列时候可以操作
alter table cj
drop column 年龄 --删除列 注意保证该列没有索引和约束 c.添加约束和删除约束(没有修改的删了再添加修改)(一个alter table 命令一次只能对表进行一项修改操作) 添加主键约束 alter table 表名 add [constraint 约束名] primary key(列名1[,...]) 添加外键约束 alter table 表名 add [constraint 约束名] foreign key(列名1[,...]) references 参照表(参照列1[,...])[on delete cascade | on update cascade] 添加唯一键约束 alter table 表名 add [constraint 约束名] unique(列名1[,...]) 添加检查约束 alter table 表名 [with nocheck] --加了这表示对表中现有的数据不检查没加表示会检查。 add [constraint 约束名] check(检查表达式) 添加默认值约束 alter table 表名 add [constraint 约束名] default 默认值 for 列名1[,...] 删除约束 alter table 表名 drop 约束名 4.删除表 drop table 表名 --注意如果其它表的外键引用了该表那么就要先删除其他表中引用该表的外键。 --drop table 命令一次可以删除多个表表名之间用逗号隔开。 添、删、查、改(如果是字符串类型的加上单引号) 添: 1.插入表中所有列的数据 代码例子: insert cj values(小李,100) 2.插入表中指定列的数据 代码例子: insert cj(姓名) values(力王) 3.批量插入 代码例子: insert cj values(小李,100),(小王,99) 改: 代码例子: update cj set 姓名小李 where 成绩99 --没有where字句则所有的姓名都为小李 删: 代码例子: delete cj where 成绩99 --没有where字句则将删除表中所有记录可以用truncate table 表名 命令效率更快。 查: 代码例子: select distinct 姓名 as 名字,成绩 as 分数 into 成绩单 from cj select top 10 * from cj --查询表中前十条记录 select top 10 percent * from cj --查询表前面10%的记录 解释:distinct 表示过滤掉重复的记录姓名 as 名字 表示将字段名姓名 换成别名名字into 成绩单表示生成一个 与cj表结构一样的表如果是#into则表示生成的是与cj表结构一样的临时表表名为成绩单然后将查询的记录插入到该表中。 查询条件中常用的运算符 比较,!或,,,, 设置多重条件andornot 确定范围[not] between...and... 测试空值 :is[not]null 确定集合 Exists子查询至少返回一行时条件为true。 Not Exists子查询不返回任何一行时条件为true。 In与子查询返回结果集中某个值相等。 Not In与子查询返回结果集中任何一个值不相等。 ANY|some比子查询返回结果中的某些值大。 Any|some比子查询返回结果中的某些值小。 ALL比子查询返回结果中的所有值都大。 ALL比子查询返回结果中的所有值都小。 字符匹配用于模糊查询 [not] like 匹配串 1.%表示从0~n个任意字符。 2._表示单个任意字符。 3.[]:表示方括号里列出的任意一个字符。 4.[^]:任意一个没有在方括号里列出的字符。 排序order by 子句ASC(升序)DESC(降序)如select * from cj order by 成绩 asc 注意对于空值若按升序排含空值的元组将最后四暗示。若按降序排空值的元组将最先显示。默认是按升序排列的。 order by 子句中可以指定多个列检索结果首先按第一列进行排序第1列值相同的那些数据行再按照第2列排序 字符汉字数字都可以排序。order by 子句一般放在最后。 分组group by 列名 [having 表达式]子句该子句放在where子句后面。where是对表内记录进行筛选的group by 列名 [having 表达式]子句 表示对筛选的结果进行分组或者用[having 表达式]对组内记录再进一步筛选。 如在xs表中筛选出分数在90分以上分专业统计出男生和女生的平均年龄及人数结果按性别排序。 select 专业,性别,平均年龄avg(datediff(yy,出生时间,getdate())),人数count(*) from xs where 分数90 group by 专业,性别 order by 性别 该语句执行的顺序1.where 分数90 2.group by 专业,性别 3.order by 性别 连接查询(这里只讲两个表之间的连接多表同理) 内连接: select 表名.列名,表名.列名... from 表名1,表名2 where 表名1.列名表名2.列名 或 select 表名.列名,表名.列名...from 表名1 join 表名2 on 表名1.列名表名2.列名 外连接: 左外连接select 表名.列名,表名.列名...from 表名1 left join 表名2 on 表名1.列名表名2.列名 右外连接select 表名.列名,表名.列名...from 表名1 right join 表名2 on 表名1.列名表名2.列名 全外连接select 表名.列名,表名.列名...from 表名1 full join 表名2 on 表名1.列名表名2.列名 子查询: 例子(在xs表中查询和刘鑫在同一专业的所有男同学的信息) select * from xs where 性别男 and 姓名刘鑫 and 专业(select 专业 from xs where 姓名刘鑫) 视图:是基于基表的情况下进行[连接]查询所得到的一张虚表。可以通过视图进行查询数据在没有限制的情况下对视图进行修改数据相对应的基表也会变动同样基表修改数据视图也会发生改变。 创建: create view 视图名 [with encryption] --进行加密那么点击设计和用exec sp_helptext 试图名 就没用了 as --exec sp_helptext 视图名 表示查看视图定义信息 select 语句 [with check option] --如果加了它视图创建好后对视图的insertupdate操作得遵循当初创建视图是select语句where语句中的条件。要是不遵循的话就会出错。如果没加它不用遵循当初创建视图是select语句where语句中的条件 inset 注意点 由于视图只引用表中的部分字段所以通过视图插入数据时只能给视图中引用的字段的赋值。而那些表中并未引用的字段必须知道在没有指定取值的情况下如何填充数据因此视图中未引用的字段必须具备下列条件之一 1. 该字段允许空值,2.该字段有默认值,3,自增长。 查看视图定义信息 exec sp_helptext 视图名 视图的修改跟创建差不多只是用这个名字而已alter view 视图名 [with encryption] as select 语句 [with check option] 视图的删除 drop view 视图名1,视图名2... --一次可以删除多个视图 索引(索引的排序是按照升序排序的) 1.索引的作用加快数据查询加快表的连接、排序和分组工作。 2.建立索引的一般原则是a.对经常用来搜索数据记录的字段建立索引。 b.对表中的主键字段建立索引 c.对表中的外键字段建立索引 d.对查询中用来连接表的字段建立索引 e.对经常用来作为排序基准的字段建立索引 3.索引的分类聚集索引和非聚集索引、唯一索引(索引列中的值具有唯一性)和非唯一索引(索引列中的值不具有唯一性)、单列索引和多列索引(复合索引)(一共有2*2*28种) 解释聚集索引和非聚集索引的区别首先它们都发挥了索引的作用但聚集索引的排序即记录在存储在磁盘的排序(我们在表中看到的记录的顺序其实记录插入的顺序,不是存储顺序)。所以说一个表只能有一个聚集索引但可以有多个非聚集索引。当表建立了主键约束如果表中没创建索引SQL会自动在主键字段建立聚集索引。 索引的创建(先建立聚集索引,再建立非聚集索引) create [unique(唯一)] [clustered(聚集索引) |nonclustered(非聚集索引)] index 索引名 on 表名 (字段名[,...]) 索引的查看exec sp_helpindex 表名 索引的删除drop index 表名.索引名[,...] 注意该命令不能删除由主键约束或唯一键创建的索引这些索引必须通过删除主键约束或唯一键约束由系统自动删除。 触发器(DML触发器) 创建 create trigger 触发器名 on {表名|视图} [with encryption] {for|after|instead of} {[insert][,][update][,][delete]} as 条件判断语句 SQL语句 解释for|after 是同一个意思表示先对表或视图执行添、删、改等操作然后再执行条件判断语句再执行SQL语句。 而instead of 则是先执行条件判断语句再对表或视图执行添、删、改等操作而不用执行SQL语句。 查看触发器的定义信息 exec sp_helptext 触发器名当然加密的不能看到 触发器的修改其实就是用原来的名字换用alter命令就可以了 触发器的删除drop trigger 触发器名 下面来介绍下SQL中常用的函数 聚合函数 avg([distinct]表达式) 求平均值 sum([distinct]表达式) 求和 max([distinct]表达式) 求最大值 min([distinct]表达式) 求最小值 count ([distinct]表达式|*) 求个数 注意点解决count distinct多个字段的方法 Distinct的作用是用于从指定集合中消除重复的元组经常和count搭档工作语法如下 COUNT( { [ ALL | DISTINCT ] expression ] | * } ) 这时可能会碰到如下情况你想统计同时有多列字段重复的数目你可能会立马想到如下方法 select count( distinct col1 , col2 , col3 , .......) from table 但是这样是不允许的因为count是不能统计多个字段的虽然distinct是可行的。 有种比较直接的方法就是把消除重复后在统计查询: select count(*) from (select distinct col1 ,col2 , col3 from table)A 日期时间函数 getdate() 返回服务器的当前系统日期和时间 datediff(日期元素日期1日期2) 返回两个日期间的差值并转换为指定日期元素的形式 year(日期) 返回年份(整数) month(日期) 返回月份(整数) day(日期) 返回日(整数) getutcdate() 返回表示当前UTC时间的日期值 日期元素及其缩写和取值范围 日期元素 缩写 取值 year yy 0~9999 month mm 1~12 day dd 1~31 day of year dy 1~366 week wk 0~52 weekday dw 1~7 hour hh 0~23 minute mi 0~59 转载于:https://www.cnblogs.com/lipengsheng-javaweb/p/4006086.html