插入更新删除数据,索引,视图,创建用户,修改当前用户密码

插入:

INSERT INTO 表(字段1,字段2,字段3...)VALUES(值1,值2,值3...);

同时插入多条数据:

INSERT INTO 表(字段1,字段2,字段3...)VALUES(值1,值2,值3...),(值1,值2,值3...)...;

或者在命令行中 :

INSERT INTO 表(字段1,字段2,字段3...)

VALUES(值1,值2,值3...),

(值1,值2,值3...),

...

(值1,值2,值3...);

将查询的结果插入表中:

INSERT INTO 表1(字段1,字段2)  SELECT (字段1,字段2..)FROM 表2;

更新:

UPDATE 表 SET 字段1=值1,字段2=值2... WHERE 条件;

删除:

DELETE FROM 表 WHERE 条件;

删除所有记录:

DELETE FROM 表;

索引的优点:

1.创建唯一索引,可保证数据库表中每一行数据的唯一性

2.可大大加快数据的查询速度

3.在实现数据的参考完整性方面,可加速表和表之间的连接

4.在使用分组和排序字句进行数据查询时,也可以显著减少查询中分组和排序的时间

索引的缺点:

1.创建和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加

2.索引需要占磁盘空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果有大量索引,索引文件可能比数据文件更快达到最大尺寸文件

3.当对表中数据进行增删改的时候,索引也要动态的维护,这样就降低了数据的维护速度

索引的分类:

1.普通索引和唯一索引

普通索引是MYSQL中的基本索引类型,允许在定义索引的列中插入重复值和空值

唯一索引,索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。主键索引是一种特殊的唯一索引,不允许有空值。

2.单列索引和组合索引

单列索引即一个索引只包含单个列,一个表可以有多个单列索引。

组合索引指在表的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用。

3.全文索引

全文索引可以在 CHAR VARCHAR 或者TEXT类型的列上创建。MYSQL中只有MYISAM存储引擎支持全文索引。

创建索引语法结构:
CREATE TABLE 表名(字段1.字段2.。。。UNIQUE|INDEX|FULLTEXT  INDEX 索引名称(对应字段))
在已有表添加索引:
ALTER TABLE 表名 ADD 索引类型 索引名(字段);
创建索引:
CREATE 索引类型 索引名 ON 表名(字段);

删除索引:

ALTER TABLE 表名 DROP 索引类型 索引名;

DROP 索引类型 索引名 ON 表名;

单表创建视图:
CREATE VIEW 视图名称(视图中的字段名1,字段2..) AS SELECT 字段1,字段2...FROM 表名 WHERE 条件;
多表创建视图:
CREATE VIEW 视图名称(视图中的字段名1,字段2..) AS SELECT 字段1,字段2...FROM 表1,表2 WHERE 条件(也可以使用连接查询);

查看视图基本信息:

DESCRIBE view_t;

SHOW TABLE STATS LIKE '视图名'\G;

修改视图:
视图存在时修改,不存在时创建
CREATE OR REPLACE VIEW 视图名(字段...) AS SELECT 字段1,字段2...FROM 表1,表2 WHERE 条件(也可以使用连接查询);
ALTER 修改视图:
ALTER VIEW 视图名(字段名...) AS 查询语句;

更新视图:

UPDATE 视图名 SET 字段=值

删除某些数据:

DELETE FROM 视图名 WHERE 条件;

删除视图:
DROP VIEW IF EXISTS 视图名;

MYSQL中视图和表的区别以及联系是什么?

区别:

1.视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的表,而表不是。

2.视图没有实际的物理记录,而基本表有。

3.表是内容,视图是窗口

4.表占用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能用创建的语句来修改

5.视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度来说,视图可以防止用户接触数据表,因而用户不知道表结构。

联系:

视图是在基本表之上建立的表,它的结构和内容都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。

创建用户语法:

1. CREATE USER '用户名'@'host' IDENTIFIED BY '密码'  创建的用户无权限

2.GRANT 权限(all是所有权限) ON db.table(*.*表示所有) TO '用户名'@'host' IDETIFIED BY '密码'  WITH GRANT OPTION(赋予创建用户权限);

删除用户:
DROP USER '用户名'@'host';

修改当前用户密码 :

SET PASSWORD =password('新密码');

修改其他用户密码:

SET PASSWORD FOR '用户名'@'host' = password('新密码');

MySQL忘记root密码后的重置:

确保环境变量下mysql的path路径为C:\Program Files\MySQL\MySQL Server 5.7\bin 或自己安装的mysql路径下的\MySQL Server 5.7\bin

1.关闭MYSQL服务

net stop mysql57

2.找到C:/ProgramData/Mysql Server 5.7/my.ini文件

在[mysqld]这一行代码下加入以下代码

skip-grant-tables

3.启动MYSQL服务:

net start mysql57

4.不通过密码直接登录MySQL

mysql -uroot -p回车 再回车

5.设置新密码

update mysql.user set authentication_string=PASSWORD('新的密码') where user='root';

6.再次将my.ini文件中添加的skip-grant-tables 代码删除,然后重启MySQL服务,然后使用新密码登录。

联机访问:

GRANT 权限 ON 数据库.表 TO '用户名'@'%' IDENTIFIED BY '密码' WITH MAX_CONNECTIONS_PER_HOUR 30;

远程连接数据库,用户的host地址设置为%, 远程连接命令: mysql -u用户名 -p密码 -h 主机地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章