MySQL操作命令梳理(2)
一、表操作
在mysql运维操作中会经常使用到alter这个修改表的命令,alter tables允许修改一个现有表的结构,比如增加或删除列、创造或消去索引、改变现有列的类型、或重新命名列或表本身,也能改变表的注释和表的类型。
下面就针对alter修改命令的使用做一梳理:
在mysql运维操作中会经常使用到alter这个修改表的命令,alter tables允许修改一个现有表的结构,比如增加或删除列、创造或消去索引、改变现有列的类型、或重新命名列或表本身,也能改变表的注释和表的类型。
下面就针对alter修改命令的使用做一梳理:
1、删除列
alter table 表名 DROP 列名; //或者 alter table 表名 drop column 列名;
-------------------------------------------------------------------------------------
drop database 库名; //删除库
drop table 表名; //删除表
delete from 表名; //清空表中所有数据,但这张表没有删除,保留的是空表。
delete from 表名 where ...; //删除表中字段
------------------------------------------------------------------------------------
2、增加列
alter table 表名 ADD 列名 列的属性(如INT NOT NULL COMMENT '注释说明')
3、修改列的类型信息。
alter table 表名 CHANGE 列名 新列名 新列属性;
alter table 表名 CHANGE 列名 新列名(这里可以用和原来列同名即可) BIGINT NOT NULL COMMENT '注释说明'
4、重命名列
alter table 表名 CHANGE 列名 新列名 BIGINT NOT NULL COMMENT '注释说明'
5、重命名表
alter table 表名 RENAME 表新名
6、删除表中主键
alter table 表名 drop primary key
-------------------------------------------------------------------------------------
如若删除带自增属性的主键,那么要先删除自增长,再删除主键
Alter table haha change id id int(); //删除自增长
Alter table haha drop primary key; //删除主建
-------------------------------------------------------------------------------------
7、添加主键
alter table 表名 ADD CONSTRAINT PK_表名 PRIMARY KEY(列名1,列名2)
-------------------------------------------------------------------------------------
Alter table haha add primary key(id); //将haha表的id列添加主键
Alter table haha change id id int() not null auto_increment; //自增长属性
-------------------------------------------------------------------------------------
sql中constraint前缀的用意(PK、UK、DF、CK、FK)
--主键
constraint PK_字段 primary key(字段),
--唯一约束
constraint UK_字段 unique key(字段),
--默认约束
constrint DF_字段 default('默认值') for 字段,
--检查约束
constraint CK_字段 check(约束。如:len(字段)>),
--主外键关系
constraint FK_主表_从表 foreign(外键字段) references 主表(主表主键字段)
8、添加/创建索引
alter table 表名 add index 索引名 列名; //普通索引
ALTER TABLE 表名 ADD UNIQUE index 索引名 (列名1,列名2); //联合索引
ALTER TABLE 表名 ADD PRIMARY index KEY 索引名 列名; //主键索引
-------------------------------------------------------------------------------------
SHOW INDEX FROM 表名字; //查询索引 删除索引可以使用ALTER TABLE或DROP INDEX语句来实现。DROP INDEX可以在ALTER TABLE内部作为一条语句处理
DROP index 索引名 ON 表名字 列名; //删除普通索引
ALTER TABLE 表名 DROP INDEX 索引名 列名; //删除普通索引
ALTER TABLE 表名 DROP UNIQUE 索引名 (列名1,列名2); //删除联合索引
ALTER TABLE 表名 DROP PRIMARY KEY 索引名 列名; //删除主键索引
-------------------------------------------------------------------------------------
9、添加唯一限制条件索引
alter table 表名 add unique emp_name2(cardnumber); //empname 类型 为String 字符串类型
10、创建联合唯一索引
alter table 表名 ADD UNIQUE INDEX 索引名 (列名1,列名2);
alter ignore table 表名 add unique index(user_id,user_name); //它会删除重复的记录(别怕,会保留一条),然后建立唯一索引,高效而且人性化.(慎用)
11、修改字段属性
alter table 表名 modify column 字段名 类型
alter table 表名 modify column 字段1 类型,字段2 类型
例如:将class表的name列属性改成varchar()
alter table class modify column name varchar();
或者:
alter table 表名 change 列名 列名 varchar();
alter table class change name name varchar()
例:
上面提到了使用alter命令修改表名,修改列名;那么修改字段值,就需要使用update命令,如下:
mysql> select * from huanqiu.haha;
+----+-----------+
| id | name |
+----+-----------+
| | wangshibo |
| | ouou |
| | hahahahha |
+----+-----------+
rows in set (0.00 sec) mysql> update huanqiu.haha set name="wangshikui" where id=;
Query OK, row affected (0.00 sec)
Rows matched: Changed: Warnings: mysql> select * from huanqiu.haha;
+----+------------+
| id | name |
+----+------------+
| | wangshibo |
| | wangshikui |
| | hahahahha |
+----+------------+
rows in set (0.01 sec)
1、修改root登陆密码:
mysql> update mysql.user set password=password("") where host='192.168.1.101' and user="root";
update 表名 set 列名="新的字段值" [where 限制条件1 and 限制条件1];
update 表名 set 列名1="新的字段值",列名2="新的字段值" [where 限制条件1 and 限制条件1] [ORDER BY ...] [LIMIT row_count]; insert into 表名 values(所有字段的插入值);
insert into 表名(指定字段) values(指定字段);
insert into 表名 values(所有字段的插入值),(所有字段的插入值),(所有字段的插入值); //批量插入
mysql> select * from huanqiu.haha;
+----+------------+
| id | name |
+----+------------+
| | wangshikui |
+----+------------+
row in set (0.00 sec) mysql> insert into huanqiu.haha values(,"wangshibo"),(,"wangshikui"),(,"wangjuan"),(,"wangman");
Query OK, rows affected (0.00 sec)
Records: Duplicates: Warnings: mysql> select * from huanqiu.haha;
+----+------------+
| id | name |
+----+------------+
| | wangshibo |
| | wangshikui |
| | wangjuan |
| | wangman |
| | wangshikui |
+----+------------+
2、创建操作
创建表时指定AUTO_INCREMENT自增值的初始值:
mysql> CREATE TABLE 表名 (ID INT() PRIMARY KEY AUTO_INCREMENT)AUTO_INCREMENT=;
通过ALTER TABLE 修改初始值(但要大于表中的AUTO_INCREMENT自增值,否则设置无效):
mysql>ATLER TABLE 表名 AUTO_INCREMENT=;
如果自增序列的最大值被删除了,则在插入新记录时,该值被重用。
就是说如果表中原本有AUTO_INCREMENT属性值连续为78、100的值,但100这个数据被删除了,下此再添加数据的时候自增值为101,100被重用了。
即使在你将整个表中的所有数据delete清空后,之前的自增序列最大值还是会被重用。
解决办法是使用下面命令:
ATLER TABLE 表名 AUTO_INCREMENT=; //重新设置自增初始值
设置AUTO_INCREMENT_INCREMENT以及AUTO_INCREMENT_offset用户变量值(重启MySQL之后,这些修改会恢复为初始值1):
mysql>SET auto_increment_increment=; //自增量每次增加的值改为10,
mysql>SET auto_increment_offset=; //第一次加载数值时的偏移值的个位值
mysql>SHOW VARIABLES LIKE 'AUTO_INC%'; //查看修改后变量的值 mysql>SHOW TABLE STATUS FROM NAME_DB; //显示数据库NAME_DB中所有表的信息 mysql>SHOW CREATE TABLE NAME_TBL; //显示表NAME_TBL创建时的信息 mysql>SHOW VARIABLES LIKE 'AUTO_INC%'; //显示MySQL的AUTO_INC开头的用户会话变量(SHOW GLOBAL VARIABLES)
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | |
| auto_increment_offset | |
+--------------------------+-------+
rows in set (0.00 sec)
MySQL操作命令梳理(2)的更多相关文章
- mysql操作命令梳理(3)-pager
在mysql日常操作中,妙用pager设置显示方式,可以大大提高工作效率.比如select出来的结果集超过几个屏幕,那么前面的结果一晃而过无法看到,这时候使用pager可以设置调用os的more或者l ...
- mysql操作命令梳理(2)-alter(update、insert)
在mysql运维操作中会经常使用到alter这个修改表的命令,alter tables允许修改一个现有表的结构,比如增加或删除列.创造或消去索引.改变现有列的类型.或重新命名列或表本身,也能改变表的注 ...
- mysql操作命令梳理(1)-索引
1.创建索引索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引.以下命令语句分别展示了如何创建主键索引(PRIMARY KE ...
- mysql操作命令梳理(4)-grant授权和revoke回收权限
在mysql维护工作中,做好权限管理是一个很重要的环节.下面对mysql权限操作进行梳理: mysql的权限命令是grant,权限撤销的命令时revoke:grant授权格式:grant 权限列表 o ...
- mysql操作命令梳理-grant授权和revoke回收权限
在mysql维护工作中,做好权限管理是一个很重要的环节.下面对mysql权限操作进行梳理: mysql的权限命令是grant,权限撤销的命令时revoke:grant授权格式:grant 权限列表 o ...
- mysql操作命令梳理(5)-执行sql语句查询即mysql状态说明
在日常mysql运维中,经常要查询当前mysql下正在执行的sql语句及其他在跑的mysql相关线程,这就用到mysql processlist这个命令了.mysql> show process ...
- mysql操作命令梳理(4)-中文乱码问题
在平时的mysql运维操作中,经常会碰到插入中文字段后出现乱码的情况,产生中文乱码的原因一般有:1)mysql的编码格式不对,是latin1编码.强烈推荐将mysql下的编码格式都改为utf8,因为它 ...
- MySQL操作命令梳理(1)
一.索引 1.创建索引 索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引.以下命令语句分别展示了如何创建主键索引(PRIM ...
- Linux下Mysql 操作命令
Linux下Mysql 操作命令 一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysqlb ...
随机推荐
- Python文件中将print的输出内容重定向到变量中
有时候需要用到别人的代码, 但是又不想修改别人的文件, 想拿到输出的结果, 这时候就需要使用sys模块, 将print输出的内容重定向到变量中. Python调用sys模块中的sys.stdout, ...
- HBase Region重点剖析
Region的概念 Region是HBase数据管理的基本单位.数据的move,数据的balance,数据的split,都是按照region来进行操作的. region中存储这用户的真实数据,而为了管 ...
- Codeforces Gym100543L:Outer space invaders(区间DP)
题目链接 题意 有n个人,每个人有一个出现时间a和一个开枪时间b和一个距离d,在任意一个时刻,你可以选择炸人,你要炸一个人的花费是和他的距离d,并且所有的已经出现并且还没开枪的和你距离<=d的人 ...
- 【搜索引擎】 PostgreSQL 10 实时全文检索和分词、相似搜索、模糊匹配实现类似Google搜索自动提示
需求分析 要通过PostgreSQL实现类似Google搜索自动提示的功能,例如要实现一个查询海量数据中的商品名字,每次输入就提示用户各种相关搜索选项,例如淘宝.京东等电商查询 思路 这个功能可以用 ...
- Effective Java第三版(一) ——用静态工厂代替构造器
此文做为<Effective Java>系列的第一篇,所以有必要大概说下此书的特点,当然很多人可能都看过,毕竟是有着Java四大名著之一的大名在外,不过总会有萌新不了解,例如我!<E ...
- Linux命令学习-cd命令
Linux中,cd命令的全称是change directory,即改变目录的意思,主要用于切换工作目录到指定目录. 假设当前处于wintest用户的主目录,路径为 /home/wintest ,存在文 ...
- scala刷LeetCode--26 删除排序数组中的重复项
一.题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完 ...
- SpringBoot事物Transaction实战讲解教程
前言 本篇文章主要介绍的是SpringBoot的事物Transaction使用的教程. SpringBoot Transaction 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码 ...
- Vue状态管理之Bus
一般在项目中,状态管理都是使用Vue官方提供的Vuex 当在多组件之间共享状态变得复杂时,使用Vuex,此外也可以使用Bus来进行简单的状态管理 1.1 父组件与子组件之间的通信 vue.config ...
- Zeppelin 0.6.2使用Spark的yarn-client模式
Zeppelin版本0.6.2 1. Export SPARK_HOME In conf/zeppelin-env.sh, export SPARK_HOME environment variable ...