# MySQL
#库操作
```
#创建数据库
create database <数据库名> ;
create database xhkdb; #例如:建立一个名为xhkdb的数据库
#显示所有的数据库
show databases
#删除数据库 (不常用)
drop database <数据库名>
drop database xhkdb;
#例如:删除名为 xhkdb的数据库
#连接数据库
use <数据库名>;
use xhkdb; #例如:如果xhkdb数据库存在,尝试存取它
#查看当前使用的数据库
select database();
#当前数据库包含的表信息
show tables;
```
#表操作,操作之前应连接某个数据库
```
1、建表
命令:create table <表名> ( <字段名> <类型> [,..<字段名n> <类型n>]);
create table MyClass( id int(4) not null primary key auto_increment, name char(20) not null, sex int(4) not null default ’′, degree double(16,2));
2、获取表结构
命令:desc 表名,或者show columns from 表名
desc MyClass;
show columns from MyClass;
3、删除表
命令:drop table <表名>
例如:删除表名为 MyClass 的表
drop table MyClass;
```
#导库;表
```
#1.导出整个数据库
mysqldump -u 用户名 -p –default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1)
mysqldump -u root -p smgp_apps_wcnc > wcnc.sql
#2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
#3.导入数据库
#A:常用source 命令
进入mysql数据库控制台,
mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source wcnc_db.sql
#B:使用mysqldump命令
mysqldump -u username -p dbname < filename.sql
#C:使用mysql命令
mysql -u username -p -D dbname < filename.sql
```
#单个数据库备份:
```
mysqldump -u root --single-transaction --master-data=2 -p ihospital_dlrke_db > ihospital_dlrke_db_202105181813.sql
说明:
--single-transaction参数的作用:设置事务的隔离级别为可重复读,即REPEATABLE READ,这样能保证在一个事务中所有相同的查询读取到同样的数据,也就大概保证了在dump期间,如果其他innodb引擎的线程修改了表的数据并提交,对该dump线程的数据并无影响,在这期间不会锁表。
--master-data=2参数的含义:该选项将二进制日志的位置和文件名写入到输出中。该选项要求有RELOAD权限,并且必须启用二进制日志。如果该选项值等于1,位置和文件名被写入CHANGE MASTER语句形式的转储输出,如果你使用该SQL转储主服务器以设置从服务器,从服务器从主服务器二进制日志的正确位置开始。如果选项值等于2,CHANGE MASTER语句被写成SQL注释。如果value被省略,这是默认动作。
--master-data=2 是把change log 那行注释掉,=1 是没有注释.
#ihospital_dlrke_db 需要备份库名
#ihospital_dlrke_db_202105181813.sql 备份的sql数据文件(库名+日期时间+.sql)
```