数据库一些小结

数据库只是一个工具 简写:SSMS 全拼:SQL Server Management Studio
服务器名称: 数据库服务所在的电脑的ip地址 通过".(本台)","lacal(本地)"登陆
点击电脑开始→ 运行→ cmd→ net start  mssqlserver 服务器的启动      net stop  mssqlserver 服务器的停止
.mdf   数据库文件,有且只有一个!(一般复制就复制mdf)
.ldf  表示产生 日志并记录 ,至少有一个!
Create database 数据库名      创建数据库名 注意:不能出现同名数据库 首字母不能为数字
use 数据库名                  使用某个数据库
常用的数据类型 int:整形类型
               varchar(50):字符串类型
               decimal(18,2):小数类型 18:小数点后可以写18位 2:取小数点后俩位
               datetime:时间类型
               image:图片

create table 表名             --创建数据库表名 注意:不能出现同名表          对表进行:添加,修改,删除,查询
(
  列名 数据类型
  列名 数据类型 not null,     --not null列可否为空
  列名 数据类型 primary key identity(1,1)not null,   --设置主键自增长
)
设置主键外键格式
设置主键的列的不能为空 不能重复
create table 表名1
(
  列名 数据类型  ,
  列名1 数据类型 primary key not null,
)
create table 表名2
(
  列名1 数据类型 ,
  foreign key (列名1)
  references 表名1 (列名1 ) ,
  列名 数据类型,
)
go            go可写可不写
insert into 表名 values()    --括号里面的写的一定要跟你创建表时写的一一对应  values值的意思
uptade 表名 set 你要改为的内容 where 条件
delete from 表名 where 条件
truncate table 表名   --去除表中的内容 不删除表

             数据库最重要的就是查询
投影
select * from 表名
select 列1,列2... from 表名
select distinct 列名 from 表名                --去重
筛选
select top 数字 列|* from 表名
(一)等值与不等值
select * from 表名 where 列名=值
select * from 表名 where 列名!=值
select * from 表名 where 列名>值
select * from 表名 where 列名<值
select * from 表名 where 列名>=值
select * from 表名 where 列名<=值

(二)多条件与范围
select * from 表名 where 条件1 and||or 条件2 ...
select * from 表名 where between ... and ...
select * from 表名 where 列 in (值列表)

(三)模糊查询 like % _
select * from 表名 where 列 like ‘%_....‘

排序
select * from 表名 where 条件 order by 列名 ASC||DESC,列名 ASC||DESC

连接查询: 把多个表的列合在一个界面视图查看
第一种方法
 第一步 :生成笛卡尔积
 select*from 表1,表2
 第二步: 对笛卡尔积进行筛选
 select*from 表1,表2 where 表1.相关联列=表2.相关联列
 第三步: 对你所需要的列进行显示
 select 表1.列1,表1.列2,表2.列1...... from 表1,表2 where 表1.相关联列=表2.相关联列  --你所取得列一定要区分是那个表的
第二种方法 --后台运行速度比第一种方法快  建议使用
select *from 表1 join 表2 on 表1.相关联列=表2.相关联列
                 join 表3 on 表2.相关联列=表3.相关联列
 join前 修饰符 默认inner
 left join左链接以左表为主 左表的信息全部显现出来 右表根据左表的需要显现
 right join右链接以右表为主 右表的信息全部显现出来 左表根据右表的需要显现

子查询(嵌套查询)  连接能做的子查询都能做
 必要因素:多个表一定是有相关联列的
至少俩层查询 先查询外层的再查询里层的 里层的查询市委外层的查询提供查询的结果

联合查询: 把多个表的行合在一个界面视图查看 -- 针对多个表的时候  一个表的时候用or就可以了
select 列1,列2 from 表1 where 条件
union
select 列1,列2 from 表2 where 条件

分组查询:group...by...having...
统计函数(聚合函数)
count(), max(), min(), sum(), avg()
count(*)得到所有的行数
count(列)得到该列中所有非null个数。
max(列) 这一列的最大,min(列)这一列的最小
sum(列)这一列的和,avg(列)这一列的平均
select 列名,COUNT(*) from 表名 group by 列名 having 条件
.一旦使用group by分组了,则select和from中间就不能用*,只能包含两类东西一类是:group by 后面的列名,另一类是统计函数
having后面一般跟得是统计函数。它用来对分组后的数据进一步筛选。

对于统计函数生成的列,默认是无列名,可以通过下面的方法指定列名。
select 列名1 ,COUNT(*) as 起的列名1,avg(列名2) 起的列名2 from 表名 group by 列名1

转换函数
print cast (‘123‘as int)+10   --cast先写变量再写类型 字符串转换为整数型
print convert (int,‘123‘)+12       --convert先写类型再写变量    字符串转换为整数型

select YEAR(‘1993-03-09‘)           --取年份
select DATEADD(DAY,1,‘1993-03-09‘)        --加1天
select datediff(day,‘1993-03-09‘,‘2015-04-25‘)--计算你到今天活了多少天
print getdate() --获取当前电脑时间
print isdate(‘2015-04-25‘) --判断时间格式是否正确  正确返回1 否则0
print datename (weekday,‘2015-04-25‘)    --datename返回的是一个字符串类型的值 今天周几
print datepart (weekday,‘2015-04-25‘)    --datepart返回的是一个int类型的值 今天是这周的第几天
select YEAR(getdate())-year(‘1993-03-09‘)as 年龄     --获取你的年龄
select left(‘ASDFGH‘,3)    --从左往右获取固定长度  right反之
select upper(‘AsdFgH‘)     --转换成大写   lower 反之
select LEN(‘iubfbjnboidnslk‘)     --len返回值int类型 返回总长度
print  ltrim(‘     UYH‘)           --去掉左边的空格   rtrim反之
print substring(‘JHHGUUILIUI‘,6,3)    --截取从3个长度从6开始  索引从1开始
print replace(‘2B2B2B2B2B2B‘,‘2B‘,‘HB‘)    --替换字符串2B换成HB
print replicate (‘你好‘,5)             -- 复制你好5次显示
print reverse(‘就是这样子‘)        --反转
时间: 2024-08-27 03:30:21

数据库一些小结的相关文章

关系型数据库知识小结

一.基础术语 DML(data manipulation language): 如SELECT.UPDATE.INSERT.DELETE,主要用来对数据库里的数据进行操作的语言 DDL(data definition language): 主要的命令有CREATE.ALTER.DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,大多在建立表时使用. DCL(Data Control Language):数据库控制功能.是用来设置或更改数据库用

本地通过Eclipse链接Hadoop操作Mysql数据库问题小结

前一段时间,在上一篇博文中描述了自己抽时间在构建的完全分布式Hadoop环境过程中遇到的一些问题以及构建成功后,通过Eclipse操作HDFS的时候遇到的一些问题,最近又想进一步学习学习Hadoop操作Mysql数据库的一些知识,在这里网上存在很多分歧,很多人可能会笑话,用那么“笨重”的Hadoop来操作数据库,脑子有问题吧,Hadoop的HDFS优势在于处理分布式文件系统,这种说法没有任何错误,数据库的操作讲究“安全.轻便.快捷”,用Hadoop操作完全是不符合常理啊,那为啥还要学习这个东西呢

SQLite数据库学习小结(2)

3. SQLite的Frameworks层实现 3.1 Frameworks层架构 Android系统方便应用使用,在Frameworks层中封装了一套Content框架,之所以叫Content框架而不叫数据库框架之类的,是因为这里Content不一定是来自数据库的内容,也可以是来自其他数据源的内容,开发人员只需要知道如何使用ContentResovler和ContentProvider就可以在应用进程之间共享数据了. 这里我们只讨论数据源是数据库的ContentProvider,开发人员需要实

利用bak文件恢复数据库问题小结

RESTORE FILELISTONLY FROM DISK = 'E:\bbs8.1\Dvbbs8.1.0_SQL\Data\sq_ebendegfzds_bkp_1.bak' go 以上文字列出所要恢复的.bak文件的逻辑名(logicalName)本例中.mdf和.ldf的逻辑名分别为"sq_ebende_data"和"sq_ebende_log",利用逻辑名来对数据库进行恢复 的语句为: restore database 数据库名 from disk='备份

SQLite数据库学习小结(1)

1. SQlite概述 SQLite是一款轻量.快速.跨平台的嵌入式数据库,是遵守ACID(注:ACID指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability))的关系型数据库管理系统,它包含在一个相对小的C库中. SQLite 的设计目标是简单,从这种意义上说,SQLite 和其他很多现代的 SQL 数据库都不相同.SQLite 力求简单,即使这导致了它的某些特征偶尔执行效率比较

数据库存储过程小结

存储过程也可以看成是函数的一种,而且存储过程中的过程如果放到了开发系统的D层的时候执行效果也是相同的.存储过程是存储在数据库中的一个程序块,里面包含了自己定义的一段程序来实现相应的功能,比如要选择数据库的表里面的记录,就可以使用下面的存储过程的框架: <span style="font-size:18px;">CREATE PROCEDURE <存储过程的姓名> --参数的定义 <@Param1, sysname, @p1> <Datatype

Java数据库访问小结

1.JDBC访问方法 DBHelper类访问数据库,Dao类写数据访问,View类进行应用,初学实例图书管理系统. package util; import java.sql.Connection; import java.sql.DriverManager; public class DBHelper { private static Connection conn; private static final String DBurl="jdbc:mysql://localhost:3306/

mysql数据库优化小结

一.常见数据库的优化操作 1.表的设计要符合三范式. 2.添加适当的索引,索引对查询速度影响很大,必须添加索引.主键索引,唯一索引,普通索引,全文索引 3.添加适当存储过程,触发器,事务等. 4.读写分离(主从数据库) 5.对sql语句的一些优化,(查询执行速度比较慢的sql语句) 6.分表分区 分表:把一张大表分成多张表.分区:把一张表里面的分配到不同的区域存储, 7.对mysql服务器硬件的升级操作. 二.适时提高效率 第一范式 原子性:表里面的字段不能再分割,只要是关系型数据库,就天然的自

Oracle数据库学习小结(一)

今天要跟大家来聊一聊俺在使用Oracle数据库的这段时间里面学到的一些知识. 俺最近出来工作了,来到的公司是使用的Oracle数据库,之前一直使用的是SQL的数据库,在性质上二者前者是收费的,后者是开源的:在使用上主要还是靠自己探索,下面说说俺的一些收获.在前段时间俺一直在鼓捣组长分下来的一个任务,定时同步数据的一个小程序,俺的Oracle之旅也是从这里才算是正式开始的. 近期的学习中俺了解到Oracle数据库本身是自带三个默认用户的:sys(网络管理员).system(本地普通管理员).sco