网站建设7个主要流程图,欧铂丽全屋定制价格每平米多少钱,网络有限公司名字大全,wordpress能多人登录一、克隆/复制数据表二、清空表#xff0c;删除表内的所有数据删除小结 三、创建临时表四、MySQL中6种常见的约束1、外键的定义2、创建外键约束作用3、创建主表test44、创建从表test55、为主表test4添加一个主键约束。主键名建议以PK_”开头。6、为从表test5表添加外键删除表内的所有数据删除小结 三、创建临时表四、MySQL中6种常见的约束1、外键的定义2、创建外键约束作用3、创建主表test44、创建从表test55、为主表test4添加一个主键约束。主键名建议以PK_”开头。6、为从表test5表添加外键并将test5表的hobid字段和test4表的hobid字段建立外键关联。外键名建议以FK_”开头。7、可以使用查询表语句结构命令查看外键关联8、插入新的数据记录时要先主表再从表9、删数数据记录时要先从表再主表10、如果要删除外键约束字段先删除外键约束再删除外键名 五、数据库用户管理1、新建用户2、查看用户信息3、重命名指定4、删除用户5、修改当前密码6、修改其他用户密码7、忘记root密码的解决办法 六、数据库用户授权1、授予权限2、查看权限3、撤销权限4、补充 一、克隆/复制数据表 方法一
create table test2 like test; #复制格式通过LIKE方法复制yyy表结构生成yyy2表
insert into test2 select * from test; #备份内容方法二
CREATE TABLE test3 (SELECT * from test); #复制test 表数据到test3中二、清空表删除表内的所有数据
方法一
delete from 表名;DELETE清空表后返回的结果内有删除的记录条目; DELETE 工作时是一行一行的删除记录数据的;如果表中有自增长字段使用DELETE FROM 删除所有记录后再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。 方法二
truncate table 表名;TRUNCATE清空表后没有返回被删除的条目: TRUNCATE 工作时是将表结构按原样重新建立因此在速度上TRUNCATE会比DELETE清空表快;使用TRUNCATE TABLE 清空表内数据后ID会从1开始重新记录
删除小结
drop table 表名删除速度快表和内容和结构删除不可以带 where不可回滚(无法恢复)属于 DDL
truncate table 表名删除速度快表的内容删除不可以带where不可回滚 (无法恢复)届于 DDL
delete from 表名删除速度慢需要逐行删除删除后表结构在表内容要看where执行的情况可以带where可以回滚 (可恢复)属于DML
三、创建临时表
CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[, ...][, PRIMARY KEY (主键名)]);临时表创建成功之后使用 show tables 命令是看不到创建的临时表的临时表会在连接退出后被销毁。如果在退出连接之前也可以可执行增删改查等操作比如使用DROP TABLE语句手动直接删除临时表。临时表无法创建外键
应用场景可做测试环境使用比如删除大量数据的时候可以创建临时表 做一个复杂删除
四、MySQL中6种常见的约束
主键约束(primary key)外键约束(foreign key)非空约束(not null)唯一性约束(unique [key|index])默认值约束(default)自增约束(auto_increment)
1、外键的定义
如果同一个属性字段x在表一中是主键而在表二中不是主键则字段x称为表二的外键。
2、创建外键约束作用
创建外键约束作用(误删修改)保证数据的完整性和一致性。
主键表和外键表的理解
以公共关键字作主键的表为主键表(父表、主表)以公共关键字作外键的表为外键表(从表、外表)
**注意:**与外键关联的主表的字段必须设置为主键。要求从表不能是临时表主表外键字段和从表的字段具备相同的数据类型、字符长度和约束。
3、创建主表test4
create table test4 (hobid int(4),hobname varchar(50));4、创建从表test5
create table test5 (id int(4) primary key auto_increment,name varchar(10),age int(3),hobid int(4));5、为主表test4添加一个主键约束。主键名建议以PK_”开头。
alter table test4 add constraint PK_hobid primary key (hobid);6、为从表test5表添加外键并将test5表的hobid字段和test4表的hobid字段建立外键关联。外键名建议以FK_”开头。
alter table test5 add constraint FK_hob foreign key (hobid) references test4 (hobid);7、可以使用查询表语句结构命令查看外键关联
show create table test5;desc test4;
desc test5;8、插入新的数据记录时要先主表再从表
insert into test4 values(1,runing);
insert into test5 values(1,zhangsan,18,1);9、删数数据记录时要先从表再主表
drop tables test5;
drop tables test4;10、如果要删除外键约束字段先删除外键约束再删除外键名
show create table test5;
alter table test5 drop foreign key FK_hob;
alter table test5 drop key FK_hob;
desc test5;五、数据库用户管理
1、新建用户
CREATE USER 用户名来源地址 [IDENTIFIED BY [PASSWORD] 密码];‘用户名’指定将创建的用户名‘来源地址’指定新创建的用户可在哪些主机上登录可使用IP地址、网段、主机名的形式本地用户可用localhost允许任意主机登录可用通配符%‘密码’若使用明文密码直接输入’密码’插入到数据库时由Mysql自动加密若使用加密密码需要先使用SELECT PASSWORD(‘密码’)获取密文再在语句中添PASSWORD ‘密文’若省略“IDENTIFIED BY部分则用户的密码将为空(不建议使用) 2、查看用户信息
创建后的用户保存在mysql数据库的user表里
USE mysql;
SELECT User,authentication_string,Host from user;3、重命名指定
RENAME USER zhangsanlocalhost TO lisilocalhost;4、删除用户
DROP USER lisilocalhost ;5、修改当前密码
SET PASSWORD PASSWORD(abc123);6、修改其他用户密码
SET PASSWORD FOR user1localhost PASSWORD(abc123T);7、忘记root密码的解决办法
修改/etc/my.cnf 配置文件免密登陆mysql
vim /etc/my.cnf
[mysqld]
skip-grant-tables #添加使登录mysql不使用授权表systemctl restart mysqld
mysql #直接登录然后使用SQL语句修改密码
UPDATE mysql.user SET AUTHENTICATION_STRING PASSWORD(abc123) where userroot;FLUSH PRIVILEGES;
quitmysql -u root -pabc123
PS:最后再把/etc/my.cnf 配置文件里的skip-grant-tables 删除并重启mysql服务六、数据库用户授权
1、授予权限
GRANT 权限列表 ON 数据库名.表名 TO 用户名来源地址 [IDENTIFIED BY 密码];#权限列表用于列出授权使用的各种数据库操作以逗号进行分隔如“select, insert,
update”。使用all表示所有权限可授权执行任何操作。#数据库名.表名用于指定授权操作的数据库和表的名称其中可以使用通配符*。
例如使用“school.*表示授权操作的对象为school数据库中的所有表。#用户名来源地址用于指定用户名称和允许访问的客户机地址即谁能连接、能从哪里连接。来源地址可以是域名、IP地址还可以使用“%”通配符表示某个区域或网段内的所有地址如“%.xyw.com、“192. 168.80.%”等。#IDENTIFIED BY用于设置用户连接数据库时所使用的密码字符串。
在新建用户时若省略“IDENTIFIED BY部分则用户的密码将为空。2、查看权限
SHOW GRANTS FOR 用户名来源地址;3、撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM 用户名来源地址;USAGE权限只能用于数据库登陆不能执行任何操作; USAGE权限不能被回收即REVOKE不能删除用户。
4、补充
授权用户权限 all privileges 代表了哪些权限呢
权限含义insert插入数据select查询数据update更新表的数据delete删除表中的数据drop删除库 和表create创建库表index创建索引alter更改表的属性create view创建视图create routine创建存储过程alter routine修改存存储过程event事件trigger on创建触发器
等