MySQL阶段二——sql语句基础(3)

Outfile

注意:

Insert详解

delete和update相关

视图

01.视图创建

02.视图相关定义

03.视图创建详解

04.删除视图

05.视图查询

06.更新视图

07.视图的执行过程

触发器

01.定义触发器

02.操作触发器

03.注意

Outfile

将检索到的数据,保存到服务器的文件内。

通过:select * from outfile “文件地址” from XXXX;

注意:

1.可以自动创建文件,但是对已有文件不能操作。

2.生产的文件格式:默认使用制表符区分字段,用换行符区分记录,也会使用其他方式进行区分。

Insert详解

1.可以不将所有的字段插入数据,

2.如果插入部分字段,可以使用set语句:insert into teacher set t_name=’...’,c_name=’...’;

3.可以一次性插入多条语句,使用括号区分,逗号分开;

4.有主键冲突的时候,插入不成功,可以继续执行更新操作:insert into teacher(id,t_name,c_name) values(...) on duplicate key update t_name=””,c_name=””;

5.插入数据源可以是select语句查询到的数据;insert into teacher(..) select * from XXX;

6.如果字段不写,可以使用默认值;也可以强制使用default()函数或者default关键字使用默认值。

7.Replace:主键或唯一索引冲突,则替换;否则插入。

8.可以使用load data file导入数据:load data infile ‘文件路径’ into table tb_name;

delete和update相关

1.允许使用条件(删除符合条件的数据)

允许使用limit,限制删除的记录数,

常见的是limit 配合order by来使用,先将 结果排序,再删除固定数量的记录。

3.允许连接删除:先提供表名,再提供连接条件。

4.Truncate:

a) 不会返回删除的记录数

b) 重新自动增长主键

Delete:逐行删除

Truncate:删除表,新建表


视图

01.视图创建

Create table info_teacher(

Id int primary key auto_increment,

T_name varchar(10),

Salary decimal(10,2)

);

Create view v_teacher as select i,t_name from info_teacher;

02.视图相关定义

视图就是一张虚拟表,是一个存在与数据库中的虚拟表;视图本身没有数据,只是通过执行相关的select语句完成获得相应的数据。

03.视图创建详解

01)建立视图

Create view <视图名> [(<列名>,[,<列名>])]

As <子查询>

[with check option]

With check option表示对视图进行update、insert、delete操作时要保证视图的操作的行满足视图定义中谓词条件(即子查询中的条件表达式)。

组成视图的属性列名或者全部省略或者全部指定。在下面三种情况下必须指定视图列名:01.某个目标列不是单纯的属性名,而是聚集函数或者列表达式;02.多表连接时选出了几个同名列作为视图的手段;03.需要在视图为某个列启用更合适的名字。

定义基本表时,为了减少数据库的冗余数据,表中中存放基本数据,由基本数据经过各种计算派生出的数据一般是不存储的。创建视图也可以创建基本表中不存在的列,即创建派生列(比如avg(列名))。

视图可以创建在单个表上,也可以建立在多个基本表上。视图不仅可以建立在一个或者多个基本表上,也可以建立在一个或者多个已定义的视图上,或者建立在基本表和视图上。

04.删除视图

Drop view <视图名>[cascade];

05.视图查询

视图定义之后,用户就可以像对基本表一样对视图进行查询了。

视图消解:关系型数据库管理系统执行对视图的查询的时候,首先进行有效性检查,检查查询中涉及的表、视图是否存在。如果存在,则从数据字典中取出视图的定义,吧定义中的子查询和用户的查询结合起来,转换成等价的对基本表的查询,然后再执行修正了的查询。

06.更新视图

更新视图就是对视图进行crud操作,真正操作也会经历视图消解。为了防止通过视图对数据进行更新的时候,有意无意对不属于视图的基本表进行操作,可以在视图定义的时候加上With check option。

07.视图的执行过程

视图的执行算法:merge,temptable

指的是一个视图是在什么时候执行,依据哪些方式执行;

Merge:合并的执行方式,每当执行的时候,先将我们视图的sql与语句与外部查询视图的sql语句,混合在一起,最终执行;

Temptable:临时表模式,每当查询的时候,将视图所使用的select语句生成一个结果的临时表。再在当前的临时表内查询。

每当用户创建视图的时候,mysql默认使用一种undefined的处理算法;就是会自动在合并和临时表内进行选择。

触发器

01.定义触发器

Create trigger <触发器名称>

{before|after} <触发器名> on <表名>

Referencing new|old row as <变量> /*Referencing 指出引用的变量*/

For each {row|statement}

[when <触发条件>] <触发动作体>

02.操作触发器

删除:drop trigger<触发器名> on <表名>;

查看:show create trigger name;

03.注意

如果一个触发程序,由多条sql语句组成。

应该:1.语句组成语句块(begin end标识);2.语句块的语句需要独立的语句结束符,分号。

命令行:由于触发程序内使用分号作为语句结束符。那么当命令行客户端碰到分号时,就应该理解成触发程序内子语句结束,而不是整个创建触发器的语句结束。

应该通过修改命令行的语句结束符达到目的。

Delimiter语句可以完成设置语句结束符。

Delimiter $$

Create trigger ruxue after insert on student

For each row

Begin

Update class set stu_count=student_count+1;

Update class set cz_money=cz_money+20;

End

$$

Delimiter ;

Old:监听事件所在表上的数据,在事件发生之前时的数据;

New:监听表上,事件发生之后,新处理完毕的数据。

事件是insert时:不能使用old;事件为delete:不能使用new;

时间: 2024-10-11 00:09:25

MySQL阶段二——sql语句基础(3)的相关文章

MySQL阶段二——sql语句基础(2)

数据查询操作 01.创建数据表 (02-05练习) (连接查询练习使用) 02.单表查询 03.分组统计 04.嵌套查询 05.集合查询 06.连接查询 07.连接查询与集合查询的不同 数据查询操作 01.创建数据表 1)创建Student表 (2)创建Course表 (3)创建SC表 (02-05练习) create table student (    sno char(8) primary key,    sname char(8),    ssex char(2)not null,   

MySQL数据库:SQL语句基础、库操作、表操作、数据类型、约束条件、表之间的关系

数据库相关概念: 1. 数据库服务器:运行数据库管理软件的计算机 2. 数据库管理软件:MySQL.Oracle.db2.slqserver 3. 库:文件夹,用来组织文件/表 4. 表:文件(类似于excel),用来存放多行内容/多条记录 5. 记录:事物一系列典型的特征 6. 数据:描述事物特征的符号 MySQL数据库就是一个套接字软件,用来管理其他机器上的数据文件 MySQL介绍: MySQL是一个关系型数据库管理系统:就是一个基于socket编写的C/S架构胡软件 客户端软件 mysql

mysql数据中sql语句基础大全

在学习第一门数据库语言的时候,相比而言要比编程语言的逻辑性要差一点,更多的则是在背会记住的基础上熟练运用.首先来介绍mysql语言中需要背记的增删改查这些语句. /*---------------------------新增-------------------------*/ 查看现在有哪些数据库 show databases: 新建一个名为db_20的数据库: create database db_20; 使用这个数据库 use db_20; 查看数据库中的表  show tables; 新

MySQL学习(二)——SQL语句创建删除修改以及中文乱码问题

一.对数据库的操作 1.创建一个库 create database 库名; 创建带有编码的:create database 库名 character set 编码; 查看编码:show create database 库名; 2.删除一个库 drop database 库名; 3.使用库 use 库名; 4.查看当前正在操作的库 select database(); 二.对数据库表的操作 1.创建一张表 create table 表名( 字段名 类型(长度) [约束], 字段名 类型(长度) [

精妙SQL语句 基础

精妙SQL语句SQL语句先前写的时候,很容易把一些特殊的用法忘记,我特此整理了一下SQL语句操作,方便自己写SQL时方便一点,想贴上来,一起看看,同时希望大家能共同多多提意见,也给我留一些更好的佳句,整理一份<精妙SQL速查手册>,不吝赐教! 一.基础1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname 3.说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC s

MySQL基本的Sql语句

一 . 常用mysql命令行命令 1 .启动MYSQL服务  net start mysql 停止MYSQL服务  net stop mysql 2 . netstat –na | findstr 3306 查看被监听的端口 , findstr用于查找后面的在端口是否存在 3 . 在命令行中登陆MYSQL控制台 , 即使用 MYSQL COMMEND LINE TOOL 语法格式 mysql –user=root –password=123456 db_name 或 mysql –uroot –

SQL Server之 (二) SQL语句 模糊查询 空值处理 聚合函数

(二) SQL语句  模糊查询  空值处理  聚合函数 自己学习笔记,转载请注明出处,谢谢!---酸菜 SQL :结构化查询语言(Structured Query Language),关系数据库管理系统的标准语言. Sybase与Mircosoft对标准SQL做了扩展:T-SQL (Transact-SQL); 注:①SQL对大小写的敏感取决于排序规则,一般不敏感; ②SQL对单引号的转义,用两个单引号来表示一个单引号; ③SQL执行顺序: 1→2→3→4 select  * ---------

SQL语句基础之 管理数据库,表 和 数据

MySQL中的基本sql语句 MySQL中主要有三个大的对象,第一个是数据库,有了数据库后,我们才能在数据库里面建表,因为Mysql是关系数据库,它的数据都会以记录的形式存到表里,所以第二个是表,然后第三个才是数据.下面我们根据这个关系来学习一下mysql中的sql语句~ Sql语句管理数据库 1.查看Mysql中有哪些数据库 语句:show databases 2.创建一个数据库 语句: create database vmaxtam default character set utf8;--

怎样在dos里进入mysql,执行sql语句

1.进入mysql bin目录下,执行mysql.exe 2.用mysql -uroot -p登陆mysql之后就可以使用 怎样在dos里进入mysql,执行sql语句,布布扣,bubuko.com