视图view
视图是指 数据库中的 一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。 和数据库相对应,每次进行查询工作,都需要编写查询代码进行查询;而视图的作用就是不必每次都重新编写查询的SQL代码,而是通过视图直接查询即可。 举个例子:我每天要去查看天然气用量、水费用量、银行卡余额。如果不用视图,那么每天我都要去亲自查看(写查询语句) 使用视图:就相当于我养了三条狗,每条狗负责其中一个查询事务,我每天只需要叫狗去查看就可以了。轻松。
所以视图是虚拟表,本身不存储数据,而是按照指定的方式进行查询。
视图创建
CREATE VIEW 视图名( 查询语句 )
CREATE VIEW grade_stu_sub_res
(SELECT s.*,g.gradeName,j.subjectNo,j.classhour,
j.subjectName,r.studentresult,r.ExamDate
FROM grade g
INNER JOIN student s ON g.gradeid = s.gradeId
INNER JOIN `subject` j ON g.gradeid = j.gradeid
INNER JOIN result r ON s.studentNo = r.studentNo
)
视图查询
SELECT 字段名 FROM 视图名;
和选择语句相似,可以查看视图的某几条字段
SELECT gradeName,subjectName FROM grade_stu_sub_res;
SELECT gradeName,classHour FROM grade_stu_sub_res;
SELECT * FROM grade_stu_sub_res;
修改视图
CREATE OR REPLACE VIEW 视图名 SELECT FROM
查看视图
show tables;
查看数据库中有哪些视图
删除视图
DROP VIEW 视图名;
权限修改
数据库很重要,作为数据库的管理者,可以给其他账户授权,来让其完成特定的人物,或者防止自个人操作不当,损坏数据。 添加新账户,供他人使用,在左边设置权限,全局特权能让该账户操作全部的数据库,对象级则能只能操作特定的数据库。 之后,系统会自动组织该账户的一切“越权行为” ps:记得写主机名。暂时不建议创建其他用户。
创建用户的语句:(一般不用)
CREATE USER `te`@`localhost` IDENTIFIED BY '123456';
GRANT INSERT,SELECT ON myschool.student TO `te` @`localhost`;
事务transaction
数据库中的事务是指对数据库执行一批操作,这些操作最终要么全部执行成功,要么全部失败; 比如你在取钱的一瞬间断电了,钱没吐,但是余额少了,这谁受得了啊 举例说明:
创建一个表单 张三 李四 id分别为1 2 余额cash
SET autocommit = 0;
START TRANSACTION;
UPDATE account SET cash = cash+1000 WHERE id = 1;
UPDATE account SET cash = cash-1000 WHERE id = 2;
ROLLBACK;
COMMIT;
SET autocommit =1;
索引
索引是帮助MySQL高效获取数据的数据结构。 更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。 一般来说索引本身很大,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中
优点:可以提高数据检索的效率,降低数据库的IO成本 缺点:索引虽然会提高查询效率,但是会占据磁盘空间, 降低更新表的效率
创建表时添加索引
索引类型
先介绍常用的:
-
主键索引 PRIMARY KEY 索引列中的值必须唯一的,不允许有空值。 -
普通索引 MySQL中基本索引类型,没有限制,允许在定义索引的列中插入重复值和空值。 -
唯一索引 UNIQUE KEY 索引列中的值必须是唯一,允许为空值。 -
全文索引 INDEX 只能在文本类型CHAR,VARCHAR,TEXT类型字段上创建全文索引。字段长度比较大时,如果创建普通索引,在进行like模糊查询时效率比较低,这时可以创建全文索引。 MyISAM和InnoDB中都可以使用全文索引。
CREATE TABLE news(
id INT(4)
title VARCHAR(200),
1mgUr1 VARCHAR (200),
content TEXT,
PRIMARY KEY(id),
UNIQUE KEY (title),
INDEX (1mgUrl),
FULLTEXT(content)
)ENGINE=MYISAM
CREATE TABLE artic (
id INT(4),
title VARCHAR (200),
imgUrl VARCHAR (200),
content TEXT
)
ALTER TABLE artic ADD PRIMARY KEY (id) ;
ALTER TABLE artic ADD UNIQUE KEY tit(title) ;
ALTER TABLE artic ADD INDEX (imgurl) ;
ALTER TABLE artic ADD FULLTEXT (content) ;
ALTER TABLE artic DROP INDEX imgurl;
ALTER TABLE artic DROP PRIMARY KEY;
DROP INDEX content ON artic;
|