zoukankan      html  css  js  c++  java
  • mysql tips

    登陆  跳到mysql bin 文件夹   mysql.exe -u root -p

                                          端口号不是默认的时候     mysql.exe -P 53306 -u root -p

    修改mysql默认root密码

    http://www.douban.com/group/topic/71659358/

    1、停止mysql服务 

    开始→运行→输入cmd,打开命令提示符窗口,然后输入net stop mysql,相关截图如下所示: 
    2、在命令提示符窗口中进入mysql安装目录中的bin目录 

    在命令提示符窗口中分别输入以下两条命令,每输入一条命令按回车键: 

    d:cd wwwmysqlin 
    3、进入mysql安全模式(这样不用输入密码就能进入mysql数据库) 

    输入mysqld-nt --skip-grant-tables(我用的时候没有mysqld-nt 我的mysql是5.1版本,所以使用mysqld --skip-grant-tables ),此时屏幕上可能没啥反应,不用管它,放在一边接着往下做 
    4、重新打开一个cmd命令提示符窗口,开始→运行→输入cmd,在新打开命令提示符窗口中输入mysql -uroot -p,然后提示输入密码,不用输入密码,直接按回车键 
    5、输入以下命令开始修改超级管理员root密码(注意:命令中mysql.user中间有个“点”;命令中的htmer.com即为新密码,根据你的实际情况,换成你的新密码即可) 

    update mysql.user set password=PASSWORD('htmer.com') where User='root'; 
    6、刷新权限表,输入如下命令 

    flush privileges; 
    7、退出,输入如下命令 

    quit 
    8、重新启动mysql服务(也可以直接重启服务器) 

    ①打开任务管理器,将mysql-nt.exe这个进程结束 
    ②在命令提示符中输入net start mysql即可重新启动mysql服务了

    mysql cmd向上箭头可以复制显示历史sql记录;

     mysql批量复制表数据

    方式1:Insert into santian_employee(last_name, email, birth,create_time,DEPARTMENT_ID) select last_name, email, birth,create_time,DEPARTMENT_ID  from santian_employee

    tip1:mysql 反引号可以区分MYSQL的保留字与普通字符类似sqlserver的书名号[];可以用来处理别名;但是列名不建议包起来

    tip2:timestamp是时间戳,当该条数据新建或更新的时候会自动更新;可用来处理脏数据;

    tip3:mysql 事务隔离级别:

          读未提交:只要修改了,事务还未提交就可以改之后的结果。出现问题,无法回滚。

          读已提交:改了还要提交了才可以读到结果。

          可重复读:执行前保存一个快照。不管改没改,看到的都是快照的内容

          串行化(不可并发):不能并发访问,类似java中的同步  serializable关键字。

    MySQL 数字类型转换函数(concat/cast)
    1、将Int 转为varchar经常用 concat函数,比如concat(8,’0′) 得到字符串 ’80′
    2、将varchar 转为Int 用 cast(a as signed) a为varchar类型的字符串
    总结:类型转换和SQL Server一样,就是类型参数有点点不同 : CAST(xxx AS 类型) , CONVERT(xxx,类型)
    可用的类型
    二进制,同带binary前缀的效果 : BINARY
    字符型,可带参数 : CHAR()
    日期 : DATE
    时间: TIME
    日期时间型 : DATETIME
    浮点数 : DECIMAL
    整数 : SIGNED
    无符号整数 : UNSIGNED


    mysql 中timestamp默认不能为null

    在MYSQL中如果在建表的时候没有指定Timestamp字段是否为NULL,则系统自动添加默认值,使用DEFAULT NULL也不好用,其实是可以使用NULL直接指定的,如下:

    `CREATE_DATE` TIMESTAMP NULL

    2、创建一个数据库abccs 
    mysql> CREATE DATABASE abccs; 

    删除主键

    ALTER TABLE `wfmtest`.`products` DROP PRIMARY KEY;

    列 用特殊的符号包裹起来区别关键字`products`

    string 函数 http://dev.mysql.com/doc/refman/5.7/en/string-functions.html

    日期函数 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html

    可视化数据库操作工具 Navicat for MySQL MySQL Administrator

     mysql 常用cmd命令

    连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) 
    断开:exit (回车) 

    创建授权:grant select on 数据库.* to 用户名@登录主机 identified by "密码" 
    修改密码:mysqladmin -u用户名 -p旧密码 password 新密码 
    删除授权: revoke select,insert,update,delete om *.* from test2@localhost; 

    显示数据库:show databases; 
    显示数据表:show tables; 
    显示表结构:describe 表名; desc 表名;

    创建库:create database 库名; 
    删除库:drop database 库名; 
    使用库:use 库名; 

    创建表:create table 表名 (字段设定列表); 
    删除表:drop table 表名; 
    修改表:alter table t1 rename t2 
    查询表:select * from 表名; 
    清空表:delete from 表名; 
    备份表: mysqlbinmysqldump -h(ip) -uroot -p(password) databasename tablename > tablename.sql 
    恢复表: mysqlbinmysql -h(ip) -uroot -p(password) databasename tablename < tablename.sql(操作前先把原来表删除) 

    增加列:ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,ADD INDEX (c); 
    修改列:ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20); 
    删除列:ALTER TABLE t2 DROP COLUMN c; 

    备份数据库:mysqlinmysqldump -h(ip) -uroot -p(password) databasename > database.sql 
    恢复数据库:mysqlinmysql -h(ip) -uroot -p(password) databasename < database.sql 
    复制数据库:mysqlinmysqldump --all-databases > all-databases.sql 
    修复数据库:mysqlcheck -A -o -uroot -p54safer 

    文本数据导入: load data local infile "文件名" into table 表名; 
    数据导入导出:mysqlinmysqlimport database tables.txt

    MYSQL获取自增ID的四种方法

    1. select max(id) from tablename

    2.SELECT LAST_INSERT_ID() 函数

    LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变。

    在多用户交替插入数据的情况下max(id)显然不能用。这时就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的 Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert or update 操作生成的第一个record的ID。这个值不能被其它客户端(Connection)影响,保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁。使用单INSERT语句插入多条记录, LAST_INSERT_ID返回一个列表。 

    3. select @@IDENTITY;

     @@identity 是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量。一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头。

    比如有个表A,它的自增列是id,当向A表插入一行数据后,如果插入数据后自增列的值自动增加至101,则通过select @@identity得到的值就是101。使用@@identity的前提是在进行insert操作后,执行select @@identity的时候连接没有关闭,否则得到的将是NULL值。 

    4. SHOW TABLE STATUS;

    得出的结果里边对应表名记录中有个Auto_increment字段,里边有下一个自增ID的数值就是当前该表的最大自增ID.

  • 相关阅读:
    操作系统:进程同步
    操作系统:线程的概念
    操作系统:进程的概念与控制
    操作系统:操作系统概述
    CTF-WEB:攻防世界 ics-05(preg_replace() 函数 /e 漏洞)
    《剑指 Offer》学习记录:题 11:旋转数组的最小数字
    《剑指 Offer》学习记录:题 28:对称二叉树
    Linux为什么不是硬实时
    普通线程和内核线程
    linux内核栈和用户栈
  • 原文地址:https://www.cnblogs.com/santian/p/4385936.html
Copyright © 2011-2022 走看看