标签:tar insert 关系 ref constrain 右连接 基本语法 employee 创建索引
创建表:
CREATE TABLE T_Person(FName VARCHAR(20),FAge NUMBER(10) DEFAULT ‘20‘,FId INT NOT NULL,PRIMARY KEY(‘FId‘))
CREATE TABLE T_Employee(EName VARCHAR(20),EId INT NOT NULL,PRIMARY KEY(‘EId‘),FOREIGN KEY(EName) REFERENCES T_Person(FName))
修改数据表:
ALTER TABLE T_Person ADD FFavorite VARCHAR(20) NOT NULL
ALTER TABLE T_Person DROP COLUMN FAge
alter table T1 alter column F1 varchar(10)或
alter table T1 modify F1 varchar2(40);
删除表:
DROP TABLE T_Employee
数据的增删改查:
INSERT INTO T_Person(FName,FAge) VALUES(‘TOM‘,18)
INSERT INTO T_Person VALUES(‘POLLY‘,20)
UPDATE T_Person SET FAge=21
UPDATE T_Person SET FAge=21,FName=‘Bob‘
UPDATE T_Person SET FAge=20 WHERE FName=‘TOM‘
DELETE FROM T_Person
DELETE FROM T_Person WHERE FAge > 20 or FName = ‘Mars‘
SELECT FNumber FROM T_Employee
SELECT FNumber AS Number1,FName AS Name,FAge AS Age FROM T_Employee
SELECT FNumber Number1,FName Name,FAge Age FROM T_Employee
SELECT FNumber 编号,FName 姓名,FAge 年龄 FROM T_Employee
聚合函数:MAX(列名) ,AVG(列名),SUM(列名),MIN(列名),COUNT(列名)
SELECT MAX(FSalary) FROM T_Employee WHERE FAge>25
SELECT AVG(FAge) FROM T_Employee WHERE FSalary>3800
SELECT SUM(FSalary) FROM T_Employee
SELECT MIN(FSalary),MAX(FSalary) FROM T_Employee
SELECT COUNT(*),COUNT(FNumber) FROM T_Employee
聚合函数复杂使用方法:
按照条件分组:
SELECT COUNT(*),t.emplno FROM T_Employee t group by t.emplno
排序:
SELECT COUNT(*),t.emplno FROM T_Employee t group by t.emplno order by t.FNumber DESC
简单排序:
SELECT * FROM T_Employee ORDER BY FAge ASC
SELECT * FROM T_Employee ORDER BY FAge DESC
SELECT * FROM T_Employee WHERE FAge>23 ORDER BY FAge DESC,FSalary DESC
IS NULL 和 IS NOT NULL
SELECT * FROM T_Employee WHERE FNAME IS NULL
SELECT * FROM T_Employee WHERE FNAME IS NOT NULL AND FSalary <5000
SELECT * FROM T_Employee WHERE FAge!=22 AND FSALARY!<2000
SELECT * FROM T_Employee WHERE FAge<>22 AND FSALARY>=2000
IN,OR,BETWEEN AND
SELECT FAge,FNumber,FName FROM T_Employee WHERE FAge=23 OR FAge25 OR FAge=28
SELECT FAge,FNumber,FName FROM T_Employee WHERE FAge IN (23,25,28)
SELECT * FROM T_Employee WHERE FAGE>=2AND FAGE <=27
SELECT * FROM T_Employee WHERE FAGE BETWEEN 23 AND 27
LIKE模糊查询,DISTINCT去重
SELECT * FROM T_Employee WHERE FName LIKE ‘[SJ]%‘
SELECT FAge,AVG(FSalary) FROM T_Employee GROUP BY FAge
SELECT FSubCompany,SUM(FSalary) AS FSalarySUM FROM T_Employee GROUP BY FSubCompany
SELECT FAge,COUNT(*) AS CountOfThisAge FROM T_Employee GROUP BY FAge HAVINGCOUNT(*)>1
SELECT DISTINCT FDepartment FROM T_Employee
SUBSTRING
SELECT * FROM T_Employee WHERE FSalary/(FAge-21)>1000
SELECT FName, SUBSTRING(FName,2,3) FROM T_Employee WHERE FName IS NOT NULL
SELECT FName,FAge, SIN(FAge) , ABS(SIN(FAge)) FROM T_Employee
SELECT FIdCardNumber,FAge,FName FROM T_TempEmployee
UNION
SELECT FNumber,FName,FAge FROM T_Employee
主从表外键关联
create table zhuTable(
id int primary key,
name varchar(11)
);
create table congTable(
congid int primary key,
tel varchar(10),
zhuid int,
CONSTRAINT FK_ZHUANDCONG foreign key(zhuid) references zhuTable(id)
);
alter table congtable
add constraint fk_student
foreign key(zhuid)
references zhutable(id);
内连接:
select * from student inner join course on student.ID=course.ID
相当于select * from student,course where student.ID=course.ID
完全外连接 full join 或 full outer join
SQL语句:select * from student full join course on student.ID=course.ID
完全外连接包含full join左右两表中所有的行,如果右表中某行在左表中没有匹配,则结果中对应行右表的部分全部为空(NULL),如果左表中某行在右表中没有匹配,则结果中对应行左表的部分全部为空(NULL)。
左连接 left join 或 left outer join
SQL语句:select * from student left join course on student.ID=course.ID
左外连接包含left join左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分全部为空(NULL).
注:此时我们不能说结果的行数等于左表数据的行数。当然此处查询结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。
右连接 right join 或 right outer join
SQL语句:select * from student right join course on student.ID=course.ID
右外连接包含right join右表所有行,如果左表中某行在右表没有匹配,则结果中对应左表的部分全部为空(NULL)。
注:同样此时我们不能说结果的行数等于右表的行数。当然此处查询结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。
SQL语句:select s.Name,C.Cname from student_course as sc left join student as s on s.Sno=sc.Sno left join course as c on c.Cno=sc.Cno
oracle:
select depr.relationid,depr.tabtype from T_CENTER_DEPRULEPOL depr,
(SELECT connect_by_root(t.departmentid) departmentpid FROM T_CENTER_DEPARTMENT t
where t.departmentid = 623 START WITH t.parentid IS NULL
CONNECT BY nocycle prior t.departmentid = t.parentid)dep
where depr.departmentid = dep.departmentpid;
使用CREATE 语句创建索引
CREATE INDEX index_name ON table_name(column_name,column_name) include(score)
普通索引
CREATE UNIQUE INDEX index_name ON table_name (column_name) ;
非空索引
CREATE PRIMARY KEY INDEX index_name ON table_name (column_name) ;
主键索引
使用ALTER TABLE语句创建索引
alter table table_name add index index_name (column_list) ;
alter table table_name add unique (column_list) ;
alter table table_name add primary key (column_list) ;
删除索引
drop index index_name on table_name ;
alter table table_name drop index index_name ;
alter table table_name drop primary key ;
创建索引
alter table tbl_name add primary key (column_list):
该语句添加一个主键,这意味着索引值必须是唯一的,且不能为 null。
alter table tbl_name add unique index_name (column_list):
这条语句创建索引的值必须是唯一的(除了 null 外,null 可能会出现多次)。
alter table tbl_name add index index_name (column_list):
添加普通索引,索引值可出现多次。
alter table tbl_name add fulltext index_name (column_list):
该语句指定了索引为 fulltext ,用于全文索引。
删除索引
drop index [indexname] on mytable;
修改
alter mytable add index [indexname] on(username(length))
查询
使用 show index 命令来列出表中的相关的索引信息。可以通过添加 \g 来格式化输出信息。
show index from table_name \g
1、Create table创建数据表:
建立了T_Customer,T_Order,T_Ordertype三个表,基本语法是:Create table+表名+(每列约束条件,表的约束条件),表名要求是:必须以字母开头、1-30个字符长度、只允许包含A-Z, a-z, 0-9, _, $, and #、在一个数据库保证命名的唯一、不能使用Oracle内部的关键字。
2、Insert插入数据:
基本语法:insert into (列名) +values (插入内容),列名可以不与表中顺序一致,但要与插入内容一一对应,在此对上文创建的三个数据表插入内容
3、Nvl空值函数:
基本语法:NVL(表达式1,表达式2)如果表达式1为空,返回值为表达式2的值,否则返回表达式1的值,该函数的目的是把一个空值转换成一个实际的值。表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。在表T_order中的Customerid列中存在一个空值,将它转换成一个实际的值
4、Distinct去掉重复行:
基本语法:Select distinct+列名 from 表名,去掉表中某列的重复行
5、as(可省略)使用列别名:
基本语法:Select 列名 as(可省) 列别名 from 表名,在此因为有三个不同的数据表,里面的列名是可以重复,在查询过程中,重复的列名会报错“未明确定义列”
6、Between…and…用法:
在条件查询语句中时常会使用between…and…统计区间内的值,在此查找T_customer表中年龄在20到29岁的客户资料:select * from T_customer where age between 20 and 29;
7、In(范围)用法:
在条件查询语句中会用到in(范围)来查找一个范围中的值,如在此查找T_order中Fid为“1、3、5”的客户姓名:
select t.name from T_order t where t.Fid in (1,3,5);
8、Like的模糊查询:
在条件查询语句中:遇到数据库中数据过长,查询时很不方便,使用模糊查询不但能够查找到记不太清的数据信息,也可以快捷的查找到长文字的数据信息,在此在T_order中查询订单号开头是T,结尾是1,姓名开头是T的客户信息,此处运用了“%”与“_”两个通配符
select * from T_order t where t.orderid like %T__1% and t.name like %T%;
总结模糊查询中使用的通配符:
(1)“%”表示任意个字符,当想表达中文时,用“%%”来表示;
(2)“_”表示任意单个字符,起限制作用
(3)“[ ]”表示括号内其中一个字符,表示符合括号范围内;
(4)“[^ ]”与“[ ]”类似,表示不在括号内的内容是选择的区间;
(5)当在模糊查询中,如遇到查询内容包含通配符时,把特殊符号用“[ ]”括起来,便可以正常查询
9、聚合函数:
在查询过程中会涉及对数据的计算、统计,这时候我们常用的聚合函数有:
AVG (DISTINCT|ALL|n)
COUNT (DISTINCT|ALL|expr|*)
MAX (DISTINCT|ALL|expr)
MIN (DISTINCT|ALL|expr)
SUM (DISTINCT|ALL|n
基本语法:select 聚合函数 from 表
select AVG (price),MAX (price), MIN (price),SUM (price) from T_order;
SELECT * FROM T_CORP t where t.CORPCODE in (‘orgorg‘,‘yttPlus‘);
SELECT distinct t.CORPCODE FROM T_CORP t where t.CORPCODE like ‘%o__g%‘;
select max(INTERDISCOUNT0) ,min(INTERDISCOUNT0),avg(INTERDISCOUNT0) from T_CORP t;
标签:tar insert 关系 ref constrain 右连接 基本语法 employee 创建索引
原文地址:https://www.cnblogs.com/agnesFlower/p/13230349.html