学习大数据DAY07 SQL基础语法7和达梦数据库安装

目录

建表语句

数据类型说明

数据类型说明

编码发展

约束

修改表

达梦数据库

使用背景

达梦数据库介绍

安装步骤

达梦和oracle的区别

作业

作业2


SQL基础语法(七)和达梦数据库安装

建表语句

表名命名规则:

必须以字母开头

在30个字母以内

可使用字母数字以及_ $ # 等字符,特殊字符使用””双引号括起来

不能使用已使用的名称

不能使用系统关键字

Create[global temporary] table ****

(列名 数据类型,

列名 数据类型,

列名 数据类型,

…………)

数据类型说明

A.数字类型:

number(l,s):l表示长度,默认1,最长38,s表示精度

number(6,2)

int integer float double

B.字符串类型:

varchar2(l):变长字符串类型,最多个可以存放4000个字符(英文字符),默认长度1

char(l):定长字符串类型,l表示长度 例如:char(8) 存放,这个字符串的长度就是8

long:它可以存放2g的字符串(不建议使用)

string

数据类型说明

C.日期类型:

date:日期类型,可以存放世纪、纪元、年、月、日、时、分、秒

timestamp:时间戳类型,可以存放世纪、纪元、年、月、日、时、分、秒还可以存放秒后9

D.CLOB/BLOB:

CLOB:大文本文件类型,可以存放word,excel等文档

BLOB:二进制文件类型,可以存放视频、音频等

编码发展

ascll-Unicode-gbk-[utf-8]

约束

A.列级约束:紧跟在列的声名后面的约束叫列级约束

B.表级约束:所列声名后面的约束叫表级约束,所有使用alter语句添加的约束基本都是

表级约束。

[ CONSTRAINT <约束名> ] <约束类型>

约束名:约束不指定名称时,系统会给定一个名称。

1.非空约束

列名 类型 not null

2.Default默认值

默认值必须满足列的数据类型

3.唯一约束

列名 类型 unique --列级约束

constraint 约束名 unique(列) --表级约束语法

4.主键约束

主键约束是not null和unique合体

列名 类型 primary key --列级约束

constraint 约束名 primary key(列名,..) --表级约束

5.检查约束

列名 类型 check(条件表达式) --列级约束

constraint 约束名 check(条件表达式) --表级约束,检查约束一个约束只能约束一列

6.外键约束

列名 类型 references 主表(主键列) --列级约束,外键列的值只能从主表中主键列的值取

constraint 约束名 foreign key(外键列) references 主表(主键列) --表级约束

--自建表

create table emp2

(

empno number(4) primary key,

ename varchar2(50) unique,

job varchar2(50) not null,

mgr number(4),

hiredate date default sysdate,

sal number(7,2) check(sal between 800 and 5000),

comm number(7,2),

deptno number(2) references dept2(deptno),

guoji varchar2(10) default '中国'

)

select * from emp2;

--验证约束数据

insert into emp2 values (8888,'老师','salesman',7888,default,5000,200,10,default);

insert into emp2 values (8888,'老师','salesman',7888,default,5000,200,10,default);

insert into emp2 values (88899,'老师','salesman',7888,default,5000,200,10,default);

insert into emp2 values (8889,'老师','salesman',7888,default,5000,200,10,default);

insert into emp2 values (7676,'老师1','salesman',7888,default,5000,200,33,default);

insert into emp2 values (8889,'刘德华','salesman',

7888,to_date('2022/09/09 22:56:18','yyyy/MM/dd hh24-mi-ss'),5000,200,10,default);

--表级约束

create table sc(

sno varchar2(10),

cno varchar2(10),

score number(5,2),

constraint pk_sc primary key (sno,cno),

constraint fk_sc_sno foreign key (sno) references student(sno),

constraint fk_sc_cno foreign key (cno) references course(cno),

constraint ck_score check(score>=0 and score<=100)

);

修改表

Alter table 能够实现的功能: 

1.添加一个新列

alter table 表名 add 列名 类型(长度)[约束&默认值];

alter table student add City varchar(255) not null;

2.修改现有的列定义

alter table 表名 modify 列名 类型 [约束 默认值]; --修改表中的列

alter table student modify City varchar(300) unique not null;

alter table 表名 modify 列名 类型 null; --去掉列的非空约束

alter table 表名 modify 列名 类型 not null; --给列添加非空约束

alter table cjb modify xingming null

3.删除一列

alter table 表名 drop column 列名; --删除表中的列

alter table student drop column sname

4.新的列定义默认值

alter table student modify city default '北京';

5.重命名列

alter table 表名 rename column 旧列名 to 新列名;

6.将表更改为只读状态

ALTER TABLE 表名 READ ONLY;

ALTER TABLE 表名 READ WRITE;(改回可编辑模式)

7.添加约束

alter table 表名 add 表级约束语法; --给表添加表级约束

Constraint PK_empno primary key (empno)

constraint PK_EMP primary key (EMPNO)

Atler table emp add constraint FK_DEPTNO foreign key (DEPTNO)

references DEPT (DEPTNO);

Alter table emp add constraint CK_sal check sal (sal>800)

8.删除约束

alter table 表名 drop constraint 约束名; --删除一个约束

删除表

Drop table *;

--修改表结构

alter table emp2 add City varchar(255) ;

alter table emp2 modify City varchar(300) unique not null;

alter table emp2 modify City default '北京';

alter table emp2 rename column City to ct

alter table emp2 read only

insert into emp2 values

(8888,'老师','salesman',7888,default,5000,200,10,default,default);

alter table emp2 read write

alter table emp2 drop constraint fk_emp2_deptno

alter table emp2 add constraint fk_emp2_deptno

foreign key (deptno) references dept (deptno);

alter table emp2 drop column ct

--原有数据建表

create table t_表名 as select * from scott.emp;

create table emp1 as select * from scott.emp;

select * from emp1;

drop table emp1;

create table dept1 as select * from scott.dept;

select * from dept1

--方式一键会丢失

alter table dept1 add constraint pk_deptno primary key(deptno)

达梦数据库

使用背景

在数字化时代,数据安全已成为企业运营和国家安全的核心要素。随着数据量的不断增

长和业务的复杂化,选择一款安全可靠的数据库管理系统显得至关重要。在众多数据库

中,达梦数据库以其卓越的数据安全性能和国产化背景,成为了企业和机构的首选。

达梦数据库介绍

达梦数据库(DM)是由达梦公司推出的具有完全自主知识产权的高性能数据库管理系

统。它采用了先进的体系架构和技术,以确保在大规模数据处理、高并发应用场景下的

高性能、高可靠性、高可扩展性和高安全性。达梦数据库是一款功能丰富、性能优越、

安全可靠的关系型数据库管理系统,适用于各种需要高性能、高可靠性和高可扩展性的

应用场景。

达梦数据库已经在多个领域得到广泛应用,如国家智能电网调度指挥系统、消防应急管

理系统等。这些应用案例证明了达梦数据库在实际应用中的可靠性和性能。

安装步骤

1. 打开官网 https://www.dameng.com/list_103.html

2. 选择DM8开发版(X86平台,Win_64位)

3. 解压iso文件,双击setup程序,一直下一步

4. 设置口令(登录时的账号密码,可默认但是要记住默认)

5. 安装完成后点击电脑开始按钮,找到最新安装,打开DM数据库管理工具

【国产数据库达梦-windows环境下的安装与配置】

https://www.bilibili.com/video/BV1Jx4y1Z7o2?

vd_source=b22442ae2dca586b2b9556d16dc51c75

达梦和oracle的区别

1. 登录的区别

oracle:如果sys的密码忘记可以用操作系统验证方式登录修改密码,

达梦数据库只如果忘记了sysdba的密码则无法登录dm

2. 数据库的状态

oracle:oracle的状态有shutdown ,nomount ,mount 和open。

dm:达梦数据库有shutdown ,mount ,open和suspend只状态,增加了一个挂起状

态,并且在open状态可以直接切换为mount状态。oracle则不可以

  1. 备份的区别

oracle:oracle的RMANQ 可以进行热备。

 dm:达梦数据库的RMAN只能进行冷备份。 

作业

1. 分别使用oracle和达梦数据库完成,学生管理系统项目,按照excel的结构建表及约

  1. 插入学生系统数据,参考excel数据插入

excel数据:

Teacher:

Student:

Course:

Sc:

--创建教师表

create table teacher(

tno varchar2(10) primary key,

tname varchar2(20) not null

);

--创建学生表

create table student(

sno varchar2(20) primary key,

sname varchar2(30),

sage number(2) check(sage between 6 and 40),

ssex varchar2(5) default('男')

);

--创建课程表

create table course(

cno varchar2(10) primary key,

cname varchar2(30),

tno varchar2(20),

foreign key(tno) references teacher(tno)

);

--检错表删除用

/*drop table course;*/

--创建成绩表

create table sc(

sno varchar2(10),

foreign key(sno) references student(sno),

cno varchar2(10),

foreign key(cno) references course(cno),

score number(5,2) check(score between 0 and 100)

);

--教师表插入数据

insert into teacher

values('t001','刘阳');

insert into teacher

values('t002','谌燕');

insert into teacher

values('t003','胡明星');



--学生表插入数据

insert into student

values('s001','张三',23,'男');

insert into student

values('s002','李四',23,'男');

insert into student

values('s003','吴鹏',25,'男');

insert into student

values('s004','琴沁',20,'女');

insert into student

values('s005','王丽',20,'女');

insert into student

values('s006','李波',21,'男');

insert into student

values('s007','刘玉',21,'男');

insert into student

values('s008','萧蓉',21,'女');

insert into student

values('s009','陈萧晓',23,'女');

insert into student

values('s010','陈美',22,'男');

insert into student

values('s12','谢丰琴',20,'女');

insert into student

values('s13','谢中菊',20,'男');

insert into student

values('s14','谢一财',20,'男');



--课程表插入数据

insert into course

values('c001','J2SE','t002');

insert into course

values('c002','Java Web','t002');

insert into course

values('c003','SSH','t001');

insert into course

values('c004','Oracle','t001');

insert into course

values('c005','SQL SERVER 2005','t003');

insert into course

values('c006','C#','t003');

insert into course

values('c007','JavaScript','t002');

insert into course

values('c008','DIV+CSS','t001');

insert into course

values('c009','PHP','t003');

insert into course

values('c010','EJB3.0','t002');



--插入数据到成绩表

insert into sc

values('s001','c001',78.90);

insert into sc

values('s002','c001',80.90);

insert into sc

values('s003','c001',81.90);

insert into sc

values('s004','c001',60.90);

insert into sc

values('s001','c002',82.90);

insert into sc

values('s001','c003',59.00);

insert into sc

values('s12','c005',89.00);

insert into sc

values('s13','c008',87.00);

insert into sc

values('s13','c007',65.00);

insert into sc

values('s13','c010',85.00);

insert into sc

values('s14','c007',100.00);

insert into sc

values('s14','c005',60.00);

insert into sc

values('s14','c006',92.00);

insert into sc

values('s14','c008',95.00);

insert into sc

values('s14','c010',91.00);

insert into sc

values('s14','c004',57.00);



--查看建成的表

select * from teacher;

select * from student;

select * from course;

select * from sc;

作业2

--1.将c002课程的成绩增加5分

update sc set score=score+5 where cno='c002';



--2.将c001课程成绩小于80分的同学的成绩增加10分

update sc set score=score+10 where cno='c001' and score<80 ;



--3.增加一个学生:学号's013',姓名:'王麻子',年龄:28,性别:男

insert into student values('s013','王麻子',28,'男');



--4.给所有女学生的成绩加10分

update sc set score=score+10 

where sno in 

(

select sno from student where ssex='女'

);



--5.创建一张和sc表相同的表,并将s001和s002学生的选课信息插入新表中

create table SCourse

as

select sc.*,course.cname,course.tno from sc left join course on sc.cno=course.cno

where sc.sno in ('s001','s002');



select * from SCourse;

--建表错误,重建

drop table SCourse;



--6.将所有c001课程成绩低于平均成绩的同学的分数改为60分

update sc set score=60 where cno='c001' and score<

(

select avg(score) from sc

);



--7.删除“s002”同学的“c001”课程的信息记录

delete from sc where sno='s002' and cno='c001';



--8.删除学习“谌燕”老师课的SC 表记录;

delete from sc where cno in

(

select cno from course where tno in

(

select tno from teacher where tno='t002'

)

);



--9.向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“c002”课程的同学学号、“c002”号课的平均成绩;

insert into sc(sno)

select distinct sno from sc where cno!='c002' ;



alter table sc add avgc002 number(5,2);



insert into sc(avgc002)

select avg(score) from sc

where cno='c002' group by cno

;



--第十题看不懂题目不写了,老师也说这题选做的。



--11.创建dept1表获取scott.dept表数据,再使用insert...select插入一次scott.dept表数据到detp1表,再使用删除语句删除重复数据

--删表重建

drop table dept1;

create table dept1

as

select * from scott.dept;



insert into dept1

select * from scott.dept;

/*查看dept1表*/

select rowid,dept1.* from dept1;





delete from dept1 where rowid in

(

select rowid from dept1 where rowid not in

(

select min(rowid) from dept1 group by deptno

) 

);

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值