精华内容
下载资源
问答
  • @[toc]1.定义所有女生信息的视图“F_Student”(5分)CREATE VIEW F_StudentASSELECT *FROM StudentWHERE Sex='女'2.通过视图“F_Student”查询小于18岁的女生...183.定义“计算机系”学生视图”CS_Student”,并...

    @[toc]

    1.定义所有女生信息的视图“F_Student”(5分)

    CREATE VIEW F_Student

    AS

    SELECT *

    FROM Student

    WHERE Sex='女'

    2.通过视图“F_Student”查询小于18岁的女生人数。(5分)

    SELECT COUNT(*)

    FROM F_Student

    WHERE Sage<18

    3.定义“计算机系”学生的视图”CS_Student”,并要求透过该视图进行的更新操作只涉及计算机系学生。(5分)

    CREATE VIEW CS_Student

    AS

    SELECT Sno,Sname,Sex,Sage,Sdept

    FROM Student

    WHERE Sdept= '计算机系'

    WITH CHECK OPTION

    4.通过视图CS_Student插入一条学生记录,数据自拟,插入的数据在Sdept是否有限制?(5分)

    INSERT INTO CS_Student

    VALUES('19250101','王芳','女',20,'计算机系')

    有限制:所插入的数据在Sdept列上必须是“计算机系”

    5.通过视图CS_Student删除姓名为“徐庆”的学生记录,能否成功?为什么?(10分)

    DELETE FROM CS_Student

    WHERE Sname='徐庆'

    go

    --执行结果显示0行受影响,则说明未删除成功

    SELECT *

    FROM Student

    WHERE Sname='徐庆'

    go

    --执行查询依然可看到该生信息

    原因:徐庆并非“计算机系”学生,因此无法透过视图“CS_Student”来实现删除功能。

    6.建立选修了“数据库原理”这门课的学生信息视图“DB_SC”,视图列包含:学号,姓名,所在系,课程名,分数。(5分)

    CREATE VIEW DB_SC(Sno,Sname,Sdept,Cname,Score)

    AS

    SELECT Student.Sno,Sname,Sdept,Course.Cname,Score

    FROM Student,SC,Course

    WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Cname='数据库原理'

    7.在视图“DB_SC”上定义新视图“DB_SC_60”,选修了“数据库原理”这门课且成绩及格的学生信息视图。(5分)

    CREATE VIEW DB_SC_60

    AS

    SELECT *

    FROM DB_SC

    WHERE Score>=60

    8.将每门课程及其平均分建立视图,视图名自定义(5分)

    CREATE VIEW Cour_AVG(Cno,Cavg)

    AS

    SELECT Cno, AVG(Score)

    FROM SC

    GROUP BY Cno

    go

    Select *

    from Cour_AVG

    GO

    9.将视图“F_Student”修改为记录所有男生信息的视图。(5分)

    ALTER VIEW F_Student

    AS

    SELECT *

    FROM Student

    WHERE Sex='男'

    10.删除视图“F_Student”(5分)

    DROP VIEW F_Student

    存储过程

    11.创建一个存储过程“PROC_STU”,查询所有学生信息,执行该存储过程,查看结果。(10分)

    CREATE PROCEDURE PROC_STU

    AS

    SELECT *

    FROM Student

    GO

    EXEC PROC_STU

    go

    12.创建一个存储过程“PROC_SELECT_SEX_COUNT”,查询男生和女生的人数。执行该存储过程,查看执行结果。(10分)

    CREATE PROCEDURE PROC_SELECT_SEX_COUNT

    AS

    SELECT Sex,COUNT(Sno)

    FROM Student

    GROUP BY Sex

    GO

    EXEC PROC_SELECT_SEX_COUNT

    GO

    13.创建一个带有参数的存储过程,根据系别查询学生人数,执行该存储过程,查看执行结果。(10分)

    CREATE PROCEDURE PROC_SELECT_COUNT_BYDEPT

    @Dept varchar(50)

    AS

    SELECT COUNT(Sno)

    FROM Student

    WHERE Sdept=@Dept

    GROUP BY Sdept

    go

    EXEC PROC_SELECT_COUNT_BYDEPT '计算机系'

    go

    14.创建一个带有参数的存储过程,根据课程名,查询其先修课的课程名,要求使用输出参数返回查询结果,并执行该存储过程查看结果。(15分)

    CREATE PROCEDURE PROC_COURSE_PRE

    @cname varchar(50),@precname varchar(50) OUTPUT

    AS

    SELECT @precname=Cname

    FROM Course

    WHERE Cno IN(SELECT Cpno

    FROM Course

    WHERE Cname=@cname)

    GO

    DECLARE @name varchar(50),@pre varchar(50)

    SET @name='数据库原理'

    EXEC PROC_COURSE_PRE @name,@pre OUTPUT

    PRINT @pre

    go

    展开全文
  • mysql 创建视图

    2017-08-31 15:08:00
    1.单表创建视图 例如:创建一个选择语句,选出学生的编号,姓名和考号 //创建一个视图名字为stu_view1选择 来自数据表student中的id,name 和kn 中的数据 create view stu_view1 as select id as '编号',name as'...

    1.单表创建视图

    例如:创建一个选择语句,选出学生的编号,姓名和考号

    //创建一个视图名字为stu_view1选择 来自数据表student中的id,name 和kn 中的数据

    create view stu_view1  as select id as '编号',name as'姓名',kn as '考号' from student;

    例如:创建一个选择语句出学生id和总成

     

    create view score_view1 as select id as '编号',sc.math+sc.chinese +sc.english+sc.mul as
    '总成绩' from score as sc;

     

    2.多表创建视图

    例如:创建一个选择语句,选出学生姓名和总成绩

    select s.name as '学生姓名' , sc.math +sc.chinese+sc.english+sc.mul as '总成绩'from

    student as s,score as sc where s.id=sc.s_id ;

    创建多表视图

    //创建一个对表视图名字为s_sc_view2 选择来自数据表student 中学生的姓名和选择来自数据表score 中所有学科成绩相加的总成绩 ,两张数据表中的数据要相对应(where s.id = sc.s_id)

     

    a.  create  or replace   view s_sc_view2 as select s.name as '学生姓名' , sc.math +sc.chinese+sc.english+sc.mul as '总成绩'from student as s,
    score as sc where s.id=sc.s_id ;

    b.  create or replace view s_sc_view3 (学生姓名,总成绩) AS select s.name ,

    sc.math +sc.chinese +sc.english+sc.mul from student as s ,score as sc where s.id =sc.s_id;

      create  表示创建。 

     or replace 表示视图已经存在,就替换

    view_name 视图名字

    as 后面是选择的字段(一个表或者多个表中)

    3.查看视图中的数据

    select * from s_sc_view2;//s_sc_view2是视图名

    4.查看视图结构

    desc view_name;

    5.查看视图创建语句

    show create view s_sc_view2;

    6.查看视图信息

    show table status like 'stu_view';(虚拟表为NULL)

    7.查看数据表信息

    show table  status like 'score';(真实表不为空)

    8.视图修改

    在视图stu_view5的基础长增加city(城市字段):

    a.通过or replace 覆盖的方式修改视图

    create or replace  view stu_view5 (姓名,考号,城市) as select name,kn,city from student;

    b.通过alter  关键子的方式修改视图

    alter view stu_view (姓名,考号,城市) as select name,kn,city from student;

    9.视图更新(内容)

    创建一个视图内容有:学生编号、总分、综合、主科目

     create or replace view score_view2 (学生编号,总分,综合,主科目)as select sc.s_id ,

    sc.math + sc.chinese +sc.english +sc.mul,sc.mul,

    sc.math+sc.english +sc.chinese from score as sc;

    a.使用update 语句(修改数据内容)

    update  score_view2 set 综合=156 where 学生编号=1003;

    b.使用delete 语句(删除数据)

    delete from score_view2 where 学生编号=1005;

    通过上面视图上面的更新(修改)和删除会影响到真实表(数据表)中的数据;

    10.视图的删除

    drop view if exists score_view1;

     

    转载于:https://www.cnblogs.com/sbj-dawn/p/6946197.html

    展开全文
  • Oracle数据库创建视图

    2020-01-02 16:19:56
    Oracle数据库用户创建视图 学生表(学生编号、学员姓名、学员年龄) 课程表(课程编号、课程名称、所在阶段) 成绩表(学员编号、课程编号、分数、考试时间) 1.为教员级别的用户创建一个视图,用来查询每门课的课程...

    Oracle数据库用户创建视图

    学生表(学生编号、学员姓名、学员年龄)
    课程表(课程编号、课程名称、所在阶段)
    成绩表(学员编号、课程编号、分数、考试时间)
    1.为教员级别的用户创建一个视图,用来查询每门课的课程名称和该课程的平均分,并且不允许更改该视图(该视图为只读的)
    2.为班主任用户创建一个视图,该视图用来查询每个学生的的姓名,考试的课程名和分数,并按分数进行排序,能产生并列跳空的序号

    这是一些例子

    1:首先建三张表:

    --学生表
    CREATE TABLE student (
      stu_ID NUMBER primary key,
    	stu_name VARCHAR2(32),
    	stu_age VARCHAR2(8)
    )
    --课程表
    CREATE TABLE class (
     class_ID NUMBER NOT NULL,
     class_name VARCHAR2(32),
     class_zc VARCHAR2(32)
    )
    --成绩表
    CREATE TABLE garde (
     stu_ID NUMBER,
     class_ID VARCHAR2(32),
     garde VARCHAR2(16),
     garde_time VARCHAR2(64)
    )
    

    2:插入数据:

    --插入学生表数据
    INSERT INTO student VALUES(1,'小红','12');
    INSERT INTO student VALUES(2,'小白','13');
    INSERT INTO student VALUES(3,'小蓝','15');
    INSERT INTO student VALUES(4,'小黑','11');
    INSERT INTO student VALUES(5,'小绿','10');
     
    --插入课程表数据
    INSERT INTO class VALUES(1,'JAVA','初级');
    INSERT INTO class VALUES(2,'HTML','初级');
    INSERT INTO class VALUES(3,'PS','高级');
    INSERT INTO class VALUES(4,'PHP','初级');
    INSERT INTO class VALUES(5,'JAVA','高级');
    
    --插入成绩表数据
    INSERT INTO garde VALUES(1,'1','50','2019-12-30');
    INSERT INTO garde VALUES(2,'2','40','2019-11-30');
    INSERT INTO garde VALUES(3,'3','60','2019-10-30');
    INSERT INTO garde VALUES(4,'2','70','2019-12-21');
    INSERT INTO garde VALUES(5,'4','90','2019-12-08');
    INSERT INTO garde VALUES(5,'5','20','2019-6-21');
    INSERT INTO garde VALUES(4,'1','60','2019-3-12');
    INSERT INTO garde VALUES(3,'3','30','2019-1-19');
    INSERT INTO garde VALUES(2,'4','90','2019-7-23');
    INSERT INTO garde VALUES(1,'5','10','2019-12-09');
    INSERT INTO garde VALUES(2,'3','100','2019-11-11');
    

    题目一:为教员级别的用户创建一个视图,用来查询每门课的课程名称和该课程的平均分,并且不允许更改该视图(该视图为只读的)

    --为教员级别的用户创建一个视图,用来查询每门课的课程名称和该课程的平均分,并且不允许更改该视图(该视图为只读的)
    
    CREATE OR REPLACE VIEW teacher AS SELECT class.class_name AS 课程名称, AVG(garde.garde) AS 平均分
    	 FROM class, garde
    	 WHERE class.class_ID = garde.class_ID
    	 GROUP BY class.class_name WITH READ ONLY;
    

    题目二:为班主任用户创建一个视图,该视图用来查询每个学生的的姓名,考试的课程名和分数,并按分数进行排序,能产生并列跳空的序号

    --为班主任用户创建一个视图,该视图用来查询每个学生的的姓名,考试的课程名和分数,并按分数进行排序,能产生并列跳空的序号
    CREATE OR REPLACE VIEW teacher2 AS SELECT student.stu_name AS 学生姓名,class.class_name AS 考试课程名,dense_rank() over(order by garde.garde desc)编号 , garde as 成绩
    FROM student,class,garde
    WHERE class.class_ID = garde.class_ID AND student.stu_ID = garde.STU_ID;
    

    最后还可以查询一下:

    --查询teacher视图
    SELECT * FROM teacher;
    查询teacher2视图
    SELECT * FROM teacher2;
    
    展开全文
  • mysql多表查询创建视图

    万次阅读 2018-06-26 20:12:48
    1.union联合查询 将多个select语句的结果纵向组合 select * from stuinfo union select * from stuinfoo; union: 1.all #显示全部记录 2.distinct #(去除重复的值 他是默认) select * from stuinfo union all...

    1.union联合查询

    将多个select语句的结果纵向组合
    
    select * from stuinfo union select * from stuinfoo;
    
    
    union:
    1.all #显示全部记录
    2.distinct  #(去除重复的值  他是默认)
    
    select * from stuinfo union all select * from stuinfoo;

    查找北京的女生和上海的男生 [晚上自己写一篇或多编]

    select * from stuinfo where (city='上海' and sex='male') or (city='北京' and sex='female');
    
    select * from stuinfo having city='上海' and sex='male' union all select * from stuinfo having city='北京' and sex='female';
    Union的要求:
    1.两边的select语句的字段数要一致
    2,字段名可以不一样,最终按照第一个select语句的字段名返回
    3.两边可以具有相同或不同的数据类型

    男生的年龄降序,女生的年龄升序 [ 晚上自己写一篇或多编]

    (select * from stuinfo having sex=1 order by age desc limit 1000) union all (select * from stuinfo having sex=2 order by age asc limit 1000);

    2.多表查询

    (1)分类

    1.内连接
    2.外连接
        a.左外连接
        b.右外连接
    3.交叉连接
    4.自然连接

    (2)内连接(inner join)

    #查询学生信息
    select * from stuinfo inner join stumarks on stuinfo.sid = stumarks.stuno;
    #inner 可以不用写
    #给表取别名的 as 也可以省略不写
    select * from stuinfo a join stumarks b on a.sid = b.stuno;
    
    #inner join数据不完整就不显示
    
    大坑别踩:
    
    表连接肯定经常要用,如果你查询单条数据,而这条数据的从表信息不完整,使用内链接,查询出的结果为空,
    但是,python代码的写法是一致的,为了避免python报错,基本不使用内链接.

    (3)外连接

    a.左外连接(left join)

    select * from stuinfo a left join stumarks b on a.sid=b.sid;
    #以左边的表为准,右边表中没有的记录用null表示

    b.右外连接(right join)

    select * from stuinfo a right join stumarks b on a.sid=b.sid;
    ##以右边的表为准,左边表中没有的记录用null表示
    思考:
    select * from 表一 inner join 表二 on 表一.公共字段=表二.公共字段;
    select * from 表二 inner join 表一 on 表二.公共字段=表一.公共字段;
    
    select * from 表一 left join 表二 on 表一.公共字段=表二.公共字段;
    select * from 表一 right join 表二 on 表一.公共字段=表二.公共字段;
    
    select * from 表一 left join 表二 on 表一.公共字段=表二.公共字段;
    select * from 表二 right join 表一 on 表二.公共字段=表一.公共字段;
    

    (4)交叉连接(cross join)

    #交叉连接返回的结果和内链接一样的
    select * from stuinfo a cross join stumarks b on a.sid=b.stuno;
    select * from  stuinfo,stumarks;

    (5)自然连接(natural)

    1.natural join #自然内连接
    2.natural left join #自然左外连接
    3.natural right join #自然右外连接
    
    select * from stuinfo a natural join stumarks b;
    select * from stuinfo a natural left join stumarks b;
    select * from stuinfo a natural right join stumarks b;
    
    结论:
    1.自动判断连接条件,依据的是同名字段名
    2.如果没有同名的字段名返回的是笛卡尔积
    3.自动返回结果并进行整理;
        a.连接字段最好保留一个
        b.连接字段最好放在最前面

    (6)using

    #指定连接字段,using也会查询出的结果进行整理,整理的方式和自然连接相同.
    
    select * from stuinfo left join stumarks using(sid);

    练习

    1.显示地区和每个地区参加数学考试的人数,并且按人数降序排列
    select a.city,count(b.math)  c from stuinfo a left join stumarks b using(sid) group by city order by c desc;
    
    2..显示男生人数和女生人数
    select a.sex,count(a.sex) from stuinfo a group by sex;
    
    select sex,count(sex) from stuinfo where sex=1 union select sex,count(sex) from stuinfo where sex=2;
    
    select sum(sex=1) 男,sum(sex=2) 女 from stuinfo;
    
    
    3.显示每个地区的男生人数,女生人数,总人数
    select city 城市,count(sex) 总人数,sum(sex='male') 男, sum(sex='female') 女 from stuinfo group by city;
    

    3.子查询

    什么叫子查询?
    查询语句中还有查询语句,外面的查询称为父查询,里面的叫子查询.
    子查询为父查询提供查询条件.
    
    例题:查询数学成绩是80分的学生
    #普通的查询
    select * from stumarks left join stuinfo using(sid) where math=80;
    #子查询
    select * from stuinfo where sid=(select sid from stumarks where math = 80);
    #如果使用等于,那就必须确保子查询查到的结果只有一个
    #子查询的结果只能是单一的字段
    
    
    例题:查找数学最高分的学生
    #普通的查询
    select a.sid,a.sname,a.sex,a.age,a.city,max(b.math) from stuinfo a left join stumarks b using(sid);#问题 
    
    
    #子查询
    select * from  stuinfo where sid = (select sid from stumarks where math = (select max(math) from stumarks));

    (1)in|not in

    如果子查询中返回了多条记录,使用 = 会发生错误,那么就必须要用in
    
    例题:查询数学成绩不及格的学生
     select * from stuinfo where sid in (select sid from stumarks where math in (select math from stumarks having math<60));
    
    #1.数学成绩不及格 <60 60种可能
    select math from stumarks having math<60; #查询到的有可能是一个也有可能是多个(58,59)
    #2.这些成绩是那些学生的(sid)
    select sid from stumarks where math in (58,59);   #(3,4)
    #3.根据学号查找学生的信息
     select * from stuinfo where sid in (3,4);
    
    
    例题:查询没有参加考试的学生
    select * from stuinfo where sid in (select sid from stumarks where math is null);

    (2)some | any|all

    some和any是一样的,表示一些,类似与 in
    all 表示全部的元素
    #some
    select * from stuinfo where sid =some (select sid from stumarks where math<60);
    
    select *from stuinfo where sid =any (select sid from stumarks where math<60);
    
    #条件都满足
    select * from stuinfo where sid =all (select sid from stumarks where math<60);
    
    查询数学90分以上的学生
    select * from  stuinfo where sid not in (select sid from stumarks where math<90);
    
    select * from  stuinfo where sid != some (select sid from stumarks where math<90);
    #some = in  !=some不等与 not in
    #!=all 等同 not in
    
    
    查询数学90以下的学生
    select * from  stuinfo where sid =some (select sid from stumarks where math in(select math from stumarks having math<90));

    (3)exists | not exists

    如果有人math超过100分,就显示所有学生的信息
    select * from stuinfo where exists(select * from stumarks where math>=100);
    #成绩未达到100分就显示
    select * from stuinfo where not exists(select * from stumarks where math>=100);

    (4)子查询分类

    1.标量子查询:子查询返回的值只有一个 sid = 
    2.列子查询:子查询返回一个列表 sid in (3,4)
    3.行子查询:查询多个条件由多个字段组成的行形成:
    
    select * from stumarks where (sid,ch,math) in (select * from stumarks where math=100);
    #例如python中
    sid,ch,math = ((3,4),(88,99),(100,88))
    
    找出语文成绩最高的男生和女生:
    
    
    select * from stuinfo where sid in (select sid from stumarks where ch in ( select max(ch) from stuinfo left join stumarks using(sid) group by sex));

    4.视图

    1.视图是一张虚拟的表,他表示一张表的部分数据或多张表的综合数据,
    视图的结构是建立在表的基础上
    2.视图中没有数据,只有表结构,视图中的数据在基表中获取
    3.一张表可以创建多个视图,一个视图可以引用多张表

    (1)创建视图

    create [or replace] view `视图名`
    as
    sql语句
    create view stu_view_1
    as
    select sid,sname,age,sex,city,ch,math from stuinfo left join stumarks using(sid);
    
    
    #视图创建完毕后,会在对应的文件夹中保存一个.frm的文件,子文件是视图的结构

    (2)查询

    select * from `stu_view_1`;

    (3)修改视图

    alter view stu_view_1
    as
    select * from stuinfo;

    (4)查看视图的信息

    show create view stu_view_1\G
    
    
    
    mysql> show create view stu_view_1\G
    *************************** 1. row ***************************
                    View: stu_view_1
             Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL
    SECURITY DEFINER VIEW `stu_view_1` AS select `stuinfo`.`sid` AS `sid`,`stuinfo`.
    `sname` AS `sname`,`stuinfo`.`sex` AS `sex`,`stuinfo`.`age` AS `age`,`stuinfo`.`
    city` AS `city` from `stuinfo`
    character_set_client: gbk
    collation_connection: gbk_chinese_ci
    1 row in set (0.00 sec)

    (5)查看视图的结构

    desc stu_view_1;
    
    mysql> desc stu_view_1;
    +-------+-----------------------+------+-----+---------+-------+
    | Field | Type                  | Null | Key | Default | Extra |
    +-------+-----------------------+------+-----+---------+-------+
    | sid   | int(11)               | NO   |     | 0       |       |
    | sname | varchar(255)          | YES  |     | NULL    |       |
    | sex   | enum('male','female') | YES  |     | NULL    |       |
    | age   | tinyint(4)            | YES  |     | NULL    |       |
    | city  | varchar(64)           | YES  |     | NULL    |       |
    +-------+-----------------------+------+-----+---------+-------+
    5 rows in set (0.00 sec)

    (6)查找视图;

    show tables;#它也可以查看视图
    
    select table_name from information_schema.views;
    
    show table status where comment='view'\G;

    (7)删除视图

    drop view stu_view_1;
    找出语文成绩最高的男生和女生:
    select * from stu_view_1 where(sex,ch) in (select sex,max(ch)from stu_view_1 group by sex);
    #把查询当作是数据源,命名为t
    select * from (select * from stu_view_1 order by ch desc) t group by sex;
    create view vw_1
    as
    select * from stu_view_1 order by ch desc;

    (8)视图算法理论

    1.merge:合并算法(将视图语句与外层语句合并执行)
    2.temptable:临时表算法(将视图执行的结果作为一个临时表,再执行外层语句)
    3.undefined:未定义算法,由mysql自己决定,一般使用的都是merge
    
    #给视图指定算法
    create or replace algorithm=merge view vm_2
    as
    select * from stuinfo order by sid desc;

    5.事务

    什么是事务?
    1.事务是一个不可拆分的工作单元;
    2.事务是作为一个整体向系统提交的,要么一起执行,要么一起不执行;
    3.事务是不支持嵌套的

    (1)事务的特性

    1.原子性:不可拆分
    2.一致性:要么一起执行,要么一起不执行
    3.隔离性:事务彼此没关系
    4.永久性:一旦执行成功,不可修改
    #事务先要开启
    start transaction;
    #语句
    insert into stuinfo values(null,'百强',1,18,'黑龙江');
    insert into stuinfo values(null,'百强1',2,18,'黑龙江');
    insert into stuinfo values(null,'百强2',3,18,'黑龙江');
    #不成功回滚
    rollback;
    #成功->提交
    commit;
    
    #注意
    事务只能在innodb引擎下使用

    (2)自动提交事务

    #查看自动提交事务是否开启
    show variables like 'autocommit';
    
    #如果是关的
    set autocommit=0|1

    6.索引

    优点:加快了mysql的查找速度
    缺点:
    1.更多的储存空间来储存索引字段名
    2.myisam使得insert,update,delete的速度变慢了(查询操作占用90%,cud操作加起来占用10%的操作还未必能达到)
    - 如果一张表中的数据过多,比如我有50个字段,我给每一个字段都添加一个索引

    (1)创建索引的原则

    #适合
    1.用于频繁查找的列(字段)
    2.用于条件判断的列(字段)
    3.用于排序的列(字段)
    #不适合
    1.列中的数据并不多
    2.表中的数据量很小

    (2)索引的类型

    1.普通索引
    create index isex on stuinfo(sex);
    
    alter table stuinfo add index isname(sname);
    
    2.唯一索引
    unique
    #创建方法如上
    3.主键索引
    primary key
    #创建方法如上
    4.全文索引
    #xunsearch是一种工具
    
    fulltext key
    只能在myisam表引擎下使用(innodb,myisam创建的话都能创建,但是innodb中无效),使用like的时候提升效率.#  where nama like '%你%';
    create FULLTEXT KEY zu on stuinfo(age,city);
    5.创建多列索引(组合索引)
    create index zu on stuinfo(age,city);
    alter table stuinfo add index isname(sname,city);

    (3)删除索引

    drop index zu on stuinfo;
    #mysql优化
    
    # insert 插入的时候一般都是一次插入一条,
    # 那么一次插入1万条数据的时候,一般想到的循环
    # mysql 先连接,再选库, 进行语法分析,进行表对应,插入数据,断开连接 10000次
    # for循环拼接insert sql 语句,连接,再选库, 进行语法分析,进行表对应,插入数据,断开连接
    
    innodb=>执行 insert(多条) update delete 非常快
    myisam=>执行 insert(单次) select  非常快
    
    1.mysql需要搭建在远程的服务器中
    2.1mysql台服务器中的所有表类型全部是innodb,其它4台服务器中的表全市myisam的
    
    主从复制(一主多从)(双主多从)
    master(主的mysql服务器 innodb) IO
    #从服务器监听主服务器
    slave(从服务器是myisam)  10.11.58.1 () IO
    slave(从服务器是myisam)  10.11.58.2
    slave(从服务器是myisam)
    slave(从服务器是myisam)
    
    从服务器(myisam)sub监听主服务器
    
    监听什么?
    ip地址
    干吗了?
    主服务器插入,修改,删除一条,从服务器插入,修改,删除一条.
    
    从服务器主要是用来查询的.
    
    
    innodb 和myisam有什么区别吗?
    表文件,数据存储方式不同.
    myisam 3个文件 .frm 储存结构 MYI .MYD
    innodb 初始是两个文件.frm(结构和索引) .ibd(理论上无限多)
    innodb可以使用外键,事务,唯一键,表锁,行锁
    myisam可以使用全文索引,表锁
    
    mysql8.0 innodb不论是io哪项都很强,相互监听
    
    mysql怎么优化? IO
    添加索引,常用被查询的,数据量大的
    分表: 垂直分表和水平分表
    垂直分表是分字段
    水平分表是分数据的数量
    
    数据库分库,主从
    
    硬件方面考虑,固态硬盘比机械强
    展开全文
  • 文章目录select语句的语法1、select语法简介2、select语法结构3、select执行过程4、select书写格式数据库的简单查询1、查询表中的数据列2、查询满足条件的数据行数据库的分组统计查询1、使用聚合函数查询2、使用分组...
  • 创建视图

    2010-04-17 20:55:00
    学生姓名 s . gender  as   'student_gender' ,   ---- 学生性别 s . age  as   'student_age' ,   ---- 学生年龄 s . grade ,   ---- 学生年级 s . class ,   ---- 学生班级 s . teacher_id...
  • 17.创建视图

    2019-11-07 17:01:08
    建立视图的语句,有点像建表加查询语句的结合 建立视图是为了更方便的查看经常要查看的数据。 格式为: create view [视图名] as select [列名] from [表名] where [条件] where可以不要 例句: create view C_...
  • 1、创建视图 --***① 将Student Course 和sc表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G *** CREATE VIEW V_S_C_G AS SELECT Student.sno,sname,course.cno,cname,grade FROM Student,SC,course...
  • 在mydb数据库中创建student数据表,表中有id、name(学生姓名)、math(数学成绩)、chinese(语文成绩)和english(英语成绩)字段。然后创建视图view_score,视图中包含math、chinese、english和total(总分数)...
  • 在MySQL数据库中创建视图

    千次阅读 2018-08-05 20:03:51
    解释说明:视图创建是因为由于表与表之间的关系,...//从Students的实体类中根据姓名和状态来查询学生的有关信息 from Students where name=:name and status=:status 2.就是在数据库中创建视图的过程 打开mysql数...
  • 创建视图的原因有两个:一是出于安全考虑,用户不必看到整个数据库结构,而隐藏部分数据;二是符合用户日常业务逻辑,使其对数据更容易理解 什么是视图? 视图是另一种查看数据库中一个或多个表中数据的方法。视图...
  • 第五单元 创建视图与索引 5.1视图 概念: 视图是由基于一个或多个表(或视图)上的一个查询所生成的虚拟表,其中不包括任何数据,只是保存着该查询定义。对视图的操作与对表的操作一样,可以对其进行查询、修改...
  • 通过视图“F_Student”查询小于18岁的女生人数。(5分)3.定义“计算机系”学生视图”CS_Student”,并要求透过该视图进行的更新操作只涉及计算机系学生。(5分)4.通过视图CS_Student插入一条学生记录,数据自拟...
  • SQL Server创建视图

    2014-11-13 08:32:00
    什么是视图 大家都知道,我们国家现在“神七”上天了。从美国的月球登月开始,人类上天不再是神话。听说,在美国,你只要出几十万美元,您就可以上一次月球进行太空旅行,所以,我们相信:在不久的将来,上天旅行...
  • SQLServer创建视图

    万次阅读 2010-02-04 21:21:00
    从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一般操作都可以应用于视图,例如查询,插入,修改,删除操作等。 2、视图的用途 
  • SQL Server 创建视图

    2013-06-21 10:40:28
    什么是视图  大家都知道,我们国家现在“神七”上天了。从美国的月球登月开始,人类上天不再是神话。听说,在美国,你只要出几十万美元,您就可以上一次月球进行太空旅行,所以,我们相信:在不久的将来,上天旅行...
  • 、为计算机专业的学生创建一个视图,要求包括学号、姓名、专业、课程名称、成绩等列,设置W0Traignina2013.03.22浏览2146次分享举报、为计算机专业的学生创建一个视图,要求包括学号、姓名、专业、课程名称、成绩等...
  • 创建视图习题2目录题目及要求背景知识解题思路习题答案题目及要求现有“图书管理”数据库,其中有“读者表”、“图书表”和“借阅表” ,表结构如下:读者表(读者编号,姓名,类型,部门,已借数量)图书表(图书编号...
  • SQL入门:创建视图

    2008-05-07 10:57:00
    通过创建视图,可以对想要各种用户查看的信息进行限制。 下列语句创建 STAFF 表 中 20 部门的非经理人员视图,其中薪水和佣金不通过基表显示。 CREATE VIEW STAFF_ONLY AS SELECT ID, NAME, DEPT, JOB, ...
  • 掌握使用管理器图形界面创建视图。 \3. 掌握通过视图修改基本表中的数据。 \4. 掌握数据库的脱机与联机操作。 \5. 掌握数据库的分离与附加操作。 \6. 掌握数据的导入导出操作。 \7. 掌握数据库的备份与恢复操作。 \...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,234
精华内容 8,093
关键字:

创建视图查询学生的姓名