zoukankan      html  css  js  c++  java
  • MySQL常用命令

    1、系统管理

       查看数据库的大小

    use 数据库名
    SELECT sum(DATA_LENGTH)+sum(INDEX_LENGTH)
    FROM information_schema.TABLES where TABLE_SCHEMA='数据库名';
    得到的结果是以字节为单位

    1.1 连接MySQL

      格式: mysql -h 主机地址 -u 用户名 -p 用户密码

      举例

      例1:连接到本机上的MySQL。

      首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令"mysql –u root –p",回车后提示你输密码,如果刚安装好MySQL,超级用户"root"是没有密码的,故直接回车即可进入到MySQL中了,MySQL的提示符是: mysql>。

      例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

    mysql -h 110.110.110.110 -u root –p abcd123

       备注:u与root可以不用加空格,其它也一样。

      退出MySQL命令: exit (回车)。

    1.2 修改新密码

      格式:mysqladmin -u 用户名 -p 旧密码 password 新密码

      举例

      例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令:

    mysqladmin -u root -password ab12

       备注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

      例2:再将root的密码改为djg345。

    mysqladmin -u root -p ab12 password djg345

     

    1.3 增加新用户

      备注:和上面不同,下面的因为是MySQL环境中的命令,所以后面都带一个分号";"作为命令结束符。

      格式:grant select on 数据库.* to 用户名@登录主机 identified by '密码'

      举例

      例1:增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MySQL,然后键入以下命令:

    grant select,insert,update,delete on *.* to test2@localhost identified by 'abc';

       或者

    grant all privileges on *.* to test2@localhost identified by 'abc';

       然后刷新权限设置。

    flush privileges;

       例2:如果你不想test2有密码操作数据库"mydb"里的数据表,可以再打一个命令将密码消掉。

    grant select,insert,update,delete on mydb.* to test2@localhost identified by '';

     

    1.4 启动停止MySQL

      1)Windows环境下

      首先进入DOS环境,然后进行下面操作。

    • 启动服务

    net start mysql

     

    • 停止服务

    net stop mysql

     

      2)Linux环境下

    • 启动服务

    service mysql start   或者   service mysqld start

     

    • 停止服务

    service mysql stop    或者   service mysqld stop

     

    2、数据库操作

    2.1 库操作

      1)创建数据库

      命令:create database <数据库名>

      例如:建立一个名为xhkdb的数据库

    mysql> create database xhkdb;

     

      2)显示所有的数据库

      命令:show databases (注意:最后有个s

    mysql> show databases;

     

      3)删除数据库

      命令:drop database <数据库名>

      例如:删除名为 xhkdb的数据库

    mysql> drop database xhkdb;

     

      4)连接数据库

      命令: use <数据库名>

      例如:如果xhkdb数据库存在,尝试存取它

    mysql> use xhkdb;

     

      屏幕提示:Database changed

      5)查看当前使用的数据库

     

    mysql> select database();

     

      6)当前数据库包含的表信息

     

    mysql> show tables; (注意:最后有个s)

     

    2.2 表操作

      备注:操作之使用"use <数据库名>"应连接某个数据库。

     

      1)建表

      命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);

    mysql> create table MyClass(

    > id int(4) not null primary key auto_increment,

    > name char(20) not null,

    > sex int(4) not null default '0',

    > degree double(16,2));

     

      2)获取表结构

      命令: desc 表名,或者show columns from 表名

    mysql>DESCRIBE MyClass

    mysql> desc MyClass;

    mysql> show columns from MyClass;

     

      3)删除表

      命令:drop table <表名>

      例如:删除表名为 MyClass 的表

    mysql> drop table MyClass;

     

      4)插入数据

      命令:insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]

      例如:往表 MyClass中插入二条记录,这二条记录表示:编号为1的名为Tom的成绩为96.45,编号为2 的名为Joan 的成绩为82.99,编号为3 的名为Wang 的成绩为96.5。

    mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);

     

      5)查询表中的数据

    • 查询所有行

      命令: select <字段1,字段2,...> from < 表名 > where < 表达式 >

      例如:查看表 MyClass 中所有数据

    mysql> select * from MyClass;

     

    • 查询前几行数据

      例如:查看表 MyClass 中前2行数据

    mysql> select * from MyClass order by id limit 0,2;

     

      或者

    mysql> select * from MyClass limit 0,2;

     

      6)删除表中数据

      命令:delete from 表名 where 表达式

      例如:删除表 MyClass中编号为1 的记录

    mysql> delete from MyClass where id=1;

     

      7)修改表中数据

      命令:update 表名 set 字段=新值,… where 条件

     

    mysql> update MyClass set name='Mary' where id=1;

     

      8)在表中增加字段

      命令:alter table 表名 add字段 类型 其他;

      例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0

     

    mysql> alter table MyClass add passtest int(4) default '0'

     

      9)更改表名

      命令:rename table 原表名 to 新表名;

      例如:在表MyClass名字更改为YouClass

    mysql> rename table MyClass to YouClass;

     

      10)更新字段内容

      命令:update 表名 set 字段名 = 新内容

         update 表名 set 字段名 = replace(字段名,'旧内容','新内容');

      例如:文章前面加入4个空格

     

    update article set content=concat('  ',content);

     

    3、数据库导入导出

    3.1 从数据库导出数据库文件

      使用"mysqldump"命令

      首先进入DOS界面,然后进行下面操作。

      1)导出所有数据库

      格式:mysqldump -u [数据库用户名] -p -A>[备份文件的保存路径]

      2)导出数据和数据结构

      格式:mysqldump -u [数据库用户名] -p [要备份的数据库名称]>[备份文件的保存路径]

      举例

      例1:将数据库mydb导出到e:MySQLmydb.sql文件中。

      打开开始à运行à输入"cmd",进入命令行模式。

     

    c:> mysqldump -h localhost -u root -p mydb >e:MySQLmydb.sql

     

      然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。

      例2:将数据库mydb中的mytable导出到e:MySQLmytable.sql文件中。

     

    c:> mysqldump -h localhost -u root -p mydb mytable>e:MySQLmytable.sql

     

      例3:将数据库mydb的结构导出到e:MySQLmydb_stru.sql文件中。

     

    c:> mysqldump -h localhost -u root -p mydb --add-drop-table >e:MySQLmydb_stru.sql

     

      备注:-h localhost可以省略,其一般在虚拟主机上用。

      3)只导出数据不导出数据结构

      格式:mysqldump -u [数据库用户名] -p -t [要备份的数据库名称]>[备份文件的保存路径]

      4)导出数据库中的Events

      格式:mysqldump -u [数据库用户名] -p -E [数据库用户名]>[备份文件的保存路径]

      5)导出数据库中的存储过程和函数

      格式:mysqldump -u [数据库用户名] -p -R [数据库用户名]>[备份文件的保存路径]

    3.2 从外部文件导入数据库中

      1)使用"source"命令

      首先进入"mysql"命令控制台,然后创建数据库,然后使用该数据库。最后执行下面操作。

     

    mysql>source [备份文件的保存路径]

     

      2)使用"<"符号

      首先进入"mysql"命令控制台,然后创建数据库,然后退出MySQL,进入DOS界面。最后执行下面操作。

     

    mysql -u root –p < [备份文件的保存路径]

     添加索引

    1.添加PRIMARY KEY(主键索引)
    mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )

    2.添加UNIQUE(唯一索引)
    mysql>ALTER TABLE `table_name` ADD UNIQUE (`column`)

    3.添加INDEX(普通索引)
    mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

    4.添加FULLTEXT(全文索引)
    mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`)

    5.添加多列索引
    mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

    联合两个表的数据来更新其中一个表的数据:

    UPDATE a LEFT JOIN b ON a.id = b.aid SET a.des = substr(b.body,1,240) AND id BETWEEN 123 AND 256;

    添加多个字段:

    ALTER TABLE users
    ADD COLUMN `count` SMALLINT(6) NOT NULL AFTER `lastname`,
    ADD COLUMN `log` VARCHAR(12) NOT NULL AFTER `count`,
    ADD COLUMN `status` INT(10) UNSIGNED NOT NULL AFTER `log`;

  • 相关阅读:
    BZOJ 3625: [Codeforces Round #250]小朋友和二叉树
    HDU 2069 Coin Change
    HDU 1709 The Balance
    HDU 1398 Square Coins
    HDU 1171 Big Event in HDU
    HDU 1085 Holding Bin-Laden Captive!
    BZOJ 3167: [Heoi2013]Sao
    BZOJ 1408: [Noi2002]Robot
    BZOJ 3163: [Heoi2013]Eden的新背包问题
    【Tsinsen-A1486】树(王康宁) 点分治 + Trie
  • 原文地址:https://www.cnblogs.com/emanlee/p/3535890.html
Copyright © 2011-2022 走看看