1、Oracle数据库总结创建表及命名规则?表名和列名:必须以字母开头必须在130个字符之间必须只能包含AZ, az, 09, _, $, 和#必须不能和用户定义的其他对象重名必须不能是Oracle 的保留字Oracle默认存储是都存为大写增删改查语法?增加:例如:使用INSERT语句往customers表中插入数据,指定相关列和值INSERT INTO customers (customer_id, first_name, last_name, dob, phone) VALUES (6, Fred, Brown, 01-1月-1970, 800-555-1215); 如果为表所有列都指定值,那
2、么可以忽略列清单INSERT INTO customersVALUES (6, Fred, Brown, 01-1月-1970, 800-555-1215); 可以使用NULL为某些列指定空值INSERT INTO customersVALUES (8, Sophie, White, NULL, NULL); 查询:select * fromcustomers;或者select字段 fromcustomerswhere条件 删除:deletefromcustomerswhere条件更改:update customersset name = xiaoming,age = 16(更改多个字段时候用
3、逗号隔开)where 条件对查询结果进行排序? 语句:select * fromcustomersorderby字段 desc; (asc(升序),desc(降序)如果不写,默认升序)NULL值了解么?NULL值表示未知的值。它是一个特殊的值,但并不是空字符串,NULL值表示该列是未知的。当某些查询语句在输出结果列上看不到值的时候,可能就是NULL值 NVL()和NVL2():NULL值被查询出来的时候没有显示信息,如何告知用户这是空字符串还是NULL,这可以通过NVL()函数来进行处理NVL(x,value)是有value显示本身,null显示为替换的valueNVL2(x,value1,v
4、alue2)是如果x不为NULL值,返回value1,否则返回value2例程: select name,nvl2(email,已知,未知) from student;【代码含义:代表如果email字段中有值,则显示已知,null则显示未知,如果想显示本来的查询结果select name,nvl(email,未知) from student;】update student set name = replace(name,小,大);【代码含义:代表将STUDENT表中NAME 字段中如果含有小字,那么就将小字替换为大字(操作的不是显示结果,而是将表中数据进行更改)】Oracle中的简单函数? 字
5、符串函数 concat:将x和y拼接起来,并返回新字符串例程:select concat(first_name,-|last_name) 姓名from customers; Instr字符查找,从1开始。select instr(asdbcrdbewqrbmde,b) from dual;select instr(asdbcrdbewqrbmde,b,5,2) from dual;【代表从第5个字符开始,第二个b所在的位置】 Ltrim :LTRIM(x ,trim_string)从x字符串左侧去除所有的trim_string字符串,如果没有指定trim_string字符串,则默认为去除左侧空
6、白字符 RtrimRTRIM(x ,trim_string)从x字符串右侧去除所有的trim_string字符串,如果没有指定trim_string字符串,则默认为去除右侧空白字符 TrimTRIM(trim_string FROM x)从x字符串两侧去除trim_string字符串 ReplaceREPLACE(x, search_string, replace_string)从字符串x中搜索search_string字符串,并使用replace_string字符串替换。用select执行并不会修改数据库中原始值,但是用update执行可以修改。 SubstrSUBSTR(x, start,
7、length)返回字符串中的指定的字符,这些字符从字符串的第start个位置开始,长度为length个字符;如果start是负数,则从x字符串的末尾开始算起;如果length省略,则将返回一直到字符串末尾的所有字符 例程: select substr(abcd月fg,4,2)from dual;(结果:d月) select substr(abcdefg,-2)from dual;(结果:fq)日期函数 Sysdate例程: Selectsysdatefromdual; Select to_char(sysdate, yyyy-mm-dd-hh-mm-ss) from dual; Add_mon
8、ths(d1,n1) last_day(): 返回所查询的值中最后一个日期数据。转换函数 To_charTO_CHAR(x, format)将x转化为字符串。 format为转换的格式,可以为数字格式或日期格式select to_char (sysdate,yyyy-mm-dd)from dual;【一般在查询时候使用,使返回的值成为指定格式】 to_dateTO_DATE(x ,format)将x字符串转换为日期insert into student values(seq_stu.nextval,小明,to_date(1992-2-18,yyyy-mm-dd),default,北京,null
9、); 【一般在添加使用】聚合函数 Avg:平均数 Sum:求和 Max:最大值 Min:最小值 Count:返回统计的行数 Round:四舍五入例程:select round(avg(bid),1) from bug ;分组了解么?有时需要对表中的行进行分组,然后统计每组的信息,可以使用GROUP BY进行分组,然后再对每组进行统计。 (1) 可以使用GROUP BY对多个列进行分组例:SELECT product_id, avg(customer_id) FROM purchases GROUP BY product_id;(2) 可以对分组后的行使用聚集函数,聚集函数会统计每组中的值,对于
10、每组分别统计后返回一个值例:SELECT product_type_id, COUNT(ROWID)FROM productsGROUP BY product_type_idORDER BY product_type_id;注意:a)如果查询中使用了聚集函数,被查询的列未使用聚集函数处理,那么这些列必须出现在GROUP BY子句后,否则,会提示ORA-00937错误 b) 不能使用聚集函数作为WHERE子句的筛选条件,否则,会提示ORA-00934错误 c) 可以使用HAVING子句过滤分组后的行 SELECT .FROM .WHEREGROUP BY .HAVING .ORDER BY .;
11、 (GROUP BY使用时可以不使用HAVING,但是使用HAVING时必须有GROUP BY才有意义)(3) 同时使用WHERE, GROUP BY和HAVINGa)首先,执行WHERE筛选掉不符合条件的行b)然后,将符合条件的行使用GROUP BY进行分组c)最后,使用HAVING对分组统计的结果进行再次筛选例:SELECT product_type_id, AVG(price)FROM productsWHERE price 13ORDER BY product_type_id;表的约束条件?目的:确保表中数据的完整性。常用的约束类型: 主键约束(PRIMARY KEY):要求主键列数据
12、唯一,并且不允许为空非空约束(NOT NULL):指定的列的值不允许为空唯一键约束(UNIQUE):要求该列唯一,允许为空,但只能出现一个空值检查约束(CHECK):指定表中一列或多列可以接受的数据值格式默认约束(DEFAULT):指定某列的默认值外键约束(FOREIGN KEY):用于建立和加强两个表数据之间连接的一列或多列。通过将表中的主键列添加到另一个表中。可以创建两个表之间的连接。这个主键的列就称为第二个表的外键。外键约束就可以确保添加到外键表中的任何行都在主表中都存在相应的行多表查询?不同的数据存储在不同的表中,通常要查询多张表才能找到需要的数据例程: SELECT products
13、.name, product_types.nameFROM products, product_typesWHERE products.product_type_id = product_types.product_type_idAND products.product_id = 3;products表和product_types表相关字段会用在SELECT语句及WHERE子句上,可以给表起别名,提高代码可读性、降低书写难度例程:SELECT p.name, pt.nameFROM products p, product_types ptWHERE p.product_type_id = pt
14、.product_type_id AND p.product_id = 3注意:如果查询两张表,并且没有定义连接条件,那么查询的结果集是两表相乘的结果,这样的情况称之为笛卡尔乘积。总结:多表查询WHERE时,连接次数=查询时连接表的数量-1常见的三种连接类型: 内连接:内连接返回的行只有满足连接条件才会返回。如果连接条件的列中有NULL值,那么该行则不会返回外连接:外连接返回的行满足连接条件,也包括在连接条件的列包含空值的行 自连接:连接的表为同一张表子查询?子查询是嵌入到另一个SELECT语句中的一个SELECT语句。通过使用子查询,可以使用简单的语句组成强大的语句。当需要从表中选择行,而选择条件却取决于该表自身中的数据时,子查询非常有用。单行子查询: (1)可以将另外一个查询作为WHERE子句的子查询例:查询尾名是Brown的首名和尾名SELECT first_name, last_nameFROM customersWHERE customer_id = (SELECT customer_id FROM customers WHERE last_name = Brown); (2) 在单行子查询还可以使用其他比较运算符,如、=例:查询价格大于平均价格的商品编号、名称及价格WHERE子句中使用
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1