数据库:对数据进行持久化操作
数据库存储数据的结构
Table(表格):用于存储数据的结构
Column(列):数据的属性(特点)
Row(行):具体对应数据内容
主键(primary key):唯一标示一行数据
外键(Foreign key):多张表之间的关系
数据库分类
关系型数据库(RDB Relationship DataBase)
MYSQL | SQLServer | postgre
对象型数据库(Object DataBase 对象)
NOSQL(not only sql)
数据库查询语句
全表查询
1、select * from 表名
2、select employee_id,frist_name,last_name,email…
from 表名
注意:* 进行又有列的查询,运行效率偏低。可读性偏低
查询特定内容
select 列名1,列名2…
from 表名
对查询内容进行运算(±*/)
select last_name,first_name,salary*12
from employees;列起别名 alias
select 列名 [as] 别名,列名 [as] 别名
from employees;
注意as关键字可以省略多列内容的连接
||运算符可以完成2个列或者多个列的内容拼接
select first_name||last_name as name , salary
from employees;条件查询(where查询)
比较查询 > < = != >= <=
逻辑运算 and or not
特殊谓词 in not in
between … and 在一个范围 或者 区间中 (闭区间)
查询某一些列的内容为null 不能应用 = null 判断is null is not null
模糊查询
like ‘s%’ like‘s_’
%代表0~n个字符,_代表多个字符
排序子句
order by
默认升序asc 降序desc
order by语句必须写在sql语句最后
函数
内置函数
sysdate获取当前时间
to_char():把内容转成字符串
to_date(‘2019-01-21’,‘yyyy’): 把字符串转成时间类型
组函数
max()最大值、 min()最小值、avg()平均值、sum()和、count()条数(统计非null)
分组
group by
1、只有出现在group by中的列名,才可以书写在select字句中。
2、如果列名出现在组函数中,也可以书写在select字句中。
3、普通的内置函数,如果应用在了group by子句中,可以书写在select字句中。
having判断
在分组之后进行判断
having的使用依据: 如果你的条件判断中,涉及到应用组函数的条件判断,则需要使用having,其他条件判断 需使用 where
子查询
where子查询
单值子查询
select * from 表名
where 列名 = (select…)
多值子查询
select * from 表名
where 列名 in(select…)
from子查询
select * from (select…)
伪列
特殊列:不需要程序员手工创建的列,oracle自动创建。
不主动发起查询,看不到伪列的数据内容。
rowid
rownum
rownum和*出现表需要起别名
多表操作
内连接 inner join
左外链接 left outer join
右外链接 right outer join
创建表
基本语法
create table 表名(
字段1数据类型 约束,
字段2数据类型 约束,
…//最后一个字段没有逗号
);
2.标识符命名规范:针对于表名和字段名
2.1.由数字、字母、_、$、#、组成,数字不能开头。
2.2.不能与关键字重名
2.3.最长不能超过30个字符
3.数据类型
3.1数值类型
1)number:允许存储最长38位(长度)
2)number(6,2) // 值得总长度是6位,其中小数位2位,整数位4位–9999.99
3.2 字符串类型
1)varchar2(n):n是一个整数,指定存储最大的字节(byte)数,n最大为4000,意为存储长度为最大4000byte。
2)char(n):n是一个整数,指定存储最大字节数,n的最大值为2000
Varchar2与char的区别:
Varchar2是可变长字符串
Char:是定长字符串
3.3日期类型
1)date[重点]
2)timestamp:表示时间比较精确,但是不是特别适用
3.4 大数据类型【了解】
1)clob:字符型大对象,最多存储4G、存储文本类型的信息。
2)long:字符型大对象,存储2G,适用于存储文本文档。
3)blob:二进制大对象,最多存储4G,存储视频、音频、图片等信息。
4.约束[了解]–约束指的是按照您的意愿指定字段存储长度、格式。
4.1 主键约束:
关键字:primarykey
作用:主键每一张表只有一个,主键的值不允许为null,并且唯一。
4.2 非空约束
关键字:notnull
作用:字段值不能为null;
4.3 唯一约束
关键字:unique
作用:字段有值则必须唯一,没有值–null,可以重复,
4.4 检查约束
关键字:check(约束的条件)
案例:–mobile varchar2(11) check(length(mobile)=11)
--email varchar2(50) check(email like ‘%@%’)
4.5 外键约束(foreign key)
概念:外键代表本表记录与其他表的关联关系。
外键的特点:外键的值可以为null,有值得时候,值必须来自于其他表的主键。
外键的声明:创建员工表的时候语法–
department_id number(10) references departments(department_id)
SQL
1.DQL–数据查询语言 比如:select
2.DML–数据操纵语言 :向表中添加数据(insert)、修改数据(update)、删除数据(delete).
3.DDL–数据定义语言:create/drop/alter
4.DCL–数据控制语言:grant(授权)、revoke(撤销)。
5.TCL–事务控制语言:commit(提交)、rollback(回滚)。
3.1 DML【重点】
1)insert(向表中添加数据)
a) 所有字段添加数据
语法:insert into 表名 values(值1,值2,值3,…)
insert into t_clazz values(2,‘三年三十班’)b)有选择的添加数据【重点】 语法:insert into 表名(字段1,字段2,..) values(值1,值2,...) insert into t_User(userId,username,age,birthDay,password) values(2,'李小玫',22,to_date('1999-10-10','yyyy-mm-dd'),'123456') c)使用子查询添加 语法:insert into 表名 子查询语句
insert into t_User(userId,username,age) select employee_id,last_name,department_id from employees where employee_id = 100
2) delete
a) 语法:delete from 表名 where 条件
案例:
Delete from t_user where userid=110
注意:使用delete一定要加上where条件,不然会全部删除。3) update
a) 语法:update 表名 set 字段名=值1,字段名2=值2… Where 条件
案例:update t_user set username=‘李蕾’,sex=‘男’ where userid=110;
注意:在执行修改的时候,一定要加上where条件,否则全部被修改,修改其实是先删除再添加。