1.Git和SVN的区别
- git建立分支只是指针移动,是轻量级的。 svn需要拷贝原文件
- git支持分布式管理,SVN不支持分布式。
- git可以修改提交的历史,SVN不能
- 比如一个大文件上传失误了,git可以轻易的删除,SVN不可以,需要管理员的身份。
2.数据库
- Oracle数据库
DB2数据库,是IBM公司的关系型数据库管理系统
Sybase数据库
SQL Server数据库,是微软的产品,运行在Windows NT服务器上
MySQL数据库,是开放源代码的小型关系型数据库管理系统(应用最广泛)
数据库:DB
数据库管理系统:DBMS (管理数据库的软件)
在数据库中,表的横排叫做“记录(行)” 表的列叫做“字段(列)”
关系数据库:描述两个元素间的关联或对应关系
关系数据库的分类:(依据表之间数据的关系来区分)
一对多 一对一 多对多
一个关系数据库由多个数据表组成,数据表是关系数据库的基本存储单位
SQL:结构化查询语言
SQL是在关系数据库上执行数据操作、检索及维护所使用的标准语言,可以用来
查询数据,操纵数据定义数据,控制数据。
SQL的分类:
DDL(数据定义语句):用来操作数据库对象 创建表
数据库对象:表、视图、索引、序列
DML 增删表中的元素
TCL 维护DML的一致性
DQL 用来查询所需要的数据 *
DCL 用来管理数据库
DDL 语句:数据定义语言
用于增删改数据库对象
1. CHAR在数据库中表示 字符串
2. CHAR(20)表示字节,根据字符集来确定 GBK:一个汉字2个字节 UTF-8:一个汉字3个字节
3. SELECT SYSDATE FROM dual //查询当前系统时间
4. //创建表 CREAT E TABLE
CREATE TABLE employee_wangyp(
id NUMBER(4),
name VARCHAR2(20),
gender CHAR(1),
birth DATE,
salary NUMBER(6,2),
job VARCHAR2(30),
deptno NUMBER(2)
)
5. DROP TABLE employee_wangyp //删除表 DROP TABLE
6. DESC myemp_wangyp //查看表结构
7. 字段的默认值
数据库中所有字段无论什么类型,默认值都是NULL,
可以使用 DEFAULT 为字段单独指定默认值。
虽然SQL语句不区分大小写,但是字符串的值是区分大小写的
- NOT NULL约束
当一个字段被设置为NOT NULL约束后,该字段的值不允许为空。 - 修改表名: RENAME TO
RENAME old_name TO new_name - 修改表结构
(1) 添加新的字段
需要注意,添加的字段只能被追加到表的最后一列,不能
在现有字段中间插入一个字段 为myemp_wangyp表添加字段hiredate:
ALTER TABLE myemp_wangyp
ADD(
hiredate DATE //追加一行字段
)
(2) 删除字段
ALTER TABLE myemp_wangyp
DROP(
hiredate
)
(3) 修改现有字段
可以修改字段的类型,长度,添加约束或设定默认值。
若表中已经存在数据,则不要修改字段的类型,长度尽可能只增不减,
否则可能会修改失败。
ALTER TABLE myemp_wangyp
MODIFY(
job VARCHAR2(40) NOT NULL
)
DML语句:数据操作语句
用来增,删,改表中的数据
1. DML语句:数据操作语句
用来增,删,改表中的数据。DML总是伴随事务(TCL)的
2:INSERT语句 INSERT INTO VALUES
用于向表中插入新的记录
INSERT INTO myemp_wangyp(id,name,salary,job)
VALUES(1,’jack’,3000,’CLERK’);
3. 查询表中数据
SELECT * FROM myemp_wangyp; //查询表中的数据
DESC myemp_wangyp //显示表结构
4. 提交
COMMIT ; –提交
5. 插入数据时,可以不指定字段名,若不指定,则是全行插入
INSERT INTO myemp_wangyp
VALUES (2,’rose’,’F’,SYSDATE,3000,’CLERK’,10);
6. 插入日期类型数据时,建议使用函数TO_DATE 该函数可以将一个字符串
按照指定的日期格式转换为Date类型
TO_DATE(‘1992-08-15’,’YYYY-MM-DD’)
7. 如果某字段已经用NOT NULL修饰,则不可以将NULL值插入到该字段上
8. UPDATE语句,修改表中数据
需要注意,修改语句通常要添加WHERE子句,这样可以限定要求改的记录,
若不添加WHERE,则是全表所有记录都进行修改,添加了则只会将满足WHERE
条件的记录进行修改
UPDATE myemp_wangyp –修改表中数据
SET salary=5000,deptno=20 –将salary设置为5000,deptno=20
WHERE gender=’M’ –设置条件
SELECT * FROM myemp_wangyp –查询结果
9. DELETE语句,删除表中数据
需要注意,删除语句通常要添加WHERE语句,这样可以限定要删除的记录,
若不添加WHERE,则是清空表的操作,添加了则只会将满足WHERE条件的记录
进行删除。
DELETE FROM myemp_wangyp
WHERE gender=’M’ –删除的条件
SELECT * FROM myemp_wangyp
DAY 02
DQL语句:查询语句
用于查询表中数据
在数据库中LONG也表示 字符串 可以存储2G
CLOB 可以存储4G,相对LONG来说GLOB用的地方较多
1. DQL语句:查询语句
DQL用于查询表中数据
DQL必须包含的两部分为:SELECT字句和FROM字句
SELECT字句:指定要查询的内容,可以指定表中的具体字段,*号,函数,
或者表达式
FROM字句:指定数据来源的表
SELECT * FROM emp_wangyp –*表示查看所有内容
SELECT ename,job,sal,deptno –按条件查询,以‘,’隔开
FROM emp_wangyp
2. DQL中使用WHERE字句可以添加过滤条件,来检索只符合过滤条件的记录。
–查看20号部门的员工信息
SELECT ename,sal,job,deptno
FROM emp_wangyp
WHERE deptno=20;
字符串函数:
(1)CONCAT(c1,c2) –链接c1和c2
SELECT CONCAT(CONCAT(ename,’:’),sal) –添加‘:’,结果为一行CONCAT (嵌套)
FROM emp_wangyp;
(2)”||”也可以用来链接多个字符串
作用和CONCAT类似,等同于java中的”+”号
SELECT ename||’:’||sal
FROM emp_wangyp;
(3) LENGTH(C) 查看指定字符串的长度
SELECT ename,LENGTH(ename)
FROM emp_wangyp
WHERE deptno=20
(4)UPPRE,LOWER,INITCAP
将指定字符转换为全大写,全小写,以及首字母大写。
INITCAP中的字符串可以用空格隔开,分割为多个单词,
这样每个单词首字母都是大写.
当查询数据不与任何表数据有关时,可以查询伪表:dual
SELECT UPPER(‘helloworld’),
LOWER(‘HELLOWORLD’),
INITCAP(‘HELLO WORLD’)
FROM DUAL
(5) TRIM,LTRIM,RTRIM
去除字符串两边,单独左边,单独右边的指定重复字符串
SELECT TRIM(’s’FROM’ssssliesessss’) –只能指定一个字符,并且将重复的全部去除
FROM dual;
LTRIM,RTRIM在删除字符时,只要左面(右面)的每个字符
是第二个参数字符串中的任意一个字符时就去除
SELECT LTRIM(‘esfsdefsdefsdfliteee’,’efsd’) –最后只剩liteee
FROM dual;
(6) LPAD,RPAD
补位函数
LPAD(c1,n,c2):将c1显示n位长度,若c1不足n位,则
左侧补充若干个c2字符,以达到n位长度,若超过,则从左侧开始
截取c1为n的长度并返回
SELECT LPAD(‘say’,5,’ ′ )–结果为 ′ ) – 结 果 为 $say
FROM dual;
(7) SUBSTR(c,m[,n]) –数据库中的[]表示 可有可无
截取字符串c,从第m个字符开始,连续截取n个字符。
若n不指定,则是截取到字符串末尾,若n超过实际可截取的字符串
个数也是截取到字符串末尾。
数据库中下标都是从1开始的
SELECT SUBSTR(‘thinking in java’,-7,2) –从倒数第7个开始截取2个长度
FROM dual; –in
(8) INSTR(char1,char2[,n,[,m]]);
查找char2在cahr1中的位置。
n:从第几个字符开始检索,不写默认为1
m:查找第几次出现,不写默认为1
SELECT INSTR(‘thinking in java’,’in’,4,2) –in在thinking in java中从第4个开始第2次出现
FROM dual; –返回值为10数值函数
(1) ROUND(n[,m])
对n进行四舍五入,保留小数点后m位,若m不指定则
默认为0,0表示保留到整数位,若m为负数,则是小数点
前十位以上数字。
-1表示保留到十位,-2表示百位
SELECT ROUND(45.65987,3)
FROM dual;
(2) 2.TRUNC(N[,M])
参数与ROUND意义相同,区别在于仅截取数字不做四舍五入
SELECT TRUNC(45.678,2) FROM DUAL; –45.67
SELECT TRUNC(45.678,0) FROM DUAL; –45
SELECT TRUNC(55.678,-1) FROM DUAL; –50
(3)MOD(m,n)
求余数,规则为m除以n. 若n为0,则函数直接返回m
(4) CEIL,FLOOR
向上取整,向下取整
SELECT CEIL(45.789) FROM emp_wangyp –46
SELECT FLOOR(45.789) FROM emp_wangyp –45日期相关关键字
- (1) SYSDATE,SYSTIMESTAMP
他们对应 oracle 内部的函数,返回一个当前系统时间,
不同的在于一个返回DATE类型,另一个返回时间戳类型
SELECT SYSDATE FROM dual; – 结果为 13-9月 -17
SELECT SYSTIMESTAMP FROM dual – 结果为13-9月-17 04.27.24.711000000 上午 +08:00
(2) 日期转换为函数
将一个字符串按照给定的日期格式解析为一个DATE类型数据
SELECT TO_DATE(‘2008-08-08’,’YYYY-MM-DD’) FROM dual
(3) DATE类型数据可以计算:
两个DATE类型之间相减,差为相差的天数。对一个DATE加减一个数,
等于加减了天数。日期之间可以比较大小,越晚的越大。
SELECT SYSDATE-TO_DATE(‘2008-08-08’,’YYYY-MM-DD’) FROM dual
2.TO_CHAR()
可以将日期转换为字符串。TO_CHAR函数实际上可以将其他
类型转换为字符串,常用的是将日期转换为字符串。
- (1) SYSDATE,SYSTIMESTAMP
- 日期格式中的YY,RR的区别
RR,YY都是用2位数字表示年。
他们在使用TO_DATE函数将一个字符串中2位数字的年
解释为实际的年时对世纪的处理方式不同。
YY是根据当前系统所在实际来解释世纪。
RR则根据具体情况判定。 - 日期常用函数:
(1) LAST_DAY(date)
返回给定日期所在月份的月底日期
(2) ADD_MONTHS(date,i)
对给定日期加指定的月,若i为负数则是减去指定的月
(3) MONTHS_BETWEEN(date1,date2)
计算两个日期之间所相差的月份
(4) NEXT_DAY(date,i) –6 表示周五
返回给定日期第二天开始一周之内的指定周几的日期
(5) LEAST,GREATEST
求最小值和最大值,在日期中只用则是求最早的日期和最晚的日期
SELECT LEAST(SYSDATE,TO_DATE(‘1992-09-09’,’YYYY-MM-DD’))
FROM dual;
SELECT GREATEST(SYSDATE,TO_DATE(‘1992-08-08’,’YYYY-MM-DD’))
FROM dual;
(6) EXTRACT
提取指定日期对应时间分量的值
SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual
(7) 过滤条件判断NULL值:
判断NULL要使用 IS NULL 或 IS NOT NULL
(8) NULL的运算:
NULL与字符串链接等于什么都没做
NULL与数字计算,结果还是NULL
(9) 空值函数
NVL(a1,a2)
当a1为NULL时,函数返回值为a2的值
若a1不为NULL,函数返回值为a1自身
所以NVL函数的意义是将NULL值替换为非NULL值
NVL2(a1,a2,a3)
当a1不为NULL时,函数返回a2
当a1为NULL时,函数返回a3
Day 03
1. 字段的别名
SELECT子句中查询的内容若是函数或者表达式,那么在结果集合中对应的该
字段就是这个函数或者表达式,可读性会变得很差,为此可以为这样的字段添加
别名。这样在结果集合中该字段的名字就是这个字段的别名。
2. 别名不区分大小写,若希望区分大小写或者含有空格,那么需要使用双引号将别名括起来。
SELECT ename “name”,sal salary –加上双引号则输入的是什么输出的就是什么
别名 别名
3. AND,OR 可以连接多个条件,但是需要注意的是 AND 的优先级高于
OR。所以可以通过括号提高OR的优先级。
SELECT ename,job,sal FROM emp_wangyp
WHERE sal>1000 AND (job=’CLERK’ OR job=’SALESMAN’)
4. LIKE用于模糊匹配字符串,支持两个通配符:
%:任意个字符,%表示可以出现0到任意次 _:单一的一个字符
SELECT ename,job,sal
FROM emp_wangyp
WHERE ename LIKE ‘_A%’;
5. IN(List) 与NOT IN(List)
判断在列表中或者不在列表中。IN,NOT IN常用在子查寻中。
SELECT ename,job FROM emp_wangyp
WHERE job IN(‘MANAGER’,’CLERK’); –Job为’MANAGER’,’CLERK’的员工
6. BETWEEN…AND…
判断在一个区间范围内
SELECT ename,sal FROM emp_wangyp
WHERE sal BETWEEN 1500 AND 3000; –工资在1500到3000之间
7. ANY(LIST) 和 ALL(LIST)
ANY,ALL是配合>,<=,<,>=使用的
ANY(LIST):大于列表其中之一(大于最小)
ALL(LIST):大于列表所有(大于最大)