mysql常用命令
功能 | CMD |
---|---|
root账号登陆 | mysql -u root -p |
退出当前命令 | \c |
退出mysql命令行 | \q 或者 exit 或者 quit |
显示数据库 | SHOW DATABASES; show databases; 大小写都行 |
查看mysql数据库的运行状态 | status; |
创建数据库 | CREATE DATABASE test_db_name; |
删除数据库 | DROP DATABASE database_name; |
命令选择数据库 | use test_db_name; |
显示该数据库里的表 | show tables; |
创建表 | CREATE TABLE table_name; |
删除表 | DROP TABLE table_name; |
删除表中所有数据 | truncate table table_name; |
查看表具体信息 | desc table_name; DESCRIBE table_name; |
查看表行数 | select count(*) from table_name; |
修改表名 | ALTER TABLE old_table_name RENAME new_table_name; |
显示表的内容 | SELECT * FROM table_name; |
获取数据表中指定行数据 | select * from table_name limit 10;(前10行) |
在表列1后面增列2 | ALTER TABLE tbname ADD clum2 INT(11) AFTER clum1; |
创建表的视图 | CREATE VIEW <视图名> AS <SELECT语句> |
删除视图 | DROP VIEW [ IF EXISTS ] view_name; |
把mysql中一个数据库的表复制到另一个数据库中的表
CREATE TABLE mytbl_new LIKE production.mytbl;
INSERT mytbl_new SELECT * FROM production.mytbl;
第一个命令是创建新的数据表 mytbl_new ,并复制 mytbl 的数据表结构。
第二个命令是讲数据表 mytbl 中的数据复制到新表 mytbl_new 。
注:production.mytbl是指定要复制表的数据库名称为 production 。它是可选的。
假如没有production. ,MySQL数据库将会假设mytbl在当前操作的数据库。
MySQL创建视图
语法格式如下:
CREATE VIEW <视图名> AS <SELECT语句>
语法说明如下。
<视图名>:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。
<SELECT语句>:指定创建视图的 SELECT 语句,可用于查询多个基础表或源视图。
例如:
CREATE VIEW view_a AS SELECT * FROM a_data;
CREATE VIEW view_b AS SELECT * FROM b_data;
CREATE VIEW view_m AS SELECT * FROM m_data;
CREATE VIEW view_u AS SELECT * FROM u_data;
新增联合主键
联合主键作为表中数据的唯一索引id,若不添加行业字段主键,那么数据插入操作会发生覆盖。
#更改联合主键(新增之前需要删除主键)
alter table table_name drop primary key;
alter table table_name add primary key(id01,id02,id03,id04);
数据截断警告
WARNING:
/home/work/scripts/DBF.py:76: Warning: Data truncated for column 'e' at row 1
cur.execute(sql)
原因:
Decimal为SQL Server、MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部分以及小数部分的位数。使用精确小数类型不仅能够保证数据计算更为精确,还可以节省储存空间。
decimal(12,2)中的“2”表bai示小数部分du的位数,如值果插入的值未指定小数部分或者小数部分不足两位则会自动补到到2位小数,若插入的值小数部分超过了2为则会发生截断,截取前2位小数。
“12”指的是整数部分加小数部分的总长度,也即插入的数字整数部分不能超过“12-2”位,否则不能成功插入,会报超出范围的错误。
e[dim]['e'] = float("%.6f" % (1000 * e_data[dim]['c']/e_data[dim]['es']))
具体原因:
e 的值为6位小数,数据库中的decimal(12,2)只保存两位小数,因此发生数据截断。
修改表名、字段名、字段类型、增加字段、删除字段
更多参考:mysql 修改表名,修改字段类型,增加字段,删除字段,添加字段备注,添加索引
alter table 表名 change 现有字段名称 修改后字段名称 数据类型
alter table zz_old_m_data change Ctr Cvr decimal(12,6)