MySQL基本操作(四卡塔尔其余基本操作

发布时间:2019-11-16  栏目:SQL  评论:0 Comments

使用Sql_server成立表,视图,触发器,存款和储蓄进程,函数等基本操作。

索引:
目录是风流罗曼蒂克种与表有关的结构,它的作用相当于书的目录,能够依照目录中的页码快捷找到所需的剧情。

 

当表中有大批量记录时,若要对表实行询问,没有索引的情事是全表寻觅:将具有记录生龙活虎黄金时代抽取,和查询条件举办逐项相比,然后再次来到满意条件的笔录。那样做会消耗一大波数据库系统时间,并促成大气磁盘
I/O 操作。

create table test1(                  /* 创建一个表 */
    num int
)   

alter table test1                    /* 修改表 */
alter column num int not null        /* 修改某一列 */


alter table test1                    /* 修改表 */
add constraint pk_num                /* 添加约束 */
primary key(num);                    /* 主键约束 */


create trigger insert_test1          /* 创建触发器 */
on test1 for insert                  /* 当test1有添加数据时触发 */
as                                   /* as 以后时sql语句 */
begin
    print 'success!'
end

select * into test1Bak               /* 创建备份表 */
from test1
where 1 = 2                          /* 备份为空表 */



create view s1                      /* 创建视图 s1 */
        as                           /* 注意,这个as不可省略 */    
        select *from jk


create proc procSumByPurchase                
    @Gname nvarchar(50),                           /* 指定多个参数 */
    @name nvarchar(50),
    @num int output                                /* 输出参数 */
as
begin
    select @num = (
        select sum(s.Sell_num)
        from Sell s inner join Goods g
        on g.Goo_no = s.Goo_no
        group by g.Goo_name, s.Sell_date, g.Pro_name
        having g.Goo_name = @name
        and g.Pro_name = @Gname
        and    year(s.Sell_date) = 2018            /* date筛选年份 */
        and month(s.Sell_date) = 1                 /* date筛选月份 */
    )
end

declare @num1 int                        
exec procSumByPurchase '联想公司', '拯救者15.6英寸轻薄游戏本', @num1 output
select 'SumNum' = str(@num1)                    /* 将返回的 int 型转变成 字符串 */



create function Purchase_Total(@start datetime,        /* 自定义函数 */
    @last datetime)                                    /* 可多个参数 */
    returns table                                      /* 返回值类型,这里为表格 */
as                                                     /* as以后为 sql 语句 */
    return(                                            /* 最后为返回类型 */
        select *
        from Purchase p
        where p.Pur_date >= @start
        and p.Pur_date <= @last
    )

而意气风发旦在表中已创制目录,在目录中找到切合查询条件的索引值,通过索引值就可以飞速找到表中的数量,能够大大加快查询速度。

 

对一张表中的某部列建设构造目录,有以下三种语句格式:
ALTER TABLE 表名字 ADD INDEX 索引名 (列名);

manbet手机客户端3.0,CREATE INDEX 索引名 ON 表名字 (列名);

ALTER TABLE employee ADD INDEX idx_id (id);  #在employee表的id列上建立名为idx_id的索引

CREATE INDEX idx_name ON employee (name);   #在employee表的name列上建立名为idx_name的索引

目录的魔法是加快查询速度,当表中多少远远不够多的时候是体会不出它的机能的。这里大家使用命令
SHOW INDEX FROM 表名字; 查看刚才新建的目录

manbet手机客户端3.0 1

Paste_Image.png

视图:
视图是从三个或三个表中程导弹出来的表,是一种虚构存在的表。它就像叁个窗口,通过那么些窗口能够见见系统非常提供的数量,那样,顾客能够毫不看见整个数据库中的数据,而只关切对自身有用的数码。

静心精晓视图是捏造的表:

数据库中只存放了视图的定义,而未有贮存视图中的数据,这个多少存放在原先的表中;
动用视图查询数据时,数据库系统会从原先的表中抽出对应的数目;
视图中的数据信任于原本表中的多少,大器晚成旦表中多少发生改动,显示在视图中的数据也会发生更动;
在使用视图的时候,能够把它看成一张表。
创设视图的语句格式为:
CREATE VIEW 视图名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;
看得出创造视图的说话,后半句是三个SELECT查询语句,所以视图也得以构建在多张表上,只需在SELECT语句中使用子查询或三番五次查询。

可以预知创设视图的说话,后半句是四个SELECT查询语句,所以视图也足以创造在多张表上,只需在SELECT语句中使用子查询或三番五次查询,那几个在以前的实验已经开展过。

CREATE VIEW v_emp(v_name,v_age,v_phone) AS SELECT name,age,phone FROM employee;

manbet手机客户端3.0 2

Paste_Image.png

导入:
导入操作,能够把二个文本里的数额保存进一张表。导入语句格式为:
LOAD DATA INFILE ‘文件路径’ INTO TABLE 表名字;
原表:

manbet手机客户端3.0 3

Paste_Image.png

LOAD DATA INFILE '/tmp/SQL6/in.txt' INTO TABLE employee;

导入数据后:

manbet手机客户端3.0 4

Paste_Image.png

导出:
导出与导入是相反的长河,是把数据库有个别表中的多寡保存到一个文件之中。导出语句基本格式为:
SELECT 列1,列2 INTO OUTFILE ‘文件路线和文件名’ FROM 表名字;

只顾:语句中 “文件路线” 之下不可能已经有同名文件。

现今我们把全数employee表的数额导出到 /tmp 目录下,导出文件命名称为 out.txt
具体语句为:

SELECT * INTO OUTFILE '/tmp/out.txt' FROM employee;

备份:
数据库中的数据只怕拾壹分关键,出于安全性思谋,在数据库的应用中,应该注意利用备份功用。

备份与导出的分别:导出的文本只是保存数据库中的数据;而备份,则是把数据库的布局,满含数据、限定、索引、视图等成套另存为三个文书。
mysqldump 是 MySQL 用于备份数据库的实用程序。它根本发生一个 SQL
脚本文件,当中包含从头重新创建数据库所必须的指令CREATE TABLE INSERT 等。

应用 mysqldump 备份的语句:

mysqldump -u root 数据库名>备份文件名;   #备份整个数据库

mysqldump -u root 数据库名 表名字>备份文件名;  #备份整个表

举个例子说作者要备份三个叫mysql_shiyan的数据库,备份出来的叫做bak.sql

mysqldump -u root mysql_shiyan > bak.sql;

用ls命令实行查看

manbet手机客户端3.0 5

Paste_Image.png

您能够用gedit查看备份文件的内容,可知里面不止保留了数码,还持有备份的数据库的其他音讯。

恢复:

source /tmp/bak.sql

再有另大器晚成种办法复苏数据库,不过在这里以前大家先选用命令新建多少个空的数据库
test:

mysql -u root          #因为在上一步已经退出了MySQL,现在需要重新登录

CREATE DATABASE test;  #新建一个名为test的数据库

quit命令退出MySQL,然后输入语句实行回复,把刚刚备份的 bak.sql 苏醒到
test 数据库:

mysql -u root test < bak.sql

作者们输入指令查看 test 数据库的表,便可验证是不是苏醒成功

mysql -u root          #因为在上一步已经退出了MySQL,现在需要重新登录

use test               #连接数据库test

SHOW TABLES;           #查看test数据库的表

留下评论

网站地图xml地图