mysql小结

MySQL 添加列,修改列,删除列

 ALTER TABLE:添加,修改,删除表的列,约束等表的定义。

  • 查看列:desc 表名;
  • 修改表名:alter table t_book rename to bbb;
  • 添加列:alter table 表名 add column 列名 varchar(30);
  • 删除列:alter table 表名 drop column 列名;
  • 修改列名MySQL: alter table bbb change nnnnn hh int;
  • 修改列名SQLServer:exec sp_rename't_student.name','nn','column';
  • 修改列名Oracle:lter table bbb rename column nnnnn to hh int;
  • 修改列属性:alter table t_book modify name varchar(22);
  • 清空表数据:truncate 表名

MySQL 查看约束,添加约束,删除约束 添加列,修改列,删除列

  • 查看表的字段信息:desc 表名;
  • 查看表的所有信息:show create table 表名;
  • 添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);
  • 删除主键约束:alter table 表名 drop primary key;
  • 添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
  • 删除外键约束:alter table 表名 drop foreign key 完整约束名;   alter table wb_comment drop 外键名;  (完整约束名可以通过show create table 表名;  得到)

数据库导入导出

1.导出整个数据库

  mysqldump -u 用户名 -p 数据库名 > 导出的文件名

  mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql

2.导出一个表

  mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

  mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql

3.导出一个数据库结构

  mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:wcnc_db.sql

  -d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table

4.按条件导出数据库表

        mysqldump -uroot -p gz_palm sys_recognition_log_image --where="create_time>'2024-05-01'" > /root/sys_recognition_log_iamge_240530.sql

4.导入数据库

  常用source 命令

  进入mysql数据库控制台,

  如mysql -u root -p

  mysql>use 数据库

  然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

  mysql>source d:wcnc_db.sql

5. mysql导入建表sql语句时中文注释的乱码问题的解决办法如下:

   在sql文件开头加上 SET NAMES 'utf8';

-------------------------------------------------------------------------------------------------

 MySQL数据库备份和还原的常用命令:

备份MySQL数据库的命令

mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

备份MySQL数据库为带删除表的格式
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。

mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql

直接将MySQL数据库压缩备份

mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

备份MySQL数据库某个(些)表

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

同时备份多个MySQL数据库

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

仅仅备份数据库结构

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

备份服务器上所有数据库

mysqldump –all-databases > allbackupfile.sql

还原MySQL数据库的命令

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

还原压缩的MySQL数据库

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

将数据库转移到新服务器

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

--------------------------------------------------------------------------------------------------

上面为导入导出*.sql文件的操作。

MySQL数据库还可以通过拷贝来备份数据库文件,下面介绍一下注意事项。

Mysql安装后在data文件夹中有4种文件.frm .MYD .MYI .opt

*.frm 是描述了表的结构;
*.MYD 保存了表的数据记录;
*.MYI 则是表的索引;
*.opt 记录数据库的选项,数据库的字符集设置 ( character_set_database和collation_database );

只要在mysql的安装文件中找到data文件夹,然后在里面建立一个文件夹,比如test。这个test其实就对应着数据库的名称,所以,你想要起什么样的数据库名称就把文件夹起什么名字。

然后把.frm文件导进去。注意还要在data目录下加入ib_logfile0,ib_logfile1,ibdata1这几个文件。
要不然在mysql里只能找到表名(其实一个.frm文件就是对应的数据库中的一个表。)
而不能对其进行操作。

如果查询的时候出现某某表不存在的问题,在确认.frm ,db.opt 文件完整的情况下,那么这种表使用的应该是innodb表引擎,应该将数据目录中的innodb数据文件(认ibdata1)

说明:
比如你原来的mysql中有一些数据库了。可以先把原来的data改名字备份在同一目录下。(可能要改名字系统会提示有另一程序在使用这个文件,这个时候可以到控制面板的服务里面,把mysql的服务先关掉,等改完名字,把东西都导进去后再开服务)
然后另建一个data,把在里面建好数据库名把.frm导进去。

--------------------------------------------------------------------------------------------------

停止服务可以通过管理工具里面的服务来停,或者用cmd 打开dos界面输入net stop mysql,启动用net start mysql;

只要用旧的ibdata1覆盖原来的,再把相关的数据库copy过去,然后重新启动数据库, 就ok了,进入以后要是对表不能操作可能是数据表已经损坏了。(如果不行报1146错 ,建议重启一下机器在看看)

ib_logfile0,ib_logfile1好象也可以不用覆盖,不然有时候mysql数据库启动不了了,报1067错误。

MYSQL创建utf-8格式的数据库

  • GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

  • UTF8: CREATE DATABASE test2 DEFAULT CHRACTER SET utf8 COLLATE utf8_general_ci;

  • UTF8mb4: create database clc_shenzhen default CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

给某个用户赋予某个数据库的所有权限

grant all privileges on facegen.* to 'test'@'%';

处理科学计数法

SELECT CONCAT(gid, "\t"),CONCAT(aid, "\t"),SUM(cnt) as clk_count FROM `ec_aid_oid_hour` WHERE dt BETWEEN "2019-12-16 01:00:00" AND "2019-12-17 01:41:00" GROUP BY gid,aid HAVING clk_count>5000

MYSQL整型取值范围:

int32就是INT,int64就是BIGINT

MYSQL创建存储过程:

ymoffers_report > delimiter $$

ymoffers_report > create procedure del_erp_data()

    -> BEGIN

    ->   DELETE FROM erp_income_cost_record WHERE record_date < DATE_SUB(CURDATE(),INTERVAL 3 DAY);

    -> END$$

Query OK, 0 rows affected (0.01 sec)

Json类型查询和更新数据:

  • SELECT *,json_extract(extra,'$.answers.answer') FROM `statistic_question_history` where ask_time>="2022-04-22 00:00:00" AND extra LIKE '%station_id"
  • UPDATE ads SET payload = json_set(payload,"$.status", 2) WHERE oid=698321

求MYSQL中某字段内的重复数据:

  • select d_name,count(d_name) from tbl_vod group by d_name having count(d_name)>1

MYSQL查询某个库各表的数据记录数

SELECT table_name, TABLE_ROWS AS 'Rows' FROM information_schema.TABLES WHERE table_schema = 'dongguan_palm_alg';

MYSQL按月分组查询

SELECT DATE_FORMAT(ask_time,'%Y%m'),question_type,count(*) FROM `statistic_question_history` WHERE ask_time>='2022-07-01' and ask_time<'2023-01-01' GROUP BY DATE_FORMAT(ask_time,'%Y%m'),question_type

Float,Double,Decimal的区别:

都工作两年了,还不知道浮点数如何转二进制? - 知乎

mysql : float,double,decimal - 简书

PostgreSQL命令: 

  • 数据库登陆:psql -U postgres -d conversion_data -p 5432 -h 172.16.1.55
  • 查看表结构:\d orders

四种隔离级别: 

mysql 四种隔离级别

幻读是啥,会有什么问题?如何解决?

UBUNTU安装mysql

安装mysql

centos卸载和安装mysql

卸载mysql

安装mysql

CentOs7 安装mysql,启动服务显示Failed to start mysqld.service: Unit not found_centos failed to start mysql.service: unit not fou-优快云博客

安装后无法查到密码的解决方法

麒麟系统安装mysql

银河麒麟V10安装mysql5.7详细过程-优快云博客

关闭银河麒麟系统的“麒麟安全授权认证”窗口_麒麟安全授权认证 总弹出来-优快云博客

mysql binlog恢复数据

依据binlog恢复数据

mysql通过binlog日志恢复数据

GBase操作

  • 查看所有数据库用户表:select tabname from systables where statlevel='A'
  • -242错误处理:onstat -g sql 把连接到这个数据库库的sql都onmode -z杀掉
  • 数据库重启 onmode -ky && oninit -vy
  • 导出数据库中所有的表结构到文件db.sql:dbschema -d your_database -t all  db.sql 
  • 导出数据库中一个表的结构到文件db.sql:dbschema -d your_database_name -t your_table_name db.sql

mysql不走索引情况:

mysql哪些查询情况不走索引-mysql教程-PHP中文网

复杂sql记录:

SELECT
        ss.bus_time,
        ssss.name,CASE ssd.bus_type WHEN 0 THEN '首班车' ELSE '末班车' END as '首末班车',
        CASE ssd.direction WHEN 0 THEN '正方向' ELSE '反方向' END as '正反方向',
        sss.name as '终点站',
        ssd.is_delete
    FROM
        `subway_schedule` ss LEFT JOIN subway_line_station sls ON sls.id=ss.line_station_id
        LEFT JOIN subway_schedule_direction ssd ON ssd.id=ss.direction_id
        LEFT JOIN subway_line_station slss ON slss.id=ssd.terminal_id
        LEFT JOIN subway_station sss ON sss.sid=slss.station_id
        LEFT JOIN subway_station ssss ON ssss.sid=sls.station_id
    WHERE
        sls.line_id=19;

mysql筛选不含中文的记录:

select * from statistic_question_history where id not in (select id FROM statistic_question_history WHERE create_time>'2023-01-01' and create_time<'2024-01-01' and locate('?',CONVERT(before_question USING ASCII))) and create_time>'2023-01-01' and create_time<'2024-01-01'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值