删除表数据drop,python命令行参数

sql语句中—-删除表数据drop、truncate和delete的用法,droptruncate

虽然西西不建议大家去用命令删除数据库表中的东西,但是这些删除命令总有用的着的地方。

说到删除表数据的关键字,大家记得最多的可能就是delete了

然而我们做数据库开发,读取数据库数据.对另外的两兄弟用得就比较少了

现在来介绍另外两个兄弟,都是删除表数据的,其实也是很容易理解的

老大——drop

出没场合:drop table  tb –tb表示数据表的名字,下同

绝招:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表,

       例如:一个班就是一个表,学生就是表中的数据,学生的职务就是定义

       drop table class,就是把整个班移除.学生和职务都消失

比如下面TestSchool数据库中有两张表[Classes]表和[Teacher]表

图片 1

当执行下面代码之后

图片 2

Classes表就被清楚,一干二净! 删除得非常暴力,作为老大实至名归

图片 3

老二—–truncate

出没场合:truncate table tb

绝招:删除内容、释放空间但不删除定义。与drop不同的是,他只是清空表数据而已,他比较温柔.

     
 同样也是一个班,他只去除所有的学生.班还在,职务还在,如果有新增的学生可以进去,也可以分配上职务

删除内容很容易理解,不删除定义也很容易理解,就是保留表的数据结构

图片 4

上图就表现了:删除内容

图片 5

执行语句之后,发现数据表的结构还在,也就是不删除定义

至于释放空间,看下下面两幅图.你们就会明白的

图片 6

右图:Id列标识列,因之前delete过行数据,所以会出现标识列不连续(体现了delete删除是不释放空间的)

经过truncate table Teacher 之后 再新增三条数据

图片 7

右图:同样Id是标识列,发现插入数据的时候,标识列连续了(体现了truncate删除是释放空间)

注意:truncate 不能删除行数据,要删就要把表清空

老三—–delete

出没场合:delete table tb
  –虽然也是删除整个表的数据,但是过程是痛苦的(系统一行一行地删,效率较truncate低)

            或

            delete table tb where 条件

绝招:删除内容不删除定义,不释放空间。三兄弟之中最容易欺负的一个

然后关于delete的就不详细说明了,大家都懂的

关于truncate的小小总结:

truncate table 在功能上与不带 WHERE 子句的
delete语句相同:二者均删除表中的全部行。

但 truncate 比 delete速度快,且使用的系统和事务日志资源少。

delete
语句每次删除一行,并在事务日志中为所删除的每行记录一项。所以可以对delete操作进行roll
back

1、truncate
在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令Delete将被撤销,而 truncate 则不会被撤销。 
2、truncate
是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对 truncate 使用ROLLBACK命令。 
3、truncate 将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过 truncate 操作后的表比Delete操作后的表要快得多。 
4、truncate 不能触发任何Delete触发器。 
5、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。 
6、不能清空父表

 

虽然西西不建议大家去用命令删除数据库表中的东西,但是这些删除命令总有…

详解MySQL的用户密码过期功能,详解mysql用户密码

Payment Card
Industry
,即支付卡行业,PCI行业表示借记卡、信用卡、预付卡、电子钱包、ATM和POS卡及相关的业务。
PCI
DSS,
即PCI数据安全标准(Payment Card Industry Data Security
Standard)是由PCI安全标准委员会制定,旨在使国际上采用一致的数据安全措施。

PCI
DSS标准要求用户每隔90天必须更改他们的密码。那么MySQL数据库该怎样适应这个情况?幸运的是,在MySQL版本5.6.6版本起,添加了password_expired功能,它允许设置用户的过期时间。

这个特性已经添加到mysql.user数据表,但是它的默认值是”N”。可以使用ALTER
USER语句来修改这个值。

下面是关于如何设置MySQL用户账号的到期日期一个简单例子:

mysql> ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE;

一旦某个用户的这个选项设置为”Y”,那么这个用户还是可以登陆到MySQL服务器,但是在用户未设置新密码之前不能运行任何查询语句,而且会得到如下错误消息提示:

mysql> SHOW DATABASES;
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
Keep in mind that this does not affect any current connections the account has open.

当用户设置了新密码后,此用户的所有操作(根据用户自身的权限)会被允许执行:

mysql> SET PASSWORD=PASSWORD('mechipoderranen');
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database      |
+--------------------+
| information_schema |
| data        |
| logs        |
| mysql       |
| performance_schema |
| test        |
+--------------------+
6 rows in set (0.00 sec)
mysql>

DBA可以通过cron定时器任务来设置MySQL用户的密码过期时间。

从MySQL
5.7.4版开始,用户的密码过期时间这个特性得以改进,可以通过一个全局变量default_password_lifetime来设置密码过期的策略,此全局变量可以设置一个全局的自动密码过期策略。

用法示例:
可以在MySQL的配置文件中设置一个默认值,这会使得所有MySQL用户的密码过期时间都为90天,MySQL会从启动时开始计算时间。my.cnf配置如下:

[mysqld]
default_password_lifetime=90

如果要设置密码永不过期的全局策略,可以这样:(注意这是默认值,配置文件中可以不声明)

[mysqld]
default_password_lifetime=0

在MySQL运行时可以使用超级权限修改此配置:

mysql> SET GLOBAL default_password_lifetime = 90;
Query OK, 0 rows affected (0.00 sec)

还可以使用ALTER
USER命令为每个具体的用户账户单独设置特定的值,它会自动覆盖密码过期的全局策略。要注意ALTER
USER语句的INTERVAL的单位是“天”。

ALTER USER ‘testuser'@‘localhost' PASSWORD EXPIRE INTERVAL 30 DAY;

禁用密码过期:

ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE NEVER;

让用户使用默认的密码过期全局策略:

ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE DEFAULT;

从MySQL 5.7.6版开始,还可以使用ALTER USER语句修改用户的密码:

mysql> ALTER USER USER() IDENTIFIED BY '637h1m27h36r33K';
Query OK, 0 rows affected (0.00 sec)

后记

在MySQL 5.7.8版开始用户管理方面添加了锁定/解锁用户账户的新特性, related
to user management is locking/unlocking user accounts when CREATE USER,
or at a later time running the ALTER USER statement.

下面创建一个带账户锁的用户:

mysql> CREATE USER 'furrywall'@'localhost' IDENTIFIED BY '71m32ch4n6317' ACCOUNT LOCK;
Query OK, 0 rows affected (0.00 sec)

如下所示,新创建的用户在尝试登陆时会得到一个ERROR 3118错误消息提示:

$ mysql -ufurrywall -p
Enter password:
ERROR 3118 (HY000): Access denied for user 'furrywall'@'localhost'. Account is locked.

此时就需要使用ALTER USER … ACCOUNT UNLOCK语句进行解锁了:

mysql>ALTER USER 'furrywall'@'localhost' ACCOUNT UNLOCK;
Query OK, 0 rows affected (0.00 sec)

现在,这个用户已经解锁,可以登陆了:

$ mysql -ufurrywall -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 17
Server version: 5.7.8-rc MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql>

还可以这样锁定用户账户:

mysql> ALTER USER 'furrywall'@'localhost' ACCOUNT LOCK;
Query OK, 0 rows affected (0.00 sec)

以上就是为大家介绍的MySQL的用户密码过期功能的相关内容,希望对大家的学习有所帮助。

mysql命令行参数,python命令行参数

一,mysql命令行参数

Usage: mysql [OPTIONS] [database] //命令方式 
-?, –help //显示帮助信息并退出 
-I, –help //显示帮助信息并退出 
–auto-rehash
//自动补全功能,就像linux里面,按Tab键出提示差不多,下面有例子 

-A, –no-auto-rehash
//默认状态是没有自动补全功能的。-A就是不要自动补全功能 
-B, –batch //ysql不使用历史文件,禁用交互 
(Enables –silent) 
–character-sets-dir=name //字体集的安装目录 
–default-character-set=name //设置数据库的默认字符集 
-C, –compress //在客户端和服务器端传递信息时使用压缩 
-#, –debug[=#] //bug调用功能 
-D, –database=name //使用哪个数据库 
–delimiter=name //mysql默认命令结束符是分号,下面有例子 
-e, –execute=name //执行mysql的sql语句 
-E, –vertical //垂直打印查询输出 
-f, –force //如果有错误跳过去,继续执行下面的 
-G, –named-commands 
/*Enable named commands. Named commands mean this program’s 
internal commands; see mysql> help . When enabled, the 
named commands can be used from any line of the query, 
otherwise only from the first line, before an enter. 
Disable with –disable-named-commands. This option is 
disabled by default.*/ 
-g, –no-named-commands 
/*Named commands are disabled. Use \* form only, or use 
named commands only in the beginning of a line ending 
with a semicolon (;) Since version 10.9 the client now 
starts with this option ENABLED by default! Disable with 
‘-G’. Long format commands still work from the first 
line. WARNING: option deprecated; use 
–disable-named-commands instead.*/ 
-i, –ignore-spaces //忽视函数名后面的空格. 
–local-infile //启动/禁用 LOAD DATA LOCAL INFILE. 
-b, –no-beep //sql错误时,禁止嘟的一声 
-h, –host=name //设置连接的服务器名或者Ip 
-H, –html //以html的方式输出 
-X, –xml //以xml的方式输出 
–line-numbers //显示错误的行号 
-L, –skip-line-numbers //忽略错误的行号 
-n, –unbuffered //每执行一次sql后,刷新缓存 
–column-names //查寻时显示列信息,默认是加上的 
-N, –skip-column-names //不显示列信息 
-O, –set-variable=name
//设置变量用法是–set-variable=var_name=var_value 
–sigint-ignore //忽视SIGINT符号(登录退出时Control-C的结果) 
-o, –one-database
//忽视除了为命令行中命名的默认数据库的语句。可以帮跳过日志中的其它数据库的更新。 
–pager[=name]
//使用分页器来显示查询输出,这个要在linux可以用more,less等。 
–no-pager //不使用分页器来显示查询输出。 
-p, –password[=name] //输入密码 
-P, –port=# //设置端口 
–prompt=name //设置mysql提示符 
–protocol=name //使用什么协议 
-q, –quick
//不缓存查询的结果,顺序打印每一行。如果输出被挂起,服务器会慢下来,mysql不使用历史文件。 
-r, –raw //写列的值而不转义转换。通常结合–batch选项使用。 
–reconnect
//如果与服务器之间的连接断开,自动尝试重新连接。禁止重新连接,使用–disable-reconnect。 
-s, –silent //一行一行输出,中间有tab分隔 
-S, –socket=name //连接服务器的sockey文件 
–ssl //激活ssl连接,不激活–skip-ssl 
–ssl-ca=name //CA证书 
–ssl-capath=name //CA路径 
–ssl-cert=name //X509 证书 
–ssl-cipher=name //SSL cipher to use (implies –ssl). 
–ssl-key=name //X509 密钥名 
–ssl-verify-server-cert //连接时审核服务器的证书 
-t, –table //以表格的形势输出 
–tee=name //将输出拷贝添加到给定的文件中,禁时用–disable-tee 
–no-tee //根–disable-tee功能一样 
-u, –user=name //用户名 
-U, –safe-updates //Only allow UPDATE and DELETE that uses keys. 
-U, –i-am-a-dummy //Synonym for option –safe-updates, -U. 
-v, –verbose //输出mysql执行的语句 
-V, –version //版本信息 
-w, –wait //服务器down后,等待到重起的时间 
–connect_timeout=# //连接前要等待的时间 
–max_allowed_packet=# //服务器接收/发送包的最大长度 
–net_buffer_length=# //TCP / IP和套接字通信缓冲区大小。 
–select_limit=# //使用–safe-updates时SELECT语句的自动限制 
–max_join_size=# //使用–safe-updates时联接中的行的自动限制 
–secure-auth //拒绝用(pre-4.1.1)的方式连接到数据库 
–server-arg=name //Send embedded server this as a parameter. 
–show-warnings //显示警告

一,mysql命令行参数 Usage: mysql [OPTIONS][database]//命令方式 -?,
–help //显示帮助信息并退出 -I, –help //显示帮…

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图