小布老师SQL学习笔记
SQL学习知识点总结

SQL学习知识点总结SQL学习知识点总结//创建表createtableuser(idint(11)notnullauto_increment,namevarchar(50)defaultnull,passwordvar char(50)defaultnull,primarykey(id))//distinct关键字是查询数据库中不相等的数据如果有相同的数据则显示一条数据SELECTdistinctnameFROMuser//and(并且)or(或)查询where语句的条件SELECT*FROMuserwhereCity=“上海”andname=“admian3”SELECT*FROMuserwhereCity=“上海”orname=“admian3”//如果and和or结合来用的时候则要用到()处理SELECT*FROMuserwhere(City=“上海”orname=“admian3”)andname=“xxx”//orderby(关键字排序)(按照名字的顺序来做升序排序)select*fromuserorderbyname//orderby后面可以接多个排序列表中间用,隔开select*fromuserorderbyname,City,....//desc(降序的关键字)select*fromuserorderbynamedesc//asc(升序的关键字orderby后面不跟有降序的关键字那么就是默认为升序)select*fromuserorderbynamedesc,Cityasc//添加数据insertintouser(name,password,Address,City,OrderNumber)values(“ddsds ”,”ssss”,”广东”,”广州”,1234656)//更新数据upateusersetname=“ffff”whereid=6//删除数据deletefromuserwhereid=6//limit(关键字是查询数据库中多少条数据再mysql里面用如果是sqlserver 用则用top)select*formuserlimit2//in(关键字允许我们在where语句中存在多个条件)select*fromuserwherenamein(“xxxxs”,”zdasdsa”)//between....and..(关键字是处理在什么之间到什么之间的操作)select*fromuserwherenamebetween”fffff”and”ssss”//as(关键字是用于给表或数据库起一个别名)select*nameasn,passwordaspfromuser//innerjoin(关键字使用了内连接来查询两个表的数据,其中还有leftjoin(左连接)rightjoin(右连接)fulljoin(左右连接))sele ,u.Address,n.numberfromuserasu“innerjoin”numberasnonu.i d=er_idorderbyu.Address//union(命令将两条sql语句拼接起来)select*fromuserunionselect*fromnumber//selectinto(关键字是为了把一个表的数据插入到另一个表当中)select*intouserfromnumber//createdatabase(创建数据库)createdatabasemy_db//createtable(创建表)createtablePersons(idint(10),lastNamevarchar(25)........)//约束notnull(不为null值)unique(唯一)primarykey(主键)foreignkey(外键)check(查询约束)default(默认值约束)//createindex(创建索引)createindexffonuser(name,Address)扩展阅读:SQL学习总结SelectFromWhereGroupbyHavingOrderbyNullLikeESCAPE”escape_character”允许在字符串中搜索通配符,而不是将其作为通配符使用。
SQL 优化学习笔记

建立索引(一)深入浅出理解索引结构实际上,您可以把索引理解为一种特殊的目录。
微软的SQL SERVER提供了两种索引:聚集索引(cl ustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。
下面,我们举例来说明一下聚集索引和非聚集索引的区别:其实,我们的汉语字典的正文本身就是一个聚集索引。
比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a” 开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。
如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zha ng”。
也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。
我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。
如果您认识某个字,您可以快速地从自动中查到这个字。
但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。
但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是6 72页,检字表中“张”的上面是“驰”字,但页码却是63 页,“张”的下面是“弩”字,页面是390页。
很显然,这些字并不是真正的分别位于“张”字的上下方,现在您看到的连续的“驰、张、弩”三字实际上就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。
我们可以通过这种方式来找到您所需要的字,但它需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。
SQL笔记——精选推荐

SQL笔记SQL Server1.范式P181NF:每个字段不可再分,不能有重复⾏,这是建表的最低标准。
表中要有主键且主键不能为空。
2NF:除满⾜第⼀范式外,其他⾮主键字段都必须完全依赖与主键。
3NF: 除满⾜第⼆范式外,还要求任何⾮主键字段不传递依赖与主键。
2.创建数据库P39/* 若想成功创建以下数据库,则要先⾃⾏创建D:\data⽬录 */CREATE DATABASE Student--创建数据库StudentON PRIMARY --指定主⽂件/* 数据⽂件的具体描述 */(NAME=Student_dat, --主数据⽂件的逻辑名FILENAME=’D:\data\Studentdat.mdf’, --主数据⽂件的物理名SIZE=10mb, --主数据⽂件的初始尺⼨MAXSIZE=500mb, --主数据⽂件的最⼤尺⼨FILEGROWTH=5mb--主数据⽂件的增长速度为5MB)LOG ON/* ⽇记⽂件的具体描述,各参数同上 */(NAME=Student_log, --⽇志⽂件的逻辑名FILENAME=’D:\data\Studentlog.ldf’, --⽇志⽂件的物理名SIZE=10mb, --⽇志⽂件的初始尺⼨MAXSIZE=unlimited, --⽇志⽂件的最⼤尺⼨FILEGROWTH=10%--⽇志⽂件的增长速度为5MB)GO --与后续的SQL语句隔开3.删除数据库P43IF DB_ID (‘Student’)IS NOT NULL --调⽤函数,返回指定数据库的ID,否则返回NULL DROP DATABASE Student; -删除数据库4.创建表P52USE Student--在Student数据库中操作GOCREATE TABLE Admin--创建Admin表(AdminID int IDENTITY(1,1), --AdminID为整形,从1开始,增量为1⾃动编号LoginID varchar(50) NOT NULL, --不允许为空Sex varchar(2) DEFAULT ‘男’--默认值)GO5.设置主键P53ALTER TABLE 表名ADD CONSTRAINT 主键名 PRIMARY KEY(主键列) -- 设置主键DROP CONSTRAINT主键名 PRIMARY KEY(主键列) -- 去除主键6.⼀次添加单⾏数据P54VALUES (值列表) --插⼊字符型和⽇期型的数据时要⽤’’括住7.⼀次添加多⾏数据P55INSERT INTO 表名 (列名)SELECT 值列表--注意:这⾥的值列表不需要⽤()括起来UNIONSELECT 值列表GO8.备份表单P55SLECT * --将其添加到新表,备份表必须在查询语句INTO 备份表运⾏时创建,不可以预先存在。
sql笔记

sql笔记 D DISTINCT不能用于COUNT(*)。 如:Select Distinct name From s_dept; Select Distinct dept_id,title From s_emp;
文本处理: TRIM()/LTRIM()/RTIRM():去空格。只能去掉头和尾的空格,中间的不理。 trim(' heo Are fdou ') --> heo Are fdou 输入:select trim(' heo Are fdou ') from dual; -->:heo Are fdou LOWER:转小写 lower('SQL Course') --> sql course UPPER:转大写 upper(' SQL Course') --->SQL COURSE INITCAP:首字母转大写,其余转小写 initcap(SQL Course') '--> Sql Course
CONCAT:合成。双竖线只能在select语句里面用,这个可用于任何语句。 Concat('Good','String') --> GoodString SUBSTR:截取。 Substr('String', 1 ,3) --> Str 第一个数字“1”,表示从第几个开始截取;若要从倒数第几个开始,用负数,如“-2”表示倒数第2个。 上式中第2个数字“3”表示截取多少个。 LENGTH:统计长度。 Length('String') --> 6 NVL:转换空值
日期和时间处理: Oracle日期格式:DD-MMM-YYYY (D代表日期date,M代表月month,Y代表年year) 如:SELECT prod_name (DAY表示完整的星期几,DY显示星期的前三个字母) FROM Products WHERE prod_time BETWEEN to_date(’01-JAN-2008’) AND to_date(’31-DEC-2008’); 日期可以进行加减,默认单位是1天。日期与日期可以相减,得出天数;日期与日期但不能相加。 sysdate -> 系统的当天 Months_Between('01-Sep-95','11-Jan-94') --> 19.774194 相差多少个月,Between里面也可以填函数。 Add_months('11-Jan-94',6) --> 11-Jul-94 增加多少个月 Next_day('01-Sep-95','Friday') --> '08-Sep-95' 下一个星期五。其中的'Friday'可用6替代,因为星期日=1 Last_day('01-Sep-95') --> '30-Sep-95' 这个月的最后一天
SQL语句从入门到精通之笔记大全

SQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,declare)DML—数据操纵语言(select,delete,update,insert)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的deviceUSE masterexec sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only5、说明:删除新表:drop table tabname6、说明:增加一个列:Alter table tabname add column col type注:列增加后将不能删除。
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键:Alter table tabname add primary key(col)说明:删除主键:Alter table tabname drop primary key(col)8、说明:创建索引:create [unique] index idxname on tabname(col….)删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建。
sql笔记

一.引入:1.数据的重要性;a:数据,是企业的生命线!b:软件运行,最终目的就是得到数据!c : 数据库管理员。
d:BI工程师(商业智能)2.如何存储数据?存储数据的方式:方式1:存储到内存;-------优点是:高效;缺点:不适合较大的数据,不安全。
方式2:存储到物理文件;如:文件流等特点:安全,但不专业!效率低,频繁io操作。
方式3:数据库。
3.常用的数据库软件:数据库:一个软件工具,专门存储数据!例如:Oracle 数据库:适合大型项目;MySql开源免费适合中小型项目!SQLServer 微软DB2 IBM产品二. 数据库概念(了解)1.1 什么是数据库数据库就是用来存储和管理数据的仓库!数据库存储数据的优先:MySQL与Java一样,也有数据类型。
MySQL中数据类型主要应用在列上。
∙DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);∙∙DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;∙DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
∙数据类型MySQL与Java一样,也有数据类型。
MySQL中数据类型主要应用在列上。
常用类型:∙int:整型∙∙double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;∙∙decimal:泛型型,在表单钱方面使用该类型,因为不会出现精度缺失问题;∙∙char:固定长度字符串类型;∙∙varchar:可变长度字符串类型;∙∙text:字符串类型;∙∙blob:字节类型;∙∙date:日期类型,格式为:yyyy-MM-dd;∙∙time:时间类型,格式为:hh:mm:ss∙∙timestamp:时间戳类型;∙操作表∙创建表:CREATE TABLE表名(列名列类型,列名列类型,......);例如:再例如:∙查看当前数据库中所有表名称:SHOW TABLES;∙∙查看指定表的创建语句:SHOW CREATE TABLE emp,查看emp表的创建语句;∙∙查看表结构:DESC emp,查看emp表结构;∙∙删除表:DROP TABLE emp,删除emp表;∙∙修改表:∙1.修改之添加列:给stu表添加classname列:2.ALTER TABLE stu ADD (classname varchar(100));1.修改之修改列类型:修改stu表的gender列类型为CHAR(2):2.ALTER TABLE stu MODIFY gender CHAR(2);1.修改之修改列名:修改stu表的gender列名为sex:2.ALTER TABLE stu change gender sex CHAR(2);1.修改之删除列:删除stu表的classname列:2.ALTER TABLE stu DROP classname;1.修改之修改表名称:修改stu表名称为student:2.ALTER TABLE stu RENAME TO student;DML4.1 插入数据语法:语法:INSERT INTO表名 VALUES(值1,值2,…)因为没有指定要插入的列,表示按创建表时列的顺序插入所有列的值:注意:所有字符串数据必须使用单引用!4.2 修改数据语法:4.3 删除数据语法:DELETE FROM表名 [WHERE 条件]语法:虽然TRUNCATE和DELETE都可以删除表的所有记录,但有原理不同。
PL、SQL学习笔记之一
PL/SQL学习笔记之一基本概念:数据库对象:表约束条件:保证数据完整性。
视图:虚表,命名的查询语句。
索引:加速查询(加快查询的速度)。
序列:一串连续递增或递减的数字,步长相同,(代理键)。
同义词:一个对象的另外一个叫法(对象的别名)。
存储过程:用于操作函数:用作复杂运算的。
用于计算。
触发器:由事件触发的存储过程。
包:数据库安全:1、用户2、方案或模式(Schema):是用户所对应的对象的集合。
用户名等于方案名3、权限4、角色:权限组,一组权限。
5、配额(quota):允许被使用的空间。
用户可以在表空间上可以使用的空间。
端口:2030环境变量-ORACLE_BASE基本目录-ORACLE_NAME当前的主目录-ORACLE_NLS33使用US7ASCLL字符集时不用设-PATH路径基本的SQL SELECT语句口令中的第一个字符不能为数字。
语句:(一)查询:SELECT数据操作语句:DML(数据的插入INSERT、删除DELETE、修改UPDATE、合并MERGE)(二)合并:把一个表中的数据合并到另一个表中去,如果数据在原表中存在做UPDATE,否则INSERT(9I独有)。
(三)事务控制语句:COMMIT提交、ROLLBACK回滚、SAVEPOINT存储点(与ROLLBACK搭配使用)在回滚的时候可以回滚到某个存储点上。
否则回滚到最初起点上。
(四)数据定义语句:对对象操作。
TRUNCATE清除表中所有数据/CREATE创建/DROP 删除/ALTER修改(五)权限控制语句(DCL):GRANT授予权限/REVOKE移除权限SELECT:SELECT查询列表FROM数据源;*&*SQL命令必须加分号。
ALTER USER HR IDENTIFIED BY HR ACCOUNT UNLOCK;修改用户解锁给HR解锁CONNECT(conn)HR/HR(密码)用HR用户连接数据库。
*&*(不是SQL命令是SQLPLUS命令)不用加分号DESCRIBE(desc)DEPARTMENTS关键字表名描述表命令(SQLPLUS命令)SQL语句说明:(1)语句文本的书写不区分大小写。
sql入门笔记
一、表设计_____________________________________________________________ 1 ---------------------------------建库-------------------------------------------------- __________________ 1 ---------------------------------建表-------------------------------------------------- __________________ 1 ---------------------------------修改表----------------------------------------------- __________________ 1 ---------------------------------增加identity列------------------------------------ __________________ 1 ---------------------------------删除列----------------------------------------------- __________________ 1 ---------------------------------建主键----------------------------------------------- __________________ 2 ---------------------------------建外键----------------------------------------------- __________________ 2 ---------------------------------建索引----------------------------------------------- __________________ 2 ---------------------------------建列check------------------------------------------ __________________ 2 ---------------------------------建表check------------------------------------------ __________________ 2 ---------------------------------建unique约束------------------------------------- __________________ 2 ---------------------------------约束启用停用------------------------------------- __________________ 2 ---------------------------------删除主键-------------------------------------------- __________________ 2二、DML _______________________________________________________________ 3 ---------------------------------删除数据-------------------------------------------- __________________ 3 ---------------------------------添加数据-------------------------------------------- __________________ 3 ---------------------------------修改数据-------------------------------------------- __________________ 3 ---------------------------------复制表----------------------------------------------- __________________ 3 ---------------------------------复制数据-------------------------------------------- __________________ 3三DDL _________________________________________________________________ 4 ---------------------------------group by--------------------------------------------___________________ 4 ---------------------------------order by--------------------------------------------- __________________ 4 ---------------------------------聚合函数-------------------------------------------- __________________ 4 ---------------------------------union------------------------------------------------ __________________ 4 ---------------------------------join on----------------------------------------------- __________________ 5 -------------------------------except、intersect------------------------------------- __________________ 6 --------------------------------- having---------------------------------------------- __________________ 6 --------------------------------- 自查询--------------------------------------------- __________________ 6一、表设计---------------------------------建库-------------------------------------------------- if exists(select*from sysdatabases where name='teach')drop database teachcreate database teachon(name='teachwj_mdf',filename='d:\teach.mdf',size=3mb,maxsize=10mb,filegrowth=1mb)log on(name='teach_mdf',filename='d:\teach.ldf',size=3mb,maxsize=10mb,filegrowth=1mb)---------------------------------建表-------------------------------------------------- use teachcreate table t_stu_leave(leave_id decimal(8,0) not null primary key,s_id decimal(8,0) not null,class_id decimal(8,0) ,study_phase char(4),aplly_date char(10),leave_date char(10),leave_reason char(10),remark char(50))---------------------------------修改表----------------------------------------------- use teachalter table t_stu_leave alter column remark char(100)not null---------------------------------增加identity列------------------------------------ use插入练习alter table人员add标示int identity(2000,1)alter table人员add primary key(标示)---------------------------------删除列----------------------------------------------- use插入练习alter table月drop column评价alter table月add评价varchar null---------------------------------建主键----------------------------------------------- use teachalter table t_stu_leave add primary key(leave_id)--主键不需要建立主键名,而外键及check需要约束名--因此,外键及check中add后面需要添加contraint 约束名---------------------------------建外键----------------------------------------------- use teachalter table学员信息add constraint fk_t_stu_leave foreign key(class_id) references t_stu_leave(class_id)--修改学员信息表,为其增加一个键fk_t_stu_leave,这个键是使用class_id字段的,与之对应的是t_stu_leave的主键class_id--注意外键与主键及其他约束不同,外键是建立两个表之间的联系,--因此语句中的references t_stu_leave(class_id)是用来确定与联系的表的主键字段,不可缺少--而主键语句中只是对单一表进行设置,所以没用references后面的语句---------------------------------建索引----------------------------------------------- use插入练习create index xxon人员(姓名)---------------------------------建列check------------------------------------------ use teachalter table学员信息add constraint ck_s_sex check(s_sex='0'or s_sex='1') ---------------------------------建表check------------------------------------------ --数据表约束是基于字段约束,可对多个字段进行综合约束use teachalter table t_stu_leave add constraint ch_ap_le check(aplly_date is not null or leave_date is not null)---------------------------------建unique约束------------------------------------- use teachalter table t_stu_leave add constraint ui_s_id unique(s_id)---------------------------------约束启用停用------------------------------------- use teachalter table t_stu_leave nocheck constraint ui_s_id --禁用约束alter table t_stu_leave check constraint ui_s_id --启用约束--如果最后不加约束名则对表中的所有约束进行操作--alter table t_stu_leave drop ui_s_id --删除约束---------------------------------删除主键-------------------------------------------- use插入练习select*from sysobjects where xtype='pk'alter table月drop PK__月__7C8480AE二、DML---------------------------------删除数据-------------------------------------------- use插入练习delete from月where组别='加工'---------------------------------添加数据-------------------------------------------- insert into月(组别,时间,销售,库存)values('加工','2000-01-1','500','1000')---------------------------------修改数据-------------------------------------------- use插入练习update月set销售=1000 where组别='加工';---------------------------------复制表----------------------------------------------- Use 数据库Select *Into 新表From 旧表(或子查询)---------------------------------复制数据-------------------------------------------- Use 数据库Insert 已有目标表Select 列名from 旧表where 条件三DDL---------------------------------group by-------------------------------------------- --对查询出来的结果设置新列名进行存放,select 与group by 后面列必须一一对应use插入练习select销售as卖,时间from月where销售>=100 group by销售,时间;---------------------------------order by--------------------------------------------- --对查询出来的结果设置新列名进行存放,select 与group by 后面列必须一一对应use插入练习select销售as卖,时间from月where销售>=100 group by销售,时间 order by 销售,时间 desc/asc---------------------------------聚合函数-------------------------------------------- use插入练习select组别,时间,销售,库存,count(序号)as计数,sum(销售)as总销售,avg(销售)as平均销售,max(销售)as最大销售from月group by组别,时间,销售,库存order by组别,时间use插入练习select组别,count(序号)as计数,sum(销售)as总销售,avg(销售)as平均销售,max(销售)as最大销售from月group by组别order by组别use插入练习select时间,count(序号)as计数,sum(销售)as总销售,avg(销售)as平均销售,max(销售)as最大销售from月group by时间order by时间---------------------------------union------------------------------------------------ use插入练习select销售,组别,时间,库存from月unionselect销售,组别,时间,库存from月--用union重复数据至显示一条,用union all重复数据显示重负显示---------------------------------join on----------------------------------------------- use插入练习select人员.*,月.*from人员inner join月--inner join on效果上等于whereon人员.组别=月.组别and月.时间>=人员.进入时间and月.时间<=人员.离开时间order by月.组别,月.时间select人员.*,月.*--left join on列出left前的表的所有数据from人员left join月on人员.组别=月.组别--并列出满足on条件的join数据and人员.进入时间<月.时间and人员.离开时间>月.时间order by月.组别,月.时间select人员.*,月.*from人员right join月on人员.组别=月.组别and人员.进入时间<月.时间and人员.离开时间>月.时间order by月.组别,月.时间select人员.*,月.*from人员full join月on人员.组别=月.组别--full join 列出两张表数据,缺少数据on条件的用nulland人员.进入时间<月.时间and人员.离开时间>月.时间order by月.组别,月.时间select人员.*,月.*--交叉连接,相当于二组向量穷举可能性,意义不大from人员cross join月use插入练习select a.*from人员a,人员bwhere a.组别<>b.组别and a.姓名=b.姓名/*自连接查询同一张表中多条数据在一个字段中有相同值而在另一字段中有不同值的数据比如,在人员表中不同组别同一主管的数据其中,由于自连接逻辑上是两张表进行连接,但实际上只有一张表所以,对一张表简历两张虚拟表,规则是在表名后加空格再加标志符建虚拟表的操作的在from后面其他地方只需用标志符代替表名即可。
SQL笔记
矿产资源开发利用方案编写内容要求及审查大纲
矿产资源开发利用方案编写内容要求及《矿产资源开发利用方案》审查大纲一、概述
㈠矿区位置、隶属关系和企业性质。
如为改扩建矿山, 应说明矿山现状、
特点及存在的主要问题。
㈡编制依据
(1简述项目前期工作进展情况及与有关方面对项目的意向性协议情况。
(2 列出开发利用方案编制所依据的主要基础性资料的名称。
如经储量管理部门认定的矿区地质勘探报告、选矿试验报告、加工利用试验报告、工程地质初评资料、矿区水文资料和供水资料等。
对改、扩建矿山应有生产实际资料, 如矿山总平面现状图、矿床开拓系统图、采场现状图和主要采选设备清单等。
二、矿产品需求现状和预测
㈠该矿产在国内需求情况和市场供应情况
1、矿产品现状及加工利用趋向。
2、国内近、远期的需求量及主要销向预测。
㈡产品价格分析
1、国内矿产品价格现状。
2、矿产品价格稳定性及变化趋势。
三、矿产资源概况
㈠矿区总体概况
1、矿区总体规划情况。
2、矿区矿产资源概况。
3、该设计与矿区总体开发的关系。
㈡该设计项目的资源概况
1、矿床地质及构造特征。
2、矿床开采技术条件及水文地质条件。
SQL基础教程(第2版)笔记整理
SQL基础教程(第2版)笔记整理花了⼀段时间把SQL基础教程(第2版)看完,并把笔记整理好。
数据定义语⾔(Data Define Language)数据操作语⾔(Data Manipulation Language)数据控制语⾔(Data Control Language)表的创建CREATE TABLE 表名(列名数据类型完整性约束);表的删除与更新DROP TABLE 表名; -- 删除表ALTER TABLE 表名 ADD 列名数据类型; -- 增加列名ALTER TABLE 表名 DROP列名; -- 删除列名ALTER TABLE 表名 MODIFY 旧列名数据类型; -- 修改列名ALTER TABLE 表名 CHANGE 新列名数据类型; -- 修改列名ALTER TABLE 表名 ALTER 列名 DROP DEFAULT; -- 删除默认ALTER TABLE 表名 RENAME TO 新表名; -- 修改表名ALTER TABLE 表名 MODIFY 列名数据类型 COMMENT ''; --添加备注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 ,⽤于全⽂索引。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
· SQL基础介绍Oracle 11g SQL Fundamentals Training Introduction 1、primary key 主键 表中的唯一的标示 非空 2、foreign key 外键 在本表中引用的另外一张表的主键 3、ER 实体关系模型
4、SQL的分类 4.1、Data manipulation language(DML)数据操作语言 Select 查询数据 Insert 插入数据 Update 更新数据 Delete 删除数据 Merge 合并数据 4.2、Data definition language(DDL)数据定义语言 Create 创建表 Alter 修改表 Drop 删除表 Rename 重命名表 Truncate 截取 Comment 4.3、Data control language(DCL)数据控制语言 Grant Revoke 取消 4.4、Transaction control事物控制 Commit 提交 Rollback 回滚 Savepoint
SQL> show user --查看当前用户 USER is "SYS"
desc dba_users --查看所有用户 SQL> set lines 200 SQL> select username,account_status from dba_users; USERNAME ACCOUNT_STATUS ------------------------------ -------------------------------- PERFSTAT OPEN HR OPEN OE OPEN SH OPEN ·
OPS$ORACLE OPEN USER01 OPEN DIP EXPIRED & LOCKED IX EXPIRED & LOCKED MDDATA EXPIRED & LOCKED PM EXPIRED & LOCKED BI EXPIRED & LOCKED
SQL> select table_name from user_tables; --查看存在的表 --字符串和日期型是左对齐,数字型是右对齐,表头是大写。 SQL> select * from departments; DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID ------------- ------------------------------ ---------- ----------- 10 Administration 200 1700 20 Marketing 201 1800 30 Purchasing 114 1700
01--Restricting Data Using the SQL SELECT Statement 1、算数表达式 + - * / SQL> select last_name,salary,salary + 300 from employees; LAST_NAME SALARY SALARY+300 ------------------------- ---------- ---------- Walsh 45331.68 45631.68 Feeney 45190.56 45490.56 107 rows selected. --算数表达式中有NULL值结果为NULL
2、别名 用双引号括起来 select last_name as "Name",commission_pct as "Comm" from employees; Name Comm ------------------------- ---------- Ozer .25 Bloom .2 Fox .2 Order by 中可以使用别名和指定序号 ·
3、链接 || 将两个字段连起来显示 --两个字段中插入空格 select last_name || ‘ ' || job_id as "Employees" from employees; Employees ------------------------------------ OConnell SH_CLERK Grant SH_CLERK Whalen AD_ASST
select last_name || ' is a ' ||job_id as "Employees" from employees; Employees ----------------------------------------- OConnell is a SH_CLERK Grant is a SH_CLERK Whalen is a AD_ASST
4、distinct查不同的值 select distinct department_id from employees;
02--Restricting and Sorting Data 1、Escape字符转义 SQL> select last_name,job_id from employees 2 where job_id like '%SA\_%' escape '\'; --escape '\'是将斜线设置为转义字符,把下划线转义成了一个普通的字符 LAST_NAME JOB_ID ------------------------- ---------- Russell SA_MAN Partners SA_MAN Errazuriz SA_MAN ·
2、SQL执行优先级 3、替换变量 &和&& 简单的字符串的替换 ; 是客户端软件的功能 SQL> select last_name,salary from employees 2 where employee_id=&employee_num; 如是字符串和日期一定要加单引号 Enter value for employee_num: 123 old 2: where employee_id=&employee_num new 2: where employee_id=123 LAST_NAME SALARY ------------------------- ---------- Vollman 50161.44 双&&替换变量后,只用输入一次。
4、Define定义变量 SQL> define employee=200 SQL> select employee_id,last_name from employees 2 where employee_id=&employee; old 2: where employee_id=&employee new 2: where employee_id=200 EMPLOYEE_ID LAST_NAME ----------- ------------------------- 200 Whalen Set verify off 关闭提示 ·
Set verify on 打开提示 03--Using Single-Row Functions to Customize Output单行函数 1 、函数
2、单行函数:字符串函数,数值函数,日期函数,转换函数conversion,通用函数general
2.1、字符串函数 Lower 字符变大写 Upper 字符变小写 Initcap 首字大写 ·
2.2、字符串操作函数 SQL> select concat('12345','67890') from dual;--将两个字符串连接起来 CONCAT('12 ---------- 1234567890 SQL> select substr('123456789',1,5) from dual; --截取1到5喂 SUBST ----- 12345 SQL> select substr('123456789',5) from dual;--截取5位以后的 SUBST ----- 56789 SQL> select length('1234567890') from dual; --计算字符串的长度 LENGTH('1234567890') -------------------- 10 SQL> select instr('1234567890',0) from dual; --查看0所在的位置 INSTR('1234567890',0) --------------------- 10 SQL> select lpad('12345',10,'*') from dual; --在左侧添加指定的字符 LPAD('1234 ---------- *****12345 SQL> select rpad('12345',10,'*') from dual; --在右侧添加指定的字符 RPAD('1234 ---------- 12345***** SQL> select replace('1234567890','1','0') from dual; --替换字符 REPLACE('1