SQL01

SQL-day01

安装软件:

Oracle11g--数据库

PLSQL Developer10 -- 操作数据库的工具

 

数据库有本地,也有线上或者服务器上的.

通过ip连接其他的数据库.`

查看IP:

  1. window+R 开打运行窗口
  2. 输入cmd,出现命令窗口
  3. 输入:ipconfig , 查看IPV4 本地ip
  4. Ping + 别人的IP 有连接说明IP可用.

 

Oracle两个服务:

 

PL/SQL 工具设置字体:Tools菜单-preferences-fonts

PL/SQL 创建sql文件:files-new-sql window

 

 

数据库

分类:关系型,非关系型(radius,hbase);

 

了解市面上常用的数据,以及类型:

WEB项目运用的是关系型数据库.

 

小型开源数据库:

Mysql(oracle)  sqlserver(微软)

中型数据库:

Sybase

大型数据库:

Oracle DB2(IBM)

 

关于数据库:

1 数据库是干嘛?

保存数据,内容.

2 用户操作记录.

3 数据是用来存储和操作的.

4 数据是企业的核心竞争力之一.

腾讯,阿里,百度,京东,三大运营商.

 

使用数据:

  1. 数据库oracle 11G
  2. 操作工具:PLSQL 10.0
  3. Datebase:ip+连接的数据库名:xe
    1. 注意:其他工具可能叫sid:数据库名的唯一标识符.
    2. PLSQL:Datebase 127.0.0.1/XE  ip/sid数据库名 ;
    3. Oracle端口号:1521
    4. Oracle访问端口号默认是8080,可能会与服务器有冲突.
  4. 数据库是怎么存储数据?
    1. 一个数据库中很多表; 表相当于Java中的类.
    2. 表中有很多字段,字段相当于Java中类中的属性.
    3. 数据存储在表的字段中.
    4. 表中有很多条记录.记录相当于Java中的对象.
    5. 比如:模拟数据库中的表,如下

字段A

字段B

字段C

...

数据

数据

数据

数据...

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

比如:学生表(学号,姓名,年龄,性别,班级...)

学号

姓名

年龄

班级

001

张学友

38

计算机1班

002

刘德华

45

软件2班

 

 

 

 

 

  1. 数据库数据也是有类型

数据类型声明的语法: 类型(长度)

    1. 数字类 number(长度) 数字类型 -10^38 到10^38
      • 整数:number(10) 10位的整数
      • 小数:number(10,2) 10位小数,末尾有2位小数.
      • 也有int和float等类型,不常用,不灵活.
    2. 字符类
      • Char 字符,固定长度 最大2000个字符.查询速度快,浪费一定的空间,适用查询的数据使用.
      • Varchar2(oracle自己独有的类型) 动态长度,最大是4000个字符,随着数据进行变化长度,节省空间;
      • 比如 char(10),存储了字符’小明’,后八位都是空格补全.
      • 比如varchar2(10),存储了字符’小明’,实际长度只有2个.
    3. 日期 date (年月日 时分秒)
      • 插入date类型的数据 :

to_date(‘2018-8-20 14:20:10’

,’yyyy-mm-dd HH24:MI:SS’);

to_date(具体时间,时间的格式);

      • 取出date类型的数据:

to_char(date字段,’yyyy-mm-dd HH24:MI:SS’)

to_char(date的字段,时间格式);

    1. 特殊
      • 字符型大对象

Clob(character large object),最大存储4G字符.

      • 多媒体类型

Blob 二进制数据,存放 图片,声音,视频数据.

一般在真实姓名中不会直接存储多媒体,一般存储多媒体的路径.除非是从安全需求考虑才会存储到数据库中.

操作数据库的语言:SQL;

SQL (结构化查询语言),是一种数据库查询和程序设计的编程语言,用于存取数据,查询,更新,和管理关系型数据库系统.

 

表: 人 ( 编号, 名字 ,网名,地址,具体城市 )

编号

名字

网名

地址

城市

 

 

 

 

 

 

  • 建表
    1. SQL语句建表

Create table 表名(类型 字段名,类型 字段名);

取名规则:

  1. 只能使用A-Z,a-z,0-9,$,#等创建名字.
  2. 不能以数字或oracle关键字开头.
  3. 长度不能超过30个字符.

Eg:

-- :sql注释

-- 创建表sql

create table person_1807(

id number(10),    --字段与字段之间用逗号分隔

name varchar2(20),

nickName varchar2(20),

address varchar2(100),

city varchar2(50) --字段结尾不能写逗号

); --一条sql语句结束通过分号结尾.

 

    1. sql插入语句
  1. 指定插入对应字段.

insert into 表名(插入的对应字段1,字段2...)

Values(被添加的数据1,数据2);

  1. 不指定字段

insert into 表名 Values(被添加的数据1,数据2);

 

Eg:

--A.指定插入对应字段.

--insert into 表名(插入的对应字段1,字段2...)

--Values(被添加的数据1,数据2);

insert into 

person_1807(id,nickName,name,city)

values(1,'我是一只花','张晓明','江西南昌');

--注意:字段的顺序是可颠倒

 

--B.不指定字段

--insert into 表名 Values(被添加的数据1,数据2);

insert into person_1807

values(2,'李帅','秋风',

'南昌县马山村','江西南昌');

--注意:没有足够的值.

--数据库有事务管理

--事务管理:

--执行sql的过程中,出现了错误,

--事情回滚到sql执行之前.

--执行sql成功,并且提交,事情才是正真成功.

--sql执行,提交动作和回滚动作.

commit; --提交,提交完成事务才算完成.

 

    1. 查询sql

  A.查询所有的表中的字段.不推荐使用,速度慢.

select * from 表名 ;

--查询

select * from person_1807;

B.指定表中的字段查询.

select 字段名,字段名 from 表名 ;

查询的关键字:

Distinct:唯一数据

Where:条件子查询

And:条件并列

Or:条件或者

Order by 字段 asc 升序排序,desc降序排序.

对数字和字符都是按照unicode排序.

Eg:

--添加一条重复的数据.

insert into person_1807

values(3,'李帅','秋风',

'南昌县马山村','江西南昌');

commit;

 

--distinct:唯一数据.

select distinct name,nickname from person_1807;

 

--where:子查询,通过条件判断查询.

select * from person_1807

where id = 1;

--and:条件并列

select * from person_1807

where name='李帅' and id =2;

--or:条件或者

select * from person_1807

where id=1 or id =2;

--order by : 排序 默认升序asc

select * from person_1807

order by id asc; --升序排

 

select * from person_1807

order by id ; --升序排

 

select * from person_1807

order by id desc; --降序排

 

--对多个字段排序

select * from person_1807

order by name asc,id desc;

--排序的优先级:前面的字段优先级更高

--字符字母的排序:底层排序按照unicode码;

insert into person_1807

values(4,'a李帅','秋风',

'南昌县马山村','江西南昌');

insert into person_1807

values(5,'b李帅','秋风',

'南昌县马山村','江西南昌');

commit;

 

--同时排序order by与子查询where一起使用

--select sql 语句基本语法顺序:

select 字段1,字段2...

[into 其他表] -- 可写,添加到其他表中.

form 来源表名 

[where 条件1 and|or 条件...] --条件查询

[group by 分组字段]   --分组

[having 针对分组的条件 ]--分组条件

[order by 字段 asc|desc]--排序

 

--同时运用很多的关键字,按照语法

select * from person_1807

where  nickname = '秋风'

order by id desc;

    1. 更新数据sql

Update 语法:

Update 表名 set 更新的字段 = 新的数据

Where 指定更新条件 = 条件的值.

注意:不加where 会更新此字段的所有数据.

--更新数据

update person_1807 

       set city = '杭州' , address = '紫阳大道'

where id = 1;

commit;

 

select * from person_1807;

update person_1807 set address = '青山湖彭家桥';

rollback;--回滚

修改字段名

Alter :修改字段名

Alter 语法:

Alter table 表名 rename column 字段名 to 新名字.

EG:

--修改字段名(列)

alter table person_1807 

rename column city to citys;

修改字段长度

Alter table 表名 modify 字段名 数据类型(长度);

--修改字段的长度

alter table person_1807 

modify citys varchar2(250);

--修改字段的类型

alter table person_1807 

modify id int;

--修改表名

rename person_1807 to person_180702;

select * from person_180702;

    1. 删除

删除记录:delete from 表名 where 条件.

注意:与update一致,无where会删除所有记录.

Eg:

--删除记录

delete from  person_180702

where id = 3;

delete  person_180702;

rollback;

删除字段(列):

Alter table 表名 drop column 字段;

删除表:

Drop table 表名;

Eg:

--删除字段

alter table person_180702 

drop column citys ;

--删除表

drop table person_180702;

    1. 日期类型数据的插入和取出

插入:to_date(时间,格式);

取出:to_char(日期字段,格式);

--创建表

create table date_table(

id number,

name varchar2(20),

birth date

);

--查询

select * from date_table;

--插入记录

insert into date_table(id,name,birth)

values(1,'小明',

to_date('2018-08-20 18:8:8',

'yyyy-mm-dd HH24:mi:ss')

);

--取出时间

select to_char(birth,'yyyy-mm-dd HH24:mi:ss')

from date_table;

 

-- sysdate:系统时间

select sysdate from dual;

-- dual:系统提供的虚表,只做功能测试.

select * from dual;

 

 

 

 

 

 

你可能感兴趣的:(数据库基础)