插入:
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 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 主机地址