Head First SQL读书笔记
- 格式:docx
- 大小:2.82 MB
- 文档页数:10
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子句用于对分组后的结果进行筛选。
⼀句话的事⼉,Headfirst设计模式head first 设计模式,是⽐较有趣的⼀本设计模式的书。
在学校⾥看书和在⼯作时看书,意义是不⼀样的。
在学校时是为读书⽽读书,我们可以从0到1,我们有的是时间。
但是⼯作后就不⼀样。
我觉得这时的书更像是打通⾃⼰任督⼆脉的武功秘诀。
在平时⼯作中,杂七杂⼋地学了⼀些东西,但是却不能融会贯通。
所以还需要通过书来厘清你的思路。
这是写本⽂的出发点,也是我的碎碎念!看完该书后,转换成⾃⼰的语⾔,再表达出来,可能有错(那是⼀定的),但是,有总⽐没有好。
如果有同学能够从中得到些启发,也算是⾃⼰的⼀种幸运吧!我竟试图以⼀句话来描述⼀个设计模式!1. 策略模式!将统⼀的东西作为基类,可变的东西⾏为独⽴出来,在基类中通过变量进⾏引⽤,通过委托变量的⽅式,使⽤setter⽅法将委托变量改变,使其具有⾏为可变性。
⾯向接⼝编程,⽽⾮⾯向类编程。
其好处是,⽤同样的接⼝,通过不同⾏为类的传⼊产⽣不同的效果,便以改变⾏为变得容易。
2. 观察者模式!类似于发布-订阅模式。
存在注册服务,通知的过程。
其实现⽅式可以理解为,注册服务时,将观察者加⼊到队列当中,当主题发⽣变更时,由主题主动依次从观察者队列中依次调⽤,从⽽达到通知主动推送的作⽤。
其好处是,观察者随时注册观察可以实时收到消息,⽽被观察者对此⼀⽆所知,从⽽在达到通知的同时也解藕了。
3. 装饰者模式!以某对象为主要对象,⽣成后,将其传⼊装饰者构造函数中,经过装饰后,再⾏输出的模式。
该模式,可以许多散乱的⽅法独⽴组装出来,⽽不会影响其他变化,该模式是通过继承来实现的。
典型的装饰者模式运⽤,java io 类的继承,有多个主类,及多个装饰类,从⽽⽅便⽤户操作想要的⽅法。
其好处是,在⼤⽅向不变的情况下,可以反复更改主要的⾏为结果,对于⼀些附加类的变化,可以很⽅便地通过该模式进⾏数据再加⼯。
4. ⼯⼚模式!分为简单⼯⼚模式-⼯⼚模式-抽象⼯⼚模式。
Head First 设计模式学习笔记(一)public absact class Duck { FlyBehavior flyBehavior;QuackBehavior quackBehavior; public voFlyBehavior(FlyBehavior fb) { flyBehavior = fb; public void setQuackBehavior(QuackBehavior qb) { quackBehavior = qb; void perfoQuack(){ quackBehavior.quack(); voidperformFly(){ flyBehavior.fly(); void swim(){//游泳System.out.print("游泳ing..."); abstract void display(); //展示外观 package com.ch; public interface FlyBehavior { void fly(); //飞翔动作 package com.ch; public interfaceQuackBehavior { void quack(); //叫声 package com.ch; public class FlyNoWay implements FlyBehavior{ @Override public void fly() { System.out.println("我是不会飞的鸭子"); packagecom.ch; public class FlyWithWings implements FlyBehavior{ @Override public void fly(){ System.out.println("我是会飞的鸭子"); package com.ch; public class Quack implements QuackBehavior{ @Override public void quack() { System.out.println("呱呱叫"); package com.ch; public class Squeak implementsQuackBehavior{ @Override public void quack(){ System.out.println("吱吱叫"); package com.ch; public class MallardDuck tends Duck { public MallardDuck(){ quackBehavior = new Quack(); flyBehavior = new FlyWithWings(); @Override void display(){ System.out.println("....");第1页共1页。
《HeadFirst设计模式》阅读笔记.第七章...2010-01-21《Head First设计模式》阅读笔记.第七章文章分类:Java编程1.适配器(Adapter)模式部分*OO适配器和真实世界的适配器扮演者同样的角色:将一个接口转换成另一个接口,以符合客户的期望。
*适配器(Adapter)类看起来很像命令(Command)模式中命令接口的实现类,只不过它不被作为参数传递。
Java代码1.----DuckAdapter类----2.public class DuckAdapter implements Turkey {3.private Duck duck;4.5.public DuckAdapter(Duck duck) {6.this.duck = duck;7.}8.9.public void goggle() {10.duck.quack();11.}12.13.public void fly() {14.duck.fly();15.}16.}17.------------适配器模式:将一个类的接口,转换成客户希望的另一个接口。
适配器让原本接口不兼容的类合作无间。
*适配器模式可以让客户从实现的接口解耦。
*适配器(Adapter)模式充满着良好的OO设计原则:使用对象组合,以修改的接口包装被适配者;这种做法还有额外的优点,那就是被适配者的任何子类都可以搭配着适配器使用。
*适配器(Adapter)分为“对象(Object)”适配器和“类(Class)”适配器两种。
*在类适配器中,适配器继承了目标(Target)和被适配者(Adaptee);而对象适配器中,适配器利用组合的方式将请求传送给被适配者。
*类适配器是基于多重继承实现的,因为Java不支持多重继承,因此无法做到。
*由于类适配器使用了继承的方式,所以它的优点是不需要整个实现被适配者,必要的时候还可以覆盖被适配者的行为。
Java代码1.----练习。
head first java读后感
《Head First Java》读后感
《Head First Java》是一本非常值得推荐给想要学习Java编程的读者的书籍。
在阅读过程中,我感受到了作者真诚的教学态度和丰富的编程经验。
首先,这本书以轻松幽默的方式向读者介绍了Java编程的基础知识。
不同于其他枯燥乏味的编程教材,本书采用了大量有趣的图片、插图和漫画,使得学习过程变得有趣又易懂。
通过生动的场景和形象的比喻,读者能够更容易地理解抽象的编程概念。
其次,本书的学习方法也非常实用。
每个章节都以问题和挑战开始,通过解答这些问题和挑战来逐步学习和掌握Java编程技巧。
这种基于问题驱动的学习方法让读者能够更加深入地理解和应用所学知识,而不仅仅是被动地接受语法和规则。
另外,本书还有很多实用的实例和案例,让读者能够将所学知识应用到实际的项目中。
这些案例涵盖了各种不同的应用场景,从简单的Hello World程序到复杂的图形界面和网络应用程序,读者可以通过实践来提高自己的编程能力。
总体而言,我认为《Head First Java》是一本非常好的Java入门书籍。
无论是初学者还是有一定编程基础的读者,都可以从中受益匪浅。
这本书不仅教授了Java的语法和规则,更重要的是培养了读者良好的编程思维和解决问题的能力。
我强烈推荐给所有对Java编程感兴趣的读者阅读这本书。
1、创建数据库CREATE DATABASE db_name;2、删除数据库DROP DATABASE db_name;3、创建数据库表CREATE TABLE tbl_name(col_name DataType [NOT NULL | NULL] [DEFAULT default_value][AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY][COMMENT ‘string’] [reference_definition],[CONSTRAINT [symbol]] PRIMARY KEY (index_col_name, …),[CONSTRAINT [symbol]] UNIQUE (index_col_name, …),[CONSTRAINT [symbol]] FOREIGN KEY (index_col_name, …) [ref_def],INDEX [index_name] (index_col_name, …),CHECK (expr));注:(1)查看表结构:DESC tbl_name;(2)查看创建表的SQL语句:SHOW CREATE TABLE tbl_name;(3)需要修改的数据列不适合作为主键,因为主键参照完整性使其不能进行修改;4、修改数据库表ALTER TABLE tbl_nameRENAME new_tbl_nameADD [COLUMN] column_definition [FIRST | AFTER col_name]CHANGE [COLUMN] old_col_name column_definition [FIRST | AFTER col_name] MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]DROP [COLUMN] column_nameADD INDEX [index_name] [index_type] (index_col_name [DESC], …)DROP INDEX index_nameADD PRIMARY KEY (index_col_name, …)DROP PRIMARY KEYADD [CONSTRAINT [symbol]]FOREGIN KEY (index_col_name, …) [reference_definition]DROP FOREIGN KEY fk_symbol;注:(1)、FIRST关键字还可以用其它序数词;(2)、AFTER关键字还可以用BEFORE;(3)、reference_definition的定义如下:REFERENCES parent_tbl_name (pk_col_name, …);(4)、index_col_name:col_name[(length)] [ASC | DESC];(5)、CHANGE能修改列的名称而MODIFY不能;5、删除数据库表DROP TABLE tbl_name;6、创建索引CREATE INDEX index_nameON tbl_name (index_col_name, …);7、删除索引DROP INDEX index_name ON tbl_name;8、查询数据库表中记录SELECT expr, …FROM table_referencesWHERE where_conditionGROUP BY col_name [ASC | DESC], …HAVING where_conditionORDER BY col_name [ASC | DESC], …;注:(1)SQL WHERE子句中的比较操作运算符:=,<>,<=,>=(2)SQL WHERE子句中的条件表达运算符:A.AND、OR、NOT,NOT放在WHERE、AND、OR的后面B.NULL值的比较,IS NULL和IS NOT NULLC.查找列表数据,IN和NOT IND.区间查找,BETWEEN … AND …(闭区间)E.字符串通配符,LIKE %或_(3)字查询中,EXISTS、NOTEXISTS(4)集合运算:INTERSECT,EXCEPT,UNION、UNION ALL9、插入数据库表记录INSERT INTO tbl_name [(col_name, …)]VALUES (expr, …), (…);INSERT INTO tbl_name [(col_name, …)]SELECT …;注:(1)SQL语句中的字面量,非数字类型,如CHAR、VARCHAR、BLOB、DATE等,需要用单引号引起来(也可以用双引号),若没有引起来则会发生错误;而数字类型,如DEC,INT则不需要用单比上不足引起来,虽然引起来了不会出错,但实际是不正确的,不符合规范;单引号(‘)的字面量有两种表示方式\’和‘’(两个单引号)。
sql必知必会读后感
摘要:
一、全文概述
二、SQL基础概念与重要性
三、SQL学习的挑战与心得
四、推荐与建议
正文:
【一、全文概述】
在这篇文章中,我们将谈论关于SQL必知必会这本书的读后感。
文章将分为四个部分,分别是SQL基础概念与重要性,SQL学习的挑战与心得,以及推荐与建议。
通过本文,我们希望为广大读者提供有关SQL学习的有用信息和建议。
【二、SQL基础概念与重要性】
SQL(结构化查询语言)是一种用于管理关系型数据库的编程语言。
它具有简洁、高效、可读性强等特点,被广泛应用于各个行业的数据处理和分析工作中。
掌握SQL语言不仅有助于更好地管理数据库,还能提高数据处理效率,为企业带来实际价值。
【三、SQL学习的挑战与心得】
在学习SQL过程中,可能会遇到一些挑战,如理解SQL基础概念、掌握各种查询语句、处理数据类型兼容性问题等。
要克服这些挑战,需要不断学习和实践。
通过实际操作,我们可以更好地理解SQL的原理和应用,从而提高自
己的技能水平。
【四、推荐与建议】
对于想要学习SQL的读者,我们推荐阅读《SQL必知必会》这本书。
该书详细介绍了SQL的基础知识和高级技巧,适合初学者和有经验的开发者阅读。
此外,我们还建议参加在线课程、加入技术社区、阅读相关博客和文章,以便在实践中不断学习和提高。
通过本文,我们希望能够帮助读者更好地了解SQL的学习过程和技巧,为大家在SQL领域的发展提供参考和指导。
《HeadFirst设计模式》阅读笔记.第十三章2010-04-13《Head First设计模式》阅读笔记.第十三章文章分类:Java编程1、与设计模式相处模式:是在某种情境下(Context),针对某个问题的某种解决方案。
连连看解答:引用------------------------------------------装饰者(Decorator)模式:包装一个对象,以提供新的行为。
状态(State)模式:封装了基于状态的行为,并使用委托在行为之间切换。
迭代器(Iterator)模式:在对象的集合之中游走,而不暴露集合的实现。
外观(Facade)模式:简化一群类的接口。
策略(Strategy)模式:封装可以互换的行为,并使用委托来决定使用哪一个。
代理(Proxy)模式:包装对象,以控制对此对象的访问。
工厂方法(Factory Method)模式:允许客户创建对象的家族,而无需指定他们的具体类。
适配器(Adapter)模式:封装对象,并提供不同的接口。
观察者(Observer)模式:让对象能够在状态改变时被通知。
模板方法(Template Method)模式:由子类决定如何实现一个算法中的步骤。
组合(Composite)模式:客户用一致的的方式处理对象集合和单个对象。
单态/单件(Singleton)模式:确保有且只有一个对象被创建。
抽象工厂(Abstract Factory)模式:由子类决定要创建的具体类是哪一个。
命令(Command)模式:封装请求成为对象。
------------------------------------------Sharpen your pencil解答-模式的分类:引用------------------------------------------创建型:工厂方法(Factory Method)、抽象工厂(Abstract Factory)、单态/单件(Singleton)。
《Head.First设计模式》读书笔记目录1、创建型设计模式 (1)1.1工厂方法Factory Method【类】与抽象工厂Abstract Factory【对象、chapter 4】 (1)1.2单件Singleton【chapter5、对象】 (2)2、结构型设计模式 (2)2.1适配器Adapter【chapter7、类/对象】 (2)2.2组合Composite【chapter9、对象】 (2)2.3装饰者Decorator【chapter3、对象】 (2)2.4外观Facade【chapter7、对象】 (3)2.5代理Proxy【chapter11、对象】 (3)3、行为型设计模式 (3)3.1模板方法Template Method【chapter8、类】 (3)3.2命令Command【chapter6、对象】 (3)3.3迭代器Iterator【chapter9、对象】 (4)3.4观察者Observer【chapter2、对象】 (4)3.5状态State【chapter10、对象】 (4)3.6策略Strategy【chapter1、对象】 (4)4、与设计模式相处 (5)1、创建型设计模式1.1工厂方法Factory Method【类】与抽象工厂Abstract Factory【对象、chapter 4】(1) 工厂方法Factory Method:定义:由子类决定要实例化的类是哪一个。
让类把实例化推迟到子类。
实例:拓展披萨工厂,有各地风味的加盟店。
实现:分为Product(产品类披萨)和Creator(创建者类PizzaStore)两个类层级,都有许多具体的子类,每个子类都有自己特定的实现。
相关:“依赖倒置原则Dependency Inversion Principle”【6】。
要依赖抽象,不要依赖具体类。
PizzaStore是高层组件、比萨实现是低层组件,前者依赖后者。
head first中所有的设计原则在《Head First 设计模式》一书中,提到了以下几种设计原则:
1. 单一职责原则:一个类应该只有一个引起变化的原因。
也就是说,每个类应该只有一个职责,只负责一项功能。
2. 开放封闭原则:软件实体(类、模块、函数等等)应该是可以扩展的,但是不可修改。
也就是说,新的功能应该通过添加新的模块或者子类来实现,而不是修改现有的代码。
3. 里氏替换原则:如果S是T的子类,则程序中使用T类型的对象的地方都可以用S类型的对象来替换,而不会引起任何不期望的后果。
4. 接口隔离原则:客户端不应该依赖它不使用的接口。
接口隔离原则可以降低客户代码与实现细节之间的耦合度,使得客户端更加灵活和易于维护。
5. 依赖倒置原则:高层模块不应该依赖于低层模块,它们都应该依赖于抽象。
抽象不应该依赖于细节,细节应该依赖于抽象。
6. 迪米特法则:一个对象应该对其他对象保持最少的了解。
也就是说,一个对象应当尽可能少的与其他对象直接相互作用,不应该强制具体的对象直接通信,而应该使用一种规约方式(例如抽象类或接口)来进行间接通信。
7. 合成复用原则:尽量使用合成/聚合,而不是继承关系达到软件复用的目的。
以上是《Head First 设计模式》中提到的设计原则,这些原则可以帮助我们设计出更加健壮、可维护和可扩展的软件系统。
1.数据库的三个范式
a)1NF:强调的是列的原子性,即列不能够再分成其他几列。
b)2NF:首先是1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包
含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。
(单一主
键或者所有列都是主键的满足1NF的数据库一定满足2NF)
c)3NF:首先是2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。
即
不能存在:非主键列A 依赖于非主键列B,非主键列B 依赖于主键的情况。
2.创建外键
3.进阶SELECT
1.CASE语句
2.ORDER BY 语句(可以在后面加DESC)
多列排序:ORDER BY 后面依次加入要排序的行
3. 统计函数:SUM, MAX, MIN, AVG等
4. 分组关键词:GROUP BY。
5. 统计行数COUNT()
6. 只选择不重复的:DISTINCT数据
7. 限制结果的数量:LIMIT(编号从1开始)或者TOP(可以选择前百分之几)
一个参数:结果集数量
两个参数:从第几个开始,结果集数量
8. 模糊查询:LIKE
%:匹配多个字符
?:匹配一个字符
9. 字符串限制的查询:SUB_STRING()….
10. 数据结构转换:SELECT CASE([column_name] AS TYPE) 4.想新建表,然后把查询到的东西插入新表,应该怎么写
1.
2.
3.
3.INNER JOIN : 连接两张表
SELECT mc.email, p.profession
FROM my_contacts AS mc
INNER JOIN
profession AS p
WHERE mc.contact_id=p.prof_id
SELECT st_name, mc.first_name, s.status
FROM my_contacts AS mc
INNER JOIN
status AS s
WHERE mc.contact_id=s.status_id
SELECT cs.cid, s.seeking
FROM cs
NATRUAL JOIN
S
4. 自然联接:NATURAL JOIN(用于联接的两张表里有相同名称的行)
5. 子查询:在查询中嵌套查询
1.返回多行数据:IN 或者NOT IN
2.返回一行数据:=
3.判断是否大于/小于所有的数据:ALL
4.判断大于返回值中最小值或者小于返回值中最大值:ANY/SOME
5.经典例子:在我的通讯录中,谁赚得钱最多?
6.非关联子查询:内层查询不需要来自外层就可以独自运行
7.例子:列出每个邮编覆盖的地区收入最高的人
8.关联子查询
1.常用法:找出外层查找中,不存在在关联表里的记录
例子:找出所有在my_contacts里但是不在job_current里的人
7. 外联接
1. 更注重两张表之间的关系。
1. LEFT OUTER JOIN【左外联接】接受左边表的所有行,并用这些行和
右表的行进行匹配,特别适合一对多关系
2. 例一
与内连接不同之处:外连接一定会提供数据行,无论该行是否能在另一
个表中找到匹配行(没有则返回NULL,有多行则返回多行,有NULL的
列对应的一定是右表)
3. 右外连接=左外连接+交换表的位置
4. 自引用外键:主键在同一张表里做外键
5. 自联接:与自身进行外联接
(子查询版)
8. 联合查询
1. 例一:查询三张表
2.SQL联合规则
1.每个SELECT语句中列的数量必须一致
2.每个SELECT语句包含的表达式与统计函数必须相同
3.SELECT语句的顺序不重要
4.SQL默认清除重复值(使用UNION ALL查看重复值)
5.列的数据类型必须相同或者可以互相转换
3.INTERCEPT:只返回两个查询共有的记录(不在MYSQL里)
4.EXCEPT:只返回在第一个查询中有的记录(不在MYSQL里)
9. 联接VS子查询
10. 检查数据CHECK
1. 之前学过的:NOT NULL, UNIQUE, PRIMARY KEY,….
2. CKECK: 只允许输入某些特定的值,可以使用所有WHERE语句能使用的词
(不在MYSQL里,也是惨)
11. 视图VIEW
1. 格式:
CREATE VIEW [name] AS
[一大堆查询]
DROP VIEW [name]
2. 查看VIEW: SELECT * FROM [name]
3.本质:虚拟表,但不会保存在数据库
4.使用视图的原因:
a)视图把复杂的查询简化成了虚拟表
b)即使数据库变化,也不会破坏依赖数据库的程序
c)视图可以向使用者隐藏数据
5.可以使用视图做UPDATE, DELETE, DROP等,但是一般传统方法更好
6.WITH CHECK OPTION: INSERT和DELETE会被检查是否符合WITH CHECK
OPTION之前的WHERE子句,因此也可以模拟CHECK
12. TRANCATION
1. 判断一组操作是否是TRANCATION的条件(ACID)
A:atomic原子性,要么都完成,要么一个也不做
C:consistancy一致性,必须保证数据一致
I:isolation隔离性:每次操作都应该看到一致的数据库
D:durability持久性:数据库应正确储存数据
2. 存贮事务必须是BDB或者innoBDB两种引擎。
改变引擎:ALTER TABLE [name] TYPE=innoDB
4.使用事务
a)START TRANCATION(开始事务,所有操作记录进日志)
b)………………
c)COMMIT(提交修改)/ROLLBACK(回滚)
13.账号管理
1. root账号:一定要设置密码
2. 创建用户(新创建的用户没有任12何权限)
2.5. 确认当前账号
SELECT CURRENT_USER;
3. GRANT语句
1. 简单的授予权限
GRANT [SELECT/DROP/ALTER/DELETE/UPDATE/ALL]
ON [(database_name.)table_name/database_name.*(DATABASE内所有
表)/*.*(所有表)]
TO [user_name](不能使用ALL,必须指定用户名)
2. 只授予某一列的权限
例子:GRANT SELECT(email, tel) ON my_contacts TO Jack;
除SELECT以外,几乎一切只针对列的权限都不太有用
3. 允许user把自己所有的权限GRANT给别人(只能给操作权限,不能把
WITH GRANT OPTION的权限再给出去)
(GRANT STATEMENT) WITH GRANT OPTION
4. 撤销权限
REVOKE [SELECT/DROP/ALTER/DELETE/UPDATE/ALL]
ON [(database_name.)table_name/database.*(DATABASE内所有表)]
FROM [user_name](不能使用ALL,必须指定用户名)
5. 不允许user把自己的权限再给出去
REVOKE GRANT OPTION ON [SELECT/DROP/ALTER/DELETE/UPDATE/ALL]
ON [(database_name.)table_name/database.*(DATABASE内所有表)]
FROM [user_name](不能使用ALL,必须指定用户名)
●GRANT OPTION被撤销后,用被撤销用户那里得到的权限也会一并被
撤销(默认)
●可以精确指定撤销范围
⏹REVOKE GRANT OPTION 。
FROM [] CASCADE
(一起撤销)
⏹REVOKE GRANT OPTION 。
FROM [] RESTRICT
(如果被撤销用户已经把权限授予过别人,则会返回错误,权限
保留)
4. 不要使用共享账号,涉及到多人多层次权限时,应使用角色(ROLE)实现
1. 创建角色
CREATE ROLE [role_name](不在MYSQL中)
DROP ROLE [role_name]
2. 给予权限:完全和单人用户一样
3. 把角色赋予用户
GRANT [role_name] TO [user_name]
REVOKE [role_name] FROM [user_name]
4. 把授予角色的权力赋予用户
GRANT [role_name] TO [user_name] WITH ADMIN OPTION
REVOKE ADMIN OPTION ON [role_name] FROM [user_name]
[RESTRICT/CASCADE]
5. 使用中的角色也可以被卸除,同时被赋予角色的用户丧失角色权限
6. 用户可身兼多个角色,但是否定性的授予优先
14. 其他类型
15.临时表:CREATE TEMPORARY TABLE
使用临时表的原因:
1.保存中间结果
2.捕捉某个时刻表的状态
3.帮助整理数据结构
16. 其他数字函数
17. 索引:索引占用额外空间,但是加在常用的列上会加快搜索速度。