sql学习笔记
sql必知必会读书笔记

sql必知必会读书笔记《SQL必知必会》是一本非常实用的SQL学习书籍,以下是我的读书笔记:1. SQL是什么?SQL(Structured Query Language)是一种用于管理关系型数据库的编程语言。
它可以用于创建、修改和删除数据表,以及查询、更新和删除数据。
2. SQL的基本语法SQL语句以分号结尾。
常用的SQL语句包括SELECT、INSERT、UPDATE、DELETE等。
其中,SELECT语句用于查询数据,INSERT语句用于插入数据,UPDATE语句用于更新数据,DELETE语句用于删除数据。
3. SELECT语句的基本结构SELECT语句的基本结构为:SELECT 列名FROM 表名WHERE 条件表达式。
其中,列名表示要查询的数据,表名表示要查询的表,条件表达式表示查询的条件。
4. WHERE子句WHERE子句用于指定查询条件,可以使用比较运算符(如=、<>、>、<、>=、<=)和逻辑运算符(如AND、OR、NOT)进行组合。
例如,查询年龄大于18岁的员工信息:SELECT * FROM employees WHERE age > 18;5. ORDER BY子句ORDER BY子句用于对查询结果进行排序,可以按照一个或多个列进行排序。
默认情况下,排序方式为升序(ASC),也可以使用DESC关键字进行降序排序。
例如,按照员工姓名升序排列:SELECT * FROM employees ORDER BY name ASC;6. GROUP BY子句GROUP BY子句用于将查询结果按照一个或多个列进行分组。
可以使用聚合函数(如COUNT、SUM、AVG、MAX、MIN)对每个分组进行计算。
例如,统计每个部门的平均工资:SELECT department, AVG(salary) FROM employees GROUP BY department;7. HAVING子句HAVING子句用于对分组后的结果进行筛选。
MySql-Mysql技术内幕~SQL编程学习笔记(1)

MySql-Mysql技术内幕~SQL编程学习笔记(1)1、MySQL的历史,⼀些相关概念。
2、MySQL数据类型*通常⼀个页内可以存放尽可能多的⾏,那么数据库的性能就越好,选择⼀个正确的数据类型⾄关重要。
1》UNSIGNED类型:将数字类型⽆符号化。
2》ZEROFILL:可以格式化整形显⽰,⼀旦启⽤该属性,MySQL数据库为列⾃动添加UNSIGNED属性。
0填充。
3》⽇期和时间类型⽇期数据类型占⽤空间的情况类型起始范围结束范围DATETIME1000-01-01 00:00:009999-12-31 23:59:59DATE1000-01-019999-12-31TIMESTAMP1970-01-01 00:00:002038-01-19 03:14:07YEARTIMETIMESTAMP与DATETIME显⽰的格式⼀样,但有些不同的地⽅:1>表⽰的时间范围不同2>TIMESTAMP类型的列可以设置⼀个默认值,⽽DATETIME类型不可以。
3>TIMESTAMP类型在更新表时可以设置⾃动更新为当前时间。
3》和⽇期时间相关的函数1>获取当前系统时间:now()、current_timestamp()、sysdate()1>>now():返回执⾏sql时的时间2>>current_timestamp():返回执⾏sql时的时间3>>sysdate():返回执⾏到当前sql时的时间2>时间加减函数:1>>date_add(date,interval expr unit):date_add(now(),interval 1 day)。
expr可正可负。
unit的值有year、month、day、hour、minute、second、microsecond、week。
2>>date_sub(date,interval expr unit):date_sub(now(),interval 1 day)。
精通 oracle 10g plsql 编程-学习笔记

1.PL/SQL综述本章学习目标,了解如下内容:PL/SQL的功能和作用PL/SQL 的优点和特征;Oracle 10g、Oracle9i 的PL/SQL新特征1.1.SQL简介1.1.1.SQL语言特点SQL语言采用集合操作方式1.1.2.SQL语言分类●数据查询语言(SELECT语句):检索数据库数据。
●数据操纵语言(DML):用于改变数据库数据。
包括insert,update和delete三条语句。
●事务控制语言(TCL):用于维护数据库的一致性,包括commit,rollback和savepoint 三条语句●数据定义语言(DDL):用户建立、修改和删除数据库对象。
●数据控制语言(DDL):用于执行权限授予和收回操作。
包括grant 和revoke两条命令。
1.1.3.SQL 语句编写规则●SQL关键字不区分大小写●对象名和列名不区分大小写●字符值和日期值区分大小写●书写格式随意1.2.PL/SQL简介1.3.Oracle 10G PL/SQL 新特征2.PL/SQL开发工具本章学习目标:学会使用SQL*PLUS学会使用PL/SQL developer;学会使用Procedure Builder。
2.1.SQL*PLUS在命令行运行SQL*PlusSqlplus [username]/[password] [@server]3.PL/SQL 基础学习目标:●了解PL/SQL块的基本结构以及PL/SQL块的分类;●学会在PL/SQL块中定义和使用变量●学会在PL/SQL块中编写可执行语句;●了解编写PL/SQL代码的指导方针;●了解Oracle 10g的新特征——新数据类型BINARY_FLOAT 和BINARY_DOUBLE,以及指定字符串文本的新方法。
3.1.PL/SQL 块简介3.1.1.PL/SQL块结构3.1.2.PL/SQL 块分类匿名块命名块子程序触发器3.2. 定义并使用变量3.2.1.标量变量3.2.2.复合变量3.2.3.参照变量3.2.4.LOB 变量3.2.5.非PL/SQL 变量3.3.编写 PL/SQL 代码3.3.1.PL/SQL 词汇单元分隔符标识符文本(数字文本,字符文本,字符串文本,布尔文本,日期时间文本)注释3.3.2.PL/SQL 代码编码规则标识符命名规则大小写规则代码缩进嵌套块和变量范围PL/SQL中可以使用的SQL函数4.使用SQL语句学习目标:学会使用SELECT语句去完成基本查询功能学会使用INSERT,UPDA TE和DELETE语句去操作数据库数据学会使用COMMIT,ROLLBACK和SA VEPOINT语句去控制事务学会使用SELECT语句去实现各种复杂查询功能(数据分组、连接查询、子查询、层次查询、合并查询等)4.1.使用基本查询处理NULL:函数nvl(expr1,expr2),nvl2(expr1,expr2,expr3)4.2.使用DML语句使用多表插入数据语法:INSERT ALL insert_into_clause [value_clause] subquery;INSERT conditional_insert_clause subquery;示例1:使用ALL 操作符执行多表插入INSERT ALLWHEN deptno=10 THEN INTO dept10WHEN deptno=20 THEN INTO dept20WHEN deptno=30 THEN INTO dept30WHEN job=’CLERK’ THEN INTO clerkELSE INTO otherSelect * from emp;示例2:使用FIRST 操作符执行多表插入INSERT FIRSTWHEN deptno=10 THEN INTO dept10WHEN deptno=20 THEN INTO dept20WHEN deptno=30 THEN INTO dept30WHEN job=’CLERK’ THEN INTO clerkELSE INTO otherSELECT * FROM emp;4.3.使用事务控制语句4.3.1.事务和锁4.3.2.提交事务4.3.3.回退事务设置保存点:savepoint a;或者exec dbms_transaction.savepoint(‘a’)取消部分事务Rollback to a;或者Exec dbms_transaction.rollback_savepoint(‘a’)取消全部事务:Rollback; 或者exec dbms_transaction.rollback() 4.3.4.只读事务4.3.5.顺序事务4.4.数据分组4.4.1.分组函数MaxMinAvgSumCountVarianceStddev使用分组函数注意事项:●当使用分组函数时,除了函数Count(*) 之外,其他分组函数都会忽略NULL行。
SQL学习笔记SQL账户被锁的解锁方法

SQL学习笔记:SQL账户被锁的解锁方法最近的工作当中遇到了一个小问题,就是上海网站建设的SQL账户密码失效了,使用service程序测试了一下,显示了如下的notice:Message: System.Data.SqlClient.SqlException: Login failed for user `dcp_prod`.Reason: The password of the account has expired.显然,这个是因为密码失效了,dcp_prod这个账户使用了密码失效策略,打开数据库查看这个账户的属性,果然,Enforce password policy和Enforce password expiration这两个属性被选中了。
现在只需要重新设置一下密码就可以了。
但是之后又出现了一个错误,提示如下:System.Data.SqlClient.SqlException:Login failed for user `dcp_prod` because the account iscurrently locked out.The system administrator can unlock it.(该帐户当前被锁定。
系统管理员可以解锁。
)上海网站建设该如何解决这个问题呢?locked out是锁住了,然后使用administrator站好去解锁,字面意思是这样的,照着提示区做,再次打开账户属性。
点击Status标签,果然Login is locked out属性被选中,取消选中,点击OK,回到程序中。
奇怪了,还是上面的locked out提示,打开属性查看,这个属性又一次被选中了。
这样连续来回了好几次都是这样,开始纳闷了。
后来在网上查,网上说有其他用户尝试连接数据库,我恍然大悟,是那个service程序在跟我争夺数据库。
这个service程序每3秒钟会连接一次数据库,进行相应的操作,在这中间如果尝试修改密码,账户会被锁定的。
SQL语言学习总结

SQL语言学习总结1. SQL(Structured Query Language)是一种用于管理关系数据库系统的标准语言。
通过SQL语句可以对数据库进行创建、查询、修改和删除等操作。
2. SQL语句主要分为四种类型:数据操作语言(DML),数据定义语言(DDL),数据控制语言(DCL)和事务控制语言(TCL)。
3. 数据操作语言(DML)主要用于对数据库中的数据进行查询和修改操作,常用的DML语句有SELECT、INSERT、UPDATE和DELETE。
4. 数据定义语言(DDL)用于定义数据库结构,包括创建表、修改表和删除表等操作,常用的DDL语句有CREATE、ALTER和DROP。
5. 数据控制语言(DCL)用于设置数据库用户的权限和角色,常用的DCL语句有GRANT和REVOKE。
6. 事务控制语言(TCL)用于管理数据库事务,常用的TCL语句有COMMIT、ROLLBACK和SAVEPOINT。
7. SQL语句可以通过执行顺序分为两种类型:批处理SQL和交互式SQL。
批处理SQL 一次执行多条SQL语句,而交互式SQL是一次执行一条SQL语句。
8. SQL语句可以使用通配符、操作符和函数来进行数据查询和处理。
通配符可以用来匹配模式,操作符用于比较和计算,函数用于处理数据和返回结果。
9. SQL语句可以使用条件语句和连接语句来进行复杂的数据查询和更新操作。
条件语句用于筛选数据,连接语句用于联结多个表进行查询。
10. 使用索引可以提高数据库的查询性能,可以通过创建索引来加快查询速度。
索引可以使用CREATE INDEX语句创建,也可以通过ALTER TABLE语句添加。
总的来说,学习SQL语言需要熟悉常用的语法、理解不同类型的SQL语句的用途和使用场景,并通过实践和练习来加强对SQL语言的理解和应用能力。
SQLServer物化视图学习笔记

SQLServer物化视图学习笔记⼀、基本知识索引视图实际上是⼀种将⼀组唯⼀值“物化”为群集索引形式的视图(⽩话是,给视图中的唯⼀值列加聚集索引,然后数据会存储在硬盘中),提⾼查询速度。
通过使⽤来⾃第⼀个索引的聚集键作为参考点,SQL Server还能在视图上建⽴额外的索引。
其限制如下:1. 如果视图引⽤了任何⽤户⾃定义函数,那么这些函数也必须是模式绑定的;2. 视图不可以引⽤任何其他的视图-只能引⽤表和UDF;3. 在视图中引⽤的所有表和UDF必须采⽤两部分的命名约定(例如:dbo..Customers),并且也必须具有和视图相同的所有者;4. 视图和视图引⽤的所有对象必须在相同的数据库中;5. 在创建视图和所有底层表时,必须打开ANSI_NULLS以及QUOTED_IDENTIFIER选项;6. 视图引⽤的任何函数必须是确定的;7、必须要加上WITH SCHEMABINDING, 就是绑定到架构. 8、创建完视图后, 必须紧跟着创建⼀个CLUSTERED聚集唯⼀索引,⽽且必须在第⼀列(第⼀列是唯⼀值,类似于主键那样). 9、只⽀持两部分命名的表或UDF, 如 dbo.SalesOrder.10. 涉及到多个表连接时, 不⽀持left join 或right join的写法, 只能⽤from...where的⽅式或inner join的⽅式连接. (这⼀点有时很要命只能⽤inner join太蛋疼)11. 不⽀持table.*这种懒省事的⽅式, 得⼀个⼀个把想要的列写清楚.--创建模式绑定视图CREATE VIEW PersonAge_vwWITH SCHEMABINDINGASSELECT Age,COUNT_BIG(*) AS CountAge FROM dbo.PersonTenMillionGROUP BY Age--为视图创建索引CREATE UNIQUE CLUSTERED INDEX ivPersonAgeON PersonAge_vw(Age)SQL Server中的索引视图也具有查询重写的功能, 所谓的查询重写,就是如果符合条件的数据在索引视图上,并且查询列都包含在在索引视图上,此时可以直接通过查询索引视图来替代基于原始表的查询。
sqlserver2012学习笔记

sqlserver2012学习笔记select ProductID, Name as ProductName, --using an alias'The list price for ' + ProductNumber + ' is′+convert(varchar,ListPrice)+′.′,−−usingtheconcatenationtojoincharacterend−to−end.′Thelistpricefor′+ProductNumber+′is ' + convert(varchar,ListPrice) +'.' as [Description] --using brackets to let SQL server conside the strin as a column namefrom Production.Product在where语句中⽤>,=,<等字符eg:select * from [Sales].[SalesOrderHeader]where SalesPersonID=275select * from [Sales].[SalesOrderHeader]where SalesOrderNumber='so43670' //string类型加单引号where语句中使⽤or或andeg:select SalesOrderID,OrderDate,SalesPersonID,TotalDue as TotalSalesfrom [Sales].[SalesOrderHeader]where SalesPersonID=275 and TotalDue>5000 and Orderdate between '2005-08-01' and '1/1/2006'like中使⽤%号 //%表⽰可以有,可以没有select * from [Production].[Product]where name like'Mountain'select * from [Production].[Product]where name like'%Mountain%' --Wildcard % matches any zero or more characters_下划线表⽰前⾯有⼀个不知道的字符select * from [Production].[Product]where name like'_ountain%'Where语句中使⽤in或not inselect * from [Production].[Product]where color in ('red','white','black')select * from [Production].[Product]where class not in ('H') -- same as using: <> 'H'//没有H的is null 与is not null--Topic 10select * from [Production].[Product]where size is nullselect * from [Production].[Product]where size is not nullor与and的理解Processing math: 100%。
Oracle_Plsql个人学习笔记总结

备注:以下是个人学习笔记总结,其实是本人容易忘记,工作中碰到的一些知识点,记录下来整理成笔记了,序号之间并不是按照某种类型划分的,都是随意的标记一下,希望对大家有所帮助。
昵称:阿杜笑傲江湖(其实就是个名字而已,并不江湖…)name:杜立鸿(不要冒充,万一哪天中奖了呢?)sex:爷们---------------------------废话不多说,GO,GO,Go……1.允许修改分区建(有时候分区键更新不了,需要以下这样处理,当然了分区键本来是不允许更新的,都得根据实际情况)alter table t1 enable row movement;2. 获取某一时间最近的时间sqlselect *from t_datetime twhere t.f_time - to_date('2018-09-06 10:10:00','yyyy-mm-ddhh24:mi:ss') =(select min(t.f_time - to_date('2018-09-06 10:10:00','yyyy-mm-ddhh24:mi:ss'))from t_datetime t);3. 1.创建一个object类型的数据库类型对象。
表示学生实体类型。
(注意:此类型必须定义为数据库对象级别的类型,而不能定义成包、函数级别的类型。
否则,函数外部代码是无法识别该类型的)。
CREATE OR REPLACE TYPE student_obj_type AS OBJECT(stu_no NUMBER, --学号stu_name VARCHAR2(255), --姓名stu_sex VARCHAR2(2),--性别score NUMBER--成绩);4.创建一个嵌套表类型的数据库类型对象。
表示学生实体集合类型。
该类型也将用作函数中定义的返回类型。
(注意:此类型必须定义为数据库对象级别的类型,而不能定义成包、函数级别的类型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基础教程
1、SQL SELECT 语句
SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
2、SQL SELECT DISTINCT 语句
关键词DISTINCT 用于返回唯一不同的值。
3、WHERE 子句
如需有条件地从表中选取数据,可将WHERE 子句添加到SELECT 语句。
4、AND 和OR 运算符用于基于一个以上的条件对记录进行过滤。
5、ORDER BY 语句用于对结果集进行排序。
6、INSERT INTO 语句用于向表格中插入新的行。
7、Update 语句用于修改表中的数据。
8、DELETE 语句用于删除表中的行。
高级教程
1、TOP 子句。
TOP 子句用于规定要返回的记录的数目。
对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。
2、LIKE 操作符
LIKE 操作符用于在WHERE 子句中搜索列中的指定模式。
4、IN 操作符。
IN 操作符允许我们在WHERE 子句中规定多个值。
5、BETWEEN 操作符
操作符BETWEEN ... AND 会选取介于两个值之间的数据范围。
这些值可以是数值、文本或者日期。
6、SQL Alias(别名)
假设我们有两个表分别是:"Persons" 和"Product_Orders"。
我们分别为它们指定别名"p" 和"po"。
现在,我们希望列出"John Adams" 的所有定单。
7、SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
●JOIN: 如果表中有至少一个匹配,则返回行
●LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
●RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
●FULL JOIN: 只要其中一个表中存在匹配,就返回行
8、SQL INNER JOIN 关键字(注释:INNER JOIN 与JOIN 是相同的)
在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
9、SQL LEFT JOIN 关键字(注释:在某些数据库中,LEFT JOIN 称为LEFT OUTER JOIN)LEFT JOIN 关键字会从左表(table_name1) 那里返回所有的行,即使在右表(table_name2) 中没有匹配的行。
10、SQL RIGHT JOIN 关键字(在某些数据库中,RIGHT JOIN 称为RIGHT OUTER JOIN)RIGHT JOIN 关键字会右表(table_name2) 那里返回所有的行,即使在左表(table_name1)
中没有匹配的行。
11、SQL FULL JOIN 关键字(在某些数据库中,FULL JOIN 称为FULL OUTER JOIN)只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
12、SQL UNION 操作符(默认UNION 操作符选取不同的值。
如果允许重复的值,请使用UNION ALL。
)UNION 操作符用于合并两个或多个SELECT 语句的结果集。
请注意,UNION 内部的SELECT 语句必须拥有相同数量的列。
列也必须拥有相似的数据类
型。
同时,每条SELECT 语句中的列的顺序必须相同。
13、SELECT INTO 语句
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
14、CREATE DATABASE 语句CREATE DATABASE 用于创建数据库。
15、CREATE TABLE 语句CREATE TABLE 语句用于创建数据库中的表。
16、SQL NOT NULL 约束
NOT NULL 约束强制列不接受NULL 值。
17、SQL NOT NULL 约束UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
18、SQL PRIMARY KEY 约束PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
19、SQL FOREIGN KEY 约束一个表中的FOREIGN KEY 指向另一个表中的PRIMARY KEY。
撤销FOREIGN KEY 约束
20、SQL CHECK 约束CHECK 约束用于限制列中的值的范围。
如果对单个列定义CHECK 约束,那么该列只允许特定的值。
如果对一个表定义CHECK 约束,那么此约束会在特定的列中对值进行限制。
21、SQL DEFAULT 约束DEFAULT 约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新记录。
22、CREATE INDEX 语句用于在表中创建索引。
在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
23、SQL DROP INDEX 语句我们可以使用DROP INDEX 命令删除表格中的索引。
24、ALTER TABLE 语句ALTER TABLE 语句用于在已有的表中添加、修改或删除列。
25、AUTO INCREMENT 字段我们通常希望在每次插入新记录时,自动地创建主键字段的值。
我们可以在表中创建一个auto-increment 字段。