搜尋
首頁資料庫mysql教程MySQL 基础常用命令_MySQL

bitsCN.com 一、启动与关闭

1.1 Linux下启动mysql 的命令:

  • a. rpm包安装:service mysqld start
  • b. 源码包安装:/usr/local/mysql/bin/mysqld_safe --user=mysql &

1.2 Linux下重启mysql 的命令:

  • a. rpm包安装:service mysqld restart
  • b. 源码包安装:
    • 先关闭mysql

      /usr/local/mysql/bin/mysqladmin -uroot -p shutdown

    • 再启动mysql/usr/local/mysql/bin/mysqld_safe --user=mysql &

1.3 Linux下关闭mysql 的命令:

  • a. rpm包安装:service mysqld stop
  • b. 源码包安装:
    • 方法1、/usr/local/mysql/bin/mysqladmin -uroot -p shutdown
    • 方法2、killall mysqld           //强行终止MySQL数据库服务,有可能导致表损坏,不建议使用

二、数据库连接

2.1 连接MySQL

格式:$mysql_dir/bin/mysql [-h主机地址] -u用户名 -p用户密码,回车后提示输入密码。

2.2 退出MySQL

格式:exit/quit

 

三、修改密码

3.1 mysqladmin 命令

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

例1:给root加个密码123456。首先在终端下进入目录$mysql_dir/bin,然后键入以下命令

./mysqladmin -uroot password ’123456′

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

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

./mysqladmin -uroot -p123456 password abc123

3.2 UPDATE user 语句

首先使用root 帐户登入mysql,然后执行:

UPDATE mysql.user SET password=PASSWORD('123456') WHERE user='root';FLUSH PRIVILEGES;

3.3 SET PASSWORD 语句

同样,首先使用root 帐户登入mysql,然后执行:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('abc123');

四、创建用户与授权

4.1 CREATE USER

CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']    [, user [IDENTIFIED BY [PASSWORD] 'password']] ...

CREATE USER用于创建新的MySQL账户。要使用CREATE USER,您必须拥有mysql 数据库的全局CREATE USER权限,或拥有INSERT权限。对于每个账户,CREATE USER会在没有权限的mysql.user表中创建一个新记录。如果账户已经存在,则出现错误。

使用自选的IDENTIFIED BY子句,可以为账户指定一个密码。user值和密码的给定方法和GRANT语句一样。特别要注意的是,要在纯文本中指定密码,需忽略PASSWORD关键词。要把密码指定为由PASSWORD()函数返回的混编值,需包含关键字PASSWORD。

例1:创建新用户david & sandy

mysql> create user 'david'@'localhost' identified by 'password';Query OK, 0 rows affected (0.00 sec)mysql>
mysql> create user 'sandy'@'localhost' identified by PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19';Query OK, 0 rows affected (0.00 sec)mysql>

4.2 使用GRANT语句

最好的方法是使用GRANT语句,因为这样更精确,错误少。从MySQL 3.22.11起提供了GRANT;它的主要用途是来给帐户授权的,但也可用来建立新帐户并同时授权。

注意:当mysql 运行于no_auto_create_user 时要提供新建用户的密码,否则不能创建新用户。

格式:

GRANT privileges ON databasename.tablename TO 'username'@'host' identified by 'password'; 

例1、增加一个用户test1,密码为abc,让他可以在任何主机上登录,并对所有数据库拥有所有权限。

首先用以root用户连入MySQL,然后键入以下命令:

grant all privileges on *.* to 'test1'@'%' identified  by 'abc';flush privileges;

例2、增加一个用户test2,密码为abc,让他只可以在localhost上登录,并可以对数据库david进行查询、插入、修改、删除的操作。

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

如果不想test2有密码,可以再打一个命令将密码消掉。

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

grant 更多用法,请自行Google+Baidu。

4.3 直接操作MySQL授权表

除了GRANT,你可以直接用INSERT语句创建相同的账户,然后使用FLUSH PRIVILEGES告诉服务器重载授权表。

例1:创建用户test3,让其具有同4.2 例2中test2用户同样的权限。

mysql> insert into mysql.user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv) values('localhost', 'test3', PASSWORD('password'),'Y','Y','Y','Y');Query OK, 1 row affected, 3 warnings (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)mysql> 
mysql> select Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv from mysql.user where User='test3';+-----------+-------+-------------------------------------------+-------------+-------------+-------------+-------------+| Host      | User  | Password                                  | Select_priv | Insert_priv | Update_priv | Delete_priv |+-----------+-------+-------------------------------------------+-------------+-------------+-------------+-------------+| localhost | test3 | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | Y           | Y           | Y           | Y           | +-----------+-------+-------------------------------------------+-------------+-------------+-------------+-------------+1 row in set (0.00 sec)mysql> 

当用INSERT创建账户时,使用FLUSH PRIVILEGES 的原因是告诉服务器重读授权表。否则,只有重启服务器后更改才会生效。使用 GRANT,则不需要使用FLUSH PRIVILEGES。

用INSERT语句时,使用PASSWORD()函数是为了加密密码。GRANT语句自动加密密码,因此不需要PASSWORD()。

'Y' 值启用账户权限。

五、库操作

必须首先登录到mysql 中,有关操作都是在mysql 的提示符下进行,而且每个命令以分号结束。

5.1 创建数据库

命令:create database ;

例1:创建一个名为test 的数据库

mysql> create database test;Query OK, 1 row affected (0.00 sec)mysql>

5.2 显示所有的数据库

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

mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema | | david              | | mysql              | | test               | +--------------------+4 rows in set (0.00 sec)mysql> 

5.3 删除数据库

命令:drop database ;

例2:删除名为test 的数据库

mysql> drop database test;Query OK, 0 rows affected (0.00 sec)mysql> 

5.4 连接数据库

命令: use ;

例3:连接david 数据库

mysql> use david;Database changedmysql> 

5.5 查看当前使用的数据库

命令:select database();

mysql> select database();+------------+| database() |+------------+| david      | +------------+1 row in set (0.00 sec)mysql> 

5.6 当前数据库包含的表信息

命令:show tables;(注意:最后有个s)

mysql> show tables;+-----------------+| Tables_in_david |+-----------------+| emp             | +-----------------+1 row in set (0.00 sec)mysql> 

六、表操作

操作之前应连接某个数据库。

6.1 建立表

create table  (  [,.. ]);create table tablename (col1 type1 [not null] [primary key],col2 type2 [not null],..);
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));Query OK, 0 rows affected (0.04 sec)mysql> 

补充:根据已有的表创建新表。

create table tab_new like tab_old; (只有表结构)<br><br>create table tab_new as select * from tab_old; (既包含表结构,又包含表数据)

只包含表结构:

mysql> create table myclass2 like myclass;Query OK, 0 rows affected (0.00 sec)mysql> 

既包含表结构,又包含表数据:

mysql> insert into myclass values(1, 'david', 1, 20130417.16);Query OK, 1 row affected (0.02 sec)mysql> mysql> mysql> create table myclass3 as select * from myclass;Query OK, 1 row affected (0.07 sec)Records: 1  Duplicates: 0  Warnings: 0mysql> select * from myclass3;+----+-------+-----+-------------+| id | name  | sex | degree      |+----+-------+-----+-------------+|  1 | david |   1 | 20130417.16 | +----+-------+-----+-------------+1 row in set (0.02 sec)mysql> 

6.2 获取表结构

命令:

desc 表名;orshow columns from 表名;

获取myclass & myclass2 表结构

mysql> desc myclass;+--------+--------------+------+-----+---------+----------------+| Field  | Type         | Null | Key | Default | Extra          |+--------+--------------+------+-----+---------+----------------+| id     | int(4)       | NO   | PRI | NULL    | auto_increment | | name   | char(20)     | NO   |     |         |                | | sex    | int(4)       | NO   |     | 0       |                | | degree | double(16,2) | YES  |     | NULL    |                | +--------+--------------+------+-----+---------+----------------+4 rows in set (0.00 sec)mysql> show columns from myclass2;+--------+--------------+------+-----+---------+----------------+| Field  | Type         | Null | Key | Default | Extra          |+--------+--------------+------+-----+---------+----------------+| id     | int(4)       | NO   | PRI | NULL    | auto_increment | | name   | char(20)     | NO   |     |         |                | | sex    | int(4)       | NO   |     | 0       |                | | degree | double(16,2) | YES  |     | NULL    |                | +--------+--------------+------+-----+---------+----------------+4 rows in set (0.00 sec)mysql> 

6.3 删除表

命令:drop table ;

例:删除表名为 myclass3 的表

mysql> drop table myclass3;Query OK, 0 rows affected (0.00 sec)mysql> show tables;+-----------------+| Tables_in_david |+-----------------+| emp             | | myclass         | | myclass2        | +-----------------+3 rows in set (0.00 sec)mysql> 

6.4 更改表名

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

例:将表 myclass2 名字更改为 myclass4

mysql> rename table myclass2 to myclass4;Query OK, 0 rows affected (0.02 sec)mysql> show tables;+-----------------+| Tables_in_david |+-----------------+| emp             | | myclass         | | myclass4        | +-----------------+3 rows in set (0.00 sec)mysql> 

6.5 在表中增加字段

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

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

mysql> alter table myclass add passtest int(4) default '0';Query OK, 1 row affected (0.04 sec)Records: 1  Duplicates: 0  Warnings: 0mysql> desc myclass;+----------+--------------+------+-----+---------+----------------+| Field    | Type         | Null | Key | Default | Extra          |+----------+--------------+------+-----+---------+----------------+| id       | int(4)       | NO   | PRI | NULL    | auto_increment | | name     | char(20)     | NO   |     |         |                | | sex      | int(4)       | NO   |     | 0       |                | | degree   | double(16,2) | YES  |     | NULL    |                | | passtest | int(4)       | YES  |     | 0       |                | +----------+--------------+------+-----+---------+----------------+5 rows in set (0.00 sec)mysql> 

七、数据操作

7.1 插入数据

命令:insert into [( [,.. ])] values ( 值1 )[, ( 值n )];

例:向 myclass 表中插入以下记录,留空的表示使用默认值。

mysql> insert into myclass (id, name, sex, degree, passtest) values(1, 'david', 1, 80.56, 78);     Query OK, 1 row affected (0.00 sec)mysql> insert into myclass values(2, 'sandy', 0, 100, 90);Query OK, 1 row affected (0.00 sec)mysql> insert into myclass (id, name, sex, degree) values(3, 'renee', 0, 90.34);Query OK, 1 row affected (0.00 sec)mysql> insert into myclass (id, name) values(4, 'china');Query OK, 1 row affected (0.00 sec)mysql>

7.2 查询表中的数据

a. 查询所有行

命令:select from where ;

例1:查看表 myclass 中所有数据

mysql> select * from myclass;+----+-------+-----+--------+----------+| id | name  | sex | degree | passtest |+----+-------+-----+--------+----------+|  1 | david |   1 |  80.56 |       78 | |  2 | sandy |   0 | 100.00 |       90 | |  3 | renee |   0 |  90.34 |        0 | |  4 | china |   0 |   NULL |        0 | +----+-------+-----+--------+----------+4 rows in set (0.00 sec)mysql> 

例2:查询表 david 相关信息

mysql> select * from myclass where name='david';+----+-------+-----+--------+----------+| id | name  | sex | degree | passtest |+----+-------+-----+--------+----------+|  1 | david |   1 |  80.56 |       78 | +----+-------+-----+--------+----------+1 row in set (0.00 sec)mysql> 

b. 查询前几行数据

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

mysql> select * from myclass limit 2;+----+-------+-----+--------+----------+| id | name  | sex | degree | passtest |+----+-------+-----+--------+----------+|  1 | david |   1 |  80.56 |       78 | |  2 | sandy |   0 | 100.00 |       90 | +----+-------+-----+--------+----------+2 rows in set (0.00 sec)mysql>

或者:

mysql> select * from myclass order by id limit 2;+----+-------+-----+--------+----------+| id | name  | sex | degree | passtest |+----+-------+-----+--------+----------+|  1 | david |   1 |  80.56 |       78 | |  2 | sandy |   0 | 100.00 |       90 | +----+-------+-----+--------+----------+2 rows in set (0.01 sec)mysql> 

7.3 删除表中的数据

命令:delete from 表名 where 表达式;

例如:删除表 myclass 中编号为4的记录

mysql> delete from myclass where id=4;Query OK, 1 row affected (0.00 sec)mysql> select * from myclass;+----+-------+-----+--------+----------+| id | name  | sex | degree | passtest |+----+-------+-----+--------+----------+|  1 | david |   1 |  80.56 |       78 | |  2 | sandy |   0 | 100.00 |       90 | |  3 | renee |   0 |  90.34 |        0 | +----+-------+-----+--------+----------+3 rows in set (0.00 sec)mysql> 

7.4 修改表中的数据

update 表名 set 字段 = 新值,… where 条件;<br>

例:修改 myclass 表中编号为1的记录,将degree 值改成89.99

mysql> update myclass set degree=89.99 where id=1;Query OK, 1 row affected (0.00 sec)Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from myclass;+----+-------+-----+--------+----------+| id | name  | sex | degree | passtest |+----+-------+-----+--------+----------+|  1 | david |   1 |  89.99 |       78 | |  2 | sandy |   0 | 100.00 |       90 | |  3 | renee |   0 |  90.34 |        0 | +----+-------+-----+--------+----------+3 rows in set (0.00 sec)mysql> 

八、数据的导入导出

8.1 导出整个数据库

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

[root@TS-DEV bin]# ./mysqldump -uroot -p david > /tmp/david/david.sqlEnter password: [root@TS-DEV bin]# ll /tmp/david/total 4-rw-r--r-- 1 root root 2764 Apr 17 17:13 david.sql[root@TS-DEV bin]# 

8.2 导出一个表

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

[root@TS-DEV bin]# ./mysqldump -uroot -p david myclass > /tmp/david/david_myclass.sqlEnter password: [root@TS-DEV bin]# ll /tmp/david/total 8-rw-r--r-- 1 root root 1854 Apr 17 17:16 david_myclass.sql-rw-r--r-- 1 root root 2764 Apr 17 17:13 david.sql[root@TS-DEV bin]# 

8.3 导出一个数据库结构

命令:mysqldump -u root -p -d --add-drop-table test > test_db.sql

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

[root@TS-DEV bin]# ./mysqldump -uroot -p -d --add-drop-table david > /tmp/david/david_db.sqlEnter password: [root@TS-DEV bin]# 

8.4 导入数据库

a. 常用source 命令

进入mysql 数据库控制台

# ./mysql -uroot -p

mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema | | mysql              | +--------------------+2 rows in set (0.00 sec)mysql> create database sandy;Query OK, 1 row affected (0.00 sec)mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema | | mysql              | | sandy              | +--------------------+3 rows in set (0.00 sec)mysql> use sandyDatabase changedmysql> source /tmp/david/david.sqlQuery OK, 0 rows affected (0.00 sec)...Query OK, 2 rows affected (0.00 sec)Records: 2  Duplicates: 0  Warnings: 0...Query OK, 3 rows affected (0.00 sec)Records: 3  Duplicates: 0  Warnings: 0...Query OK, 0 rows affected (0.00 sec)mysql> show tables;+-----------------+| Tables_in_sandy |+-----------------+| emp             | | myclass         | | myclass4        | +-----------------+3 rows in set (0.00 sec)mysql> select * from emp;+------+-------+| id   | name  |+------+-------+|    1 | david | |    2 | sandy | +------+-------+2 rows in set (0.00 sec)mysql> 

b. 使用mysql 命令

先创建要导入的数据库 renee。

mysql> create database renee;Query OK, 1 row affected (0.00 sec)mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema | | mysql              | | renee              | | sandy              | +--------------------+4 rows in set (0.00 sec)mysql> 

导入数据

[root@TS-DEV bin]# ./mysql -uroot -p -D renee <p>查看数据</p><pre class="brush:php;toolbar:false">mysql> use renee;Database changedmysql> show tables;+-----------------+| Tables_in_renee |+-----------------+| myclass         | +-----------------+1 row in set (0.00 sec)mysql> select * from myclass;+----+-------+-----+--------+----------+| id | name  | sex | degree | passtest |+----+-------+-----+--------+----------+|  1 | david |   1 |  89.99 |       78 | |  2 | sandy |   0 | 100.00 |       90 | |  3 | nancy |   0 |  90.34 |        0 | +----+-------+-----+--------+----------+3 rows in set (0.00 sec)mysql> 

更多导入导出命令,请自行Google+Baidu。

bitsCN.com
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL:世界上最受歡迎的數據庫的簡介MySQL:世界上最受歡迎的數據庫的簡介Apr 12, 2025 am 12:18 AM

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

MySQL的重要性:數據存儲和管理MySQL的重要性:數據存儲和管理Apr 12, 2025 am 12:18 AM

MySQL是一個開源的關係型數據庫管理系統,適用於數據存儲、管理、查詢和安全。 1.它支持多種操作系統,廣泛應用於Web應用等領域。 2.通過客戶端-服務器架構和不同存儲引擎,MySQL高效處理數據。 3.基本用法包括創建數據庫和表,插入、查詢和更新數據。 4.高級用法涉及復雜查詢和存儲過程。 5.常見錯誤可通過EXPLAIN語句調試。 6.性能優化包括合理使用索引和優化查詢語句。

為什麼要使用mysql?利益和優勢為什麼要使用mysql?利益和優勢Apr 12, 2025 am 12:17 AM

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

描述InnoDB鎖定機制(共享鎖,獨家鎖,意向鎖,記錄鎖,間隙鎖,下一鍵鎖)。描述InnoDB鎖定機制(共享鎖,獨家鎖,意向鎖,記錄鎖,間隙鎖,下一鍵鎖)。Apr 12, 2025 am 12:16 AM

InnoDB的鎖機制包括共享鎖、排他鎖、意向鎖、記錄鎖、間隙鎖和下一個鍵鎖。 1.共享鎖允許事務讀取數據而不阻止其他事務讀取。 2.排他鎖阻止其他事務讀取和修改數據。 3.意向鎖優化鎖效率。 4.記錄鎖鎖定索引記錄。 5.間隙鎖鎖定索引記錄間隙。 6.下一個鍵鎖是記錄鎖和間隙鎖的組合,確保數據一致性。

MySQL查詢性能差的常見原因是什麼?MySQL查詢性能差的常見原因是什麼?Apr 12, 2025 am 12:11 AM

MySQL查询性能不佳的原因主要包括没有使用索引、查询优化器选择错误的执行计划、表设计不合理、数据量过大和锁竞争。1.没有索引导致查询缓慢,添加索引后可显著提升性能。2.使用EXPLAIN命令可以分析查询计划,找出优化器错误。3.重构表结构和优化JOIN条件可改善表设计问题。4.数据量大时,采用分区和分表策略。5.高并发环境下,优化事务和锁策略可减少锁竞争。

您什麼時候應該使用複合索引與多個單列索引?您什麼時候應該使用複合索引與多個單列索引?Apr 11, 2025 am 12:06 AM

在數據庫優化中,應根據查詢需求選擇索引策略:1.當查詢涉及多個列且條件順序固定時,使用複合索引;2.當查詢涉及多個列但條件順序不固定時,使用多個單列索引。複合索引適用於優化多列查詢,單列索引則適合單列查詢。

如何識別和優化MySQL中的慢速查詢? (慢查詢日誌,performance_schema)如何識別和優化MySQL中的慢速查詢? (慢查詢日誌,performance_schema)Apr 10, 2025 am 09:36 AM

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL:開發人員的基本技能MySQL和SQL:開發人員的基本技能Apr 10, 2025 am 09:30 AM

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器