标签:字典 第二范式 serve key 初始 列表 sql数据库 时间 double
1.1收集信息
1.2概念设计(E-R图)
1.3详细设计(数据库模型图)
1.4审核数据库(三大范式)
2.1 E-R
矩形:实体
椭圆:属性
菱形:关系
3.1 映射关系
一对一,一对多,多对一,多对多
4.1 三大范式
第一范式:每一列都要保证原子性,分的不能再分了
第二范式:在满足1NF基础上,每一张表只能表述一件事(有主键)
第三范式:在满足2NF基础上 ,确保除主键之外的列都必须和主键有直接的关系,而不是间接地关系
建库:create database myschool;
三种文件格式:主文件.mdf,次要文件 .ndf,日志文件.ldf
create database myschool
--主文件
on [primary]
(
name=‘‘, --逻辑名称
filename=‘。mdf’,-- 文件路径
size=10,--初始大小
maxsize=100 ,--最大大小
filegrowth=10 增长率 不能加百分号
),
--次要文件
(
name=‘‘, --逻辑名称
filename=‘.ndf’,-- 文件路径
size=10,--初始大小
maxsize=100 ,--最大大小
filegrowth=10 增长率 不能加百分号
)
on log
(
name=‘‘, --逻辑名称
filename=‘.ldf’,-- 文件路径
size=10,--初始大小
maxsize=100 ,--最大大小
filegrowth=10 增长率 不能加百分号
)
给数据库添加文件
alter database myschool
add file
--次要文件
(
name=‘‘, --逻辑名称
filename=‘.ndf’,-- 文件路径
size=10,--初始大小
maxsize=100 ,--最大大小
filegrowth=10 增长率 不能加百分号
)
Create table 表名
(
列 数据类型 数据特性(null or not null)
)
自动增长列 identity(1,1)
比如
Create table student
( id int identity(1,1) not null
)
删除表 drop table 表名
删除数据 delete 表名,truncate 表名
Alter table 表名
Add constraint pk_约束名 primary key (列名)
Alter table 表名
Add constraint uq_约束名 unique (列名)
Alter table 表名
Add constraint ck_约束名 check (列名<=100)
Alter table 表名
Add constraint df_约束名 default(‘默认值’) for 列名
Alter table 外键表
Add constraint fk_约束名 foreign key 列名 references 主键表(列名)
Alter table 表名
Drop constraint 约束名
局部变量Declare @变量名 数据类型=值
全部变量 @@error 错误号,@@identity 获取最近一次的值 @@version版本号
set @变量名=值 or(set @变量名=(子查询)) ,一次只能给一个变量赋值
Select @变量名 =值 ,select @变量名=字段,@变量名=字段 from 表,可以给多个变量赋值;当返回多个数据的时候取最后一个
Convert (数据类型,变量)
特殊的可以对datetime 类型的字段转换 比如convert(字段,102)
Cast(变量名 as 数据类型)
If (条件)
Begin
---sql
End
Else
Begin
--sql
end
While(条件)
Begin
End
Case when 条件 then 结果
When 条件 then 结果
Else
End
批处理,把多条sql打个包一起发送服务器执行,执行速度加快
select * from ( 子查询 )别名
Select * from 表名 where 列名 in(子查询)
Select * from 表名 where 列名 in(‘’,’’,’’)
Select * from 表名 where 列名 not in(子查询)
Select * from 表名 where 列名 not in(‘’,’’,’’)
If exists(sql查询) 判断是否能查出数据
可以改写in 和not in
执行的效率比in和not 快
Select * from student wehre exists (select * from grade where grade.gradeid=student.gradeid)
Create proc 存储过程名称
As
Sql 语句
Go
Creta proc 存储过程名称
@变量名 数据类型
As
Sql 语句
Go
Creta proc 存储过程名称
@变量名 数据类型=’默认值’
As
Sql 语句
Go
Create proc 存储过程名
@输入变量 数据类型,
@输出变量 数据类型 output
As
Sql语句
Go
Exec 存储过程名称
Execute 存储过程名称
经验:当遇到go的时候 exec 可以省略
开启事务 begin transaction
提交事务 commit transaction
事务回滚 rollback transaction
唯一索引:当给一个列建唯一约束的时候,系统自动创建一个唯一索引(不能出现同一列重复的两行)
主键索引:特殊的唯一索引,当给列添加一个主键的时候,系统自动创建一个聚集的索引
聚集索引:一张表只能有一个聚集索引(类似与字典的拼音查找)
非聚集索引:一张表可以有多个非聚集索引(类似与自动偏旁部首)
语法
Create [unique|nonclustered|clustered]
Index ix_索引名 on tbale(列,列) with
Fillfactor=80 (没有百分号)
删除索引
Drop index table.索引名
运行速度快
使用成本低
可移植性强
适用用户广
社区版 免费,开源。适合普通用户
企业版 收费,不可自由下载 功能和服务更完善 适合对功能和安全要求高的企业用户
端口号:3306
默认字符集:utf8
utf8:一种Unicode编码,解决国际上字符不统一的多字节编码,通用性强
将bin目录写入环境变量
root密码设置
Bin ,include,lib,share
my.ini:记录MySQL配置信息,可修改配置内容,如端口号,字符集
Information_schema
Performance_schema
Mysql
Test
Myschool
Bank
Hospitaldb
create database myschool;
use 数据库名称
drop database 数据库名称
CREATE TABLE [IF NOT EXISTS] 表名(字段 数据类型 特征)
非空约束 NOT NULL 字段不允许为空
默认约束 DEFAULT 赋予某字段默认值
唯一约束 UNIQUE KEY(UK) 设置字段的值是唯一的允许为空,但只能有一个空值
主键约束 PRIMARY KEY(PK) 设置该字段为表的主键可唯一标识该表记录
外键约束 FOREIGN KEY(FK) 用于在两表之间建立关系,需要指定引用主表的哪一字段
自动增长 AUTO_INCREMENT 设置该列为自增字段 默认每条自增1通常用于设置主键
主键 PRIMARY KEY
注释 COMMENT ‘编号’ COMMENT=‘测试表’
设置字符集编码 CHARSET = 字符集名
查看表是否存在 USE myschool;SHOW tables;
查看表定义 DESCRIBE 表名;或DESC 表名;
删除表 DROP TABLE [IF EXISTS] 表名;
DML(数据操作语言)
用来操作数据库中所包含的数据(update,delete,insert )
DDL(数据定义语言)
用于创建和删除数据库对象等操作(drop ,alter,create)
DQL(数据查询语言)
用来对数据库中的数据进行查询(select)
DCL(数据控制语言)
用来控制数据库组件的存取许可、存取权限等(grant)
TINYINT非常小的数据 有符值: -27 ~ 27-1 无符号值:0 ~ 28-1 1字节
SMALLINT 较小的数据 有符值: -215 ~ 215-1 无符号值: 0 ~ 216-1 2字节
MEDIUMINT 中等大小的数据 有符值: -223 ~ 223-1 无符号值: 0 ~ 224-1 3字节
INT 标准整数 有符值: -231 ~ 231-1 无符号值:0 ~ 232-1 4字节
BIGINT 较大的整数 有符值: -263 ~263-1 无符号值:0 ~264-1 8字节
FLOAT 单精度浮点数 ±1.1754351e -38 4字节
DOUBLE 双精度浮点数 ±2.2250738585072014e -308 8字节
DECIMAL 字符串形式的浮点数 Decimal(M,D) M+2个字节
UNSIGNED属性 标识为无符号数
ZEROFILL属性 宽度(位数)不足以0填充
CHAR[(M)] 定长字符串 M字节
VARCHAR[(M)] 可变字符串 可变长度
TINYTEXT 微型文本串 0~28–1字节
TEXT 文本串 0~216–1字节
DATE YYYY-MM-DD,日期格式 1000-01-01~ 9999-12-31
DATETIME YY-MM-DD hh:mm:ss: 1000-01-01 00:00:00 ~9999-12-31 23:59:59
TIME hh:mm:ss: -835:59:59 ~ 838:59:59
TIMESTAMP YYYYMMDDHHMMSS 1970年某时刻~2038年某时刻,精度为1秒
YEAR YYYY格式的年份 1901~2155
MyISAM、InnoDB 、Memory、CSV等9种
使用MyISAM: 不需事务,空间小,以查询访问为主
使用InnoDB: 多删除、更新操作,安全性高,事务处理及并发控制
修改存储引擎 InnoDB
位置
MyISAM类型表文件:*.frm:表结构定义文件 *.MYD:数据文件 *.MYI:索引文件
InnoDB类型表文件:*.frm:表结构定义文件 ibdata1文件!!!
修改表名:ALTER TABLE 旧表名 RENAME [TO] 新表名;
添加字段:ALTER TABLE 表名 ADD 字段名 数据类型 [属性];
修改字段:ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];
删除字段:ALTER TABLE 表名 DROP 字段名;
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段)REFERENCES 关联表名(关联字段);
插入单条数据记录
INSERT INTO 表名 [(字段名列表)] VALUES (值列表);
插入多条数据记录
INSERT INTO 新表(字段名列表) VALUES(值列表1),(值列表2),……,(值列表n);
将查询结果插入新表
INSERT INTO 新表(字段1,字段2……) SELECT字段1,字段2……FROM 原表;
SELECT字段1,字段2…… INTO 新表 FROM 原表;
更新数据记录
UPDATE表名 SET字段1=值1,字段2=值2,...,字段n=值n[WHERE条件];
删除数据记录
DELETE FROM 表名 [WHERE条件]; TRUNCATE TABLE 表名;
TRUNCATE语句删除后将重置自增列,表结构及其字段、约束、索引保持不变,执行速度比DELETE语句快
SELECT <字段名列表>
[WHERE <查询条件>]
[GROUP BY <分组的字段名>]
[HAVING <条件>]
[ORDER BY <排序的字段名> [ASC 或 DESC]]
LIMIT子句
[LIMIT [位置偏移量, ]行数];
AVG():返回某字段的平均值
COUNT():返回某字段的行数
MAX():返回某字段的最大值
MIN():返回某字段的最小值
SUM():返回某字段的和
CONCAT(str1,str1...strn) 字符串连接 SELECT CONCAT(‘My‘,‘S‘,‘QL‘);返回:MySQL
INSERT(str,pos,len,newstr) 字符串替换SELECT INSERT(‘这是SQL Server数据库‘, 3,10,‘MySQL‘);返回:这是MySQL数据库
LOWER(str)将字符串转为小写SELECT LOWER(‘MySQL‘);返回:mysql
UPPER(str)将字符串转为大写SELECT UPPER(‘MySQL‘);返回:MYSQL
SUBSTRING(str,num,len)字符串截取SELECT SUBSTRING( ‘JavaMySQLOracle‘,5,5);MySQL
CURDATE() 获取当前日期 SELECT CURDATE();返回:2016-08-08
CURTIME() 获取当前时间 SELECT CURTIME();返回:19:19:26
NOW() 获取当前日期和时间 SELECT NOW();返回:2016-08-08 19:19:26
WEEK(date) 返回日期date为一年中的第几周 SELECT WEEK(NOW());返回:26
YEAR(date) 返回日期date的年份 SELECT YEAR(NOW());返回:2016
HOUR(time) 返回时间time的小时值 SELECT HOUR(NOW());返回:9
MINUTE(time) 返回时间time的分钟值 SELECT MINUTE(NOW());返回:43
DATEDIFF(date1,date2) 返回日期参数date1和date2之间相隔的天数
ADDDATE(date,n) 计算日期参数date加上n天后的日期 SELECT ADDDATE(NOW(),5);
返回:2016-09-02 09:37:07
CEIL(x) 返回大于或等于数值x的最小整数 SELECT CEIL(2.3)返回:3
FLOOR(x) 返回小于或等于数值x的最大整数 SELECT FLOOR(2.3)返回:2
RAND() 返回0~1间的随机数 SELECT RAND()返回:0.5525468583708134
SELECT … FROM 表1 WHERE 字段1 比较运算符(子查询)
子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询
子查询在WHERE语句中的一般用法
使用mysqldump 命令
在cmd中写命令(如果报错,不支持内部名称-》使用cmd 打开mysqldump.exe的安装目录)
备份个别表
mysqldump -u 用户名 -p密码 数据库名称 表1,表2,表3...>文件路径d:\1.sql (注意:后面不能写“;”号)
备份整个数据库中所有的信息
mysqldump -u 用户名 -p密码 数据库名称>文件路径d:\2.sql
mysql -u 用户名 -p密码 数据库名称<文件路径
(注意:后面的“;”号不能写)
select * from tablename into outfile ‘文件路径地址‘;
load data infile ‘文件路径地址‘ into table 表名称
create tablespace sa
datafile ‘D:\orcldata\sa.dbf‘ size 200M
reuse autoextend on next 1m maxsize unlimited;
--创建用户 此用户的密码是accp 默认表空间是bdqn
create user sa identified by accp default tablespace sa;
grant connect,resource,dba to sa;
alter tablespace bdqn
add datafile ‘D:\orcldata\bdqn2.dbf‘ size 200M
reuse autoextend on next 1m maxsize unlimited;
create table score(id int,
studentname varchar2(50),
classname varchar2(50),
result number(18));
insert into score values(1,‘张三‘,‘一班‘,90);
insert into score values(2,‘李四‘,‘一班‘,80);
insert into score values(3,‘王五‘,‘一班‘,80);
insert into score values(4,‘赵六‘,‘一班‘,60);
insert into score values(5,‘小七‘,‘二班‘,90);
insert into score values(6,‘李连杰‘,‘二班‘,80);
insert into score values(7,‘王菲‘,‘二班‘,70);
insert into score values(8,‘欧阳‘,‘二班‘,70);
select * from score;
--分页
select id,studentname,classname ,result,rownum from score
--第一种排名
select t.*,rownum mc from (select id,studentname,classname ,result from score
order by result desc)t
--第二种排名
select t.*,rank() over(order by t.result desc ) mc from (select id,studentname,classname
,result from score
order by result desc)t
--第三种
select t.*, DENSE_RANK() over(order by t.result desc ) mc from (select id,
studentname,classname ,result from score
order by result desc)t;
--第四种,根据分组字段排名
select t.*,DENSE_RANK() over(partition by classname order by t.result desc )
mc from (select id,studentname,classname ,result from score
order by result desc)t
--累计
select tt.*,sum(tt.result) over(order by mc) from (select t.*,DENSE_RANK()
over(partition by classname order by t.result desc ) mc from
(select id,studentname,classname ,result from score
order by result desc)t)tt;
--累加
select score.*,sum(result) over(order by id) from score order by id;
expdp jhpt/1 dumpfile=hbjy20140923.dmp directory=DATA_PUMP_DIR FULL=Y --DATA_PUMP_DIR 在数据库中查路径,把文件导出到这个文件夹(select * from dba_directories 查看DATA_PUMP_DIR 对应的目录)
impdp jhpt/1 dumpfile=hbjy20140923.dmp directory=DATA_PUMP_DIR FULL=Y
exp jhpt/1@orcl155 file=D:\app\User\admin\orcl\dpdump\jhpt23.dmp log=d:\jhpt20150424.log
也可以加owner=jhpt
imp jhpt/1@orcl155 file=D:\app\User\admin\orcl\dpdump\jhpt23.dmp FULL=Y
imp jhpt/qwer1234@orcl155 file=d:\base_purchaseinfo.bak tables=base_purchaseinfo
本机备份和还原效率最高,但是只限于本机器
远程备份是本地安装Oracle数据库,备份远程数据库的数据到本地
远程还原是,把本地备份的数据还原到远程数据库
还原之前,把用户,表空间,数据文件全部删除,然后重新创建,还原的数据有几个数据文件,需要创建几个数据文件不然还原到一半抛出文件不够错误
/*--删除表空间已经表空间下的文件
drop tablespace jhpt including contents and datafiles;
--删除用户
drop user jhpt cascade;
标签:字典 第二范式 serve key 初始 列表 sql数据库 时间 double
原文地址:https://www.cnblogs.com/wlzhang/p/9151962.html