=============================【视图】=================================
几个知识点:
视图降低了查询效率,只简化了用户操作。
对视图的操作最终都会转换为对基本表的操作。
视图可以提高安全保障以及逻辑独立性。
1,从单个表派生出来的视图。
2,基于多个基本表的视图。
3,基于视图的视图。
4,分组视图。
5,修改视图:ALTER VIEW 视图名
6,删除视图:DROP VIEW 视图名
7,查看视图:
查看视图的结构 : desc 视图名
查看视图的定义: show create view 视图名 / show create table 视图名
显示所有视图(表): show tables
查看所有视图的详细信息:select * from information_schema.views
8,创建视图:
CREATE VIEW 视图名
AS
SELECT语句
注:视图名必须唯一
当子查询视图含有虚拟列(例:year(now())-year(sbirth))时,必须指定列名表。
有的视图没办法更新,对视图的更新最终会转化为对表的更新(必须要唯一有意义)。
9,通过视图对表增删改:
查询视图:SELECT FROM WHERE
通过视图向表中添加数据:INSERT INTO 视图名 VALUES( )
通过视图更新表中数据:UPDATE 视图名 SET 字段名=字段值 WHERE条件
通过视图删除表中数据:DELETE FROM 视图名 WHERE条件
ps:不能同时修改来自两个或者多个基表的视图数据。
10,通过视图向基表中插入或更新数据,为保证数据正确性,可以在视图定义中添加 :
with check option
with cascaded check option(较为严格)
with local check option(较为宽松)
11,检查视图:更新数据时,只有满足检查条件的更新语句才能成功执行。
12,视图更新条件:唯一有意义的转化为对基本表的更新。
=============================【MYSQL 编程基础】===========================
【1,标识符】:万能符号反引号字符(“ ` ”)
【2,注释】:第一,说明代码的含义,增强代码的可读性。
第二,可把程序中暂时不用的语句注释掉。
mysql的注释有三种:
(1) -- (两个减号,注意--后面有一个空格):用于注释单行。例如:-- uuu
(2) #用于注释单行。
(2) /*......*/用于注释多行。
【3,常量】
字符串常量、数值常量、日期时间常量、布尔型、二进制常量、十六进制常量以及NULL。
重点:
'14:30:24'是一个时间常量,'2008-05-12 14:28:24'是一个日期时间常量,
日期时间常量的值必须符合日期、时间标准。
例如'1996-02-31'是错误的日期常量。(2月没有31号)
-----------------------------seelect作用----------------------------------
查询:select from
调用函数:select 函数名( )
显示变量/常量:select 变量/常量
定义变量
说明:使用select语句显示布尔值true或者false时,会将其转换为字符串“0”或者字符串“1”。
--------------------------------------------------------------------------
hex( ):将一个字符串或数字转换为十六进制格式的字符串。
例如:select hex('MySQL');
NULL值可适用于各种字段类型,它通常用来表示“值不知道”等意义。
NULL值参与算术运算、比较运算以及逻辑运算时,结果通常为NULL。
select null>0,null+1,null and 0,null and 1
显示结果为:null null 0 null
【4,变量】:
1.系统变量:由系统定义和维护,变量名前加“@@”。
select @@version;
show variables like ‘@@version’;
系统变量分为会话系统变量以及全局系统变量。(静态变量(值不可更改)属于特殊的全局系统变量。)
2.用户自定义变量:由用户定义和使用。
1)用户会话变量(以@开头)
2)局部变量(不以@开头)
查看所有全局系统变量:show global variables;
查看所有会话系统变量以及所有全局系统变量:show session variables;
查看系统变量的值:
方法一:show命令(只能显示系统变量):
show global variables like ‘全局变量名’
show session variables like ‘会话变量名’
show variables like ‘变量名’
Like表示进行模糊查询,采用通配符%表示任意多个字符,_表示任意一个字符。
方法二:select命令:Select @@‘变量名’
设置全局系统变量的值的方法
set @@ global.变量名 =变量值
set global 变量名 =变量值
变量值可是是默认值default、on、off或者具体取值。
----------------------------------【用户变量】---------------------------------
用户会话变量:用户在会话期间定义的变量。
set @u=888;
select @y=null; 结果为:null。
不要指定数据类型。
一般情况下,用户会话变量的定义与赋值同时进行。
【方法 1】:使用SET命令定义变量【必须同时赋值】
(SET语句一次可以定义多个变量)
语法:set @变量名1 = 表达式
例: set @x = 'This is my test',@y=666,@z='2010-5-19'
select @x,@y,@z
【方法2】: 使用SELECT命令定义变量的同时赋值
格式1: SELECT @变量名1:= 表达式
格式2:select 表达式1,表达式2 into @变量1,@变量名2
第二种语法格式中需要使用“:=”赋值语句,原因在于“=”是为“比较”保留的。
注意:使用select命令定义可以不赋值,系统会自动分配NULL值。
例:select @xxx=null;结果为null
【用户会话变量与SQL语句】
变量的作用:传递查询结果和查询条件。
【例1:查询学生总人数,将查询结果赋给变量student_count,并显示出来。】
法一:Set @student_count=(select count(*) from student)
Select @student_count
法二:Select @student_count:=( select count(*) from student)
ps:不同之处在于“:=”。
法三:Select @student_count:=count(*) from student
法四:Select count(*) into @student_count from student
Select @student_count
法五:Select count (*) from student into @student_count
Select @student_count
【例2:查询2012001号学生的信息,并显示出来。】
Set @student_no=‘2012001’
Select * from student where student_no = @student_no
注:利用用户会话变量传递查询结果和条件。
------------------------------------------------------------------------------------------
局部变量:declare命令,必须指定局部变量的数据类型,必须定义在程序里。
(程序有:例如函数、触发器、存储过程、事件)。
declare x int;
作用范围:局部变量(经常用)---》当前程序;
用户会话变量(会相互影响)---》整个会话。
【5,运算符】
算术运算符、比较运算符、逻辑运算符以及位操作运算符。
2=null,结果仍然为null。
【6,语句块】:begin end
【7,重置命令结束标记】:delimiter 命令可以重置命令结束符。
delimiter $$
select *
from student
where student_name like '张_'$$