DDL是(Data Definition Languages)数据定义语言的缩写
定义了不同的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字主要包括create、drop、alter等
创建数据库
create database dbname
mysql> create database test1;
mysql> create database test1 DEFAULT CHARACTER SET utf8;
创建默认gbk字符集的数据库可以用下面的sql:
mysql> create database yourdb DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
查看数据库
show databases;
mysql> show databases;
选择使用数据库
use dbname;
mysql> use test1;
查看数据表
show tables
mysql> show tables;
删除数据库
drop database dbname
mysql> drop database test1;
创建表
create table tablename (
column_name_1 column_type_1 constraints,
…
column_name_n column_type_n constraints)
例如:创建 emp 表
mysql> CREATE TABLE emp
-> (id int unsigned not null auto_increment primary key,
-> ename varchar(10) not null,
-> address text not null,
-> choose text not null,
-> repairDate char(50) not null,
-> dTime datetime not null,
-> files text not null
-> )ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
查看表的定义
desc tablename
describe tablename
mysql> desc emp;
或
mysql> describe emp;
查看详细
show create table tablename \G;
mysql> show create table emp \G;
删除表
drop table tablename
mysql> drop table emp;
修改表
alter table tabename modify[column] column_definition [first|after col_name]
修改emp表的ename字段定义,将varchar(10)改为 varchar(20)
mysql> alter table emp modify ename varchar(20);
增加字段 age,类型为int(3):
mysql> alter table emp add column age int(3);
更改表名
mysql> alter table emp rename emp1;
删除表字段 age
mysql> alter table emp drop column age;
字段改名, age 改为 age1
alter table emp change age age1 int(4);
change和modify都可以修改表的定义,不同的是change后面需要些两次列名,不方便,但是change的有优点是可以修改列名称,modify不可以。
修改字段排序
增加新字段birth类型是date 到ename后面
mysql> alter table emp add birth date after ename;
修改age到表的最前面
mysql> alter tabel emp modify age int(3) first;
清空表,并且ID重新排列
truncate tablename
mysql> truncate emp;
数据库编码
mysql编码
查看mysql支持的编码有哪些
mysql> show character set;
查看数据库编码
mysql> use dataname;
mysql> show variables like ‘character_set_database’;
//或者
mysql> show create database dataname;
修改数据库编码
mysql> alter database dataname character set utf8;
查看数据表编码
mysql> show create table tablename;
修改数据库表编码
该命令用于将表test的编码方式改为utf8;
mysql> ALTER TABLE `test` DEFAULT CHARACTER SET utf8;
修改字段编码
该命令用于将表test中name字段的编码方式改为utf8
mysql> ALTER TABLE `test` CHANGE `name` `name` VARCHAR(36) CHARACTER SET utf8 NOT NULL;
查看数据表所有字段编码
mysql> show full fields from tablename;
查看mysql中各种服务的编码
mysql> show variables like ‘character%’;
+————————–+———————————————————+
| Variable_name | Value |
+————————–+———————————————————+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.7.13-osx10.11-x86_64/share/charsets/ |
+————————–+———————————————————+
说明:
character_set_client:客户端字符集
character_set_connection:链接字符集
character_set_database:数据库字符集
character_set_filesystem:文件系统
character_set_results:结果字符集
character_set_server:服务器字符集
character_set_system:mysql系统字符集
比如:设置character_set_server为utf8
set character_set_client=utf8;
数据库备份
备份数据库
mysqldump基本语法:
mysqldump -u username -p dbname table1 table2 …-> BackupName.sql
其中:
- dbname参数表示数据库的名称;
- table1和table2参数表示需要备份的表的名称,为空则整个数据库备份;
- BackupName.sql参数表设计备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据库被分成一个后缀名为sql的文件;
使用root用户备份test数据库下的person表
mysqldump -uroot -p test person > D:\backup.sql
备份多个数据库
语法:
mysqldump -u username -p –databases dbname2 dbname2 > Backup.sql
加上了–databases选项,然后后面跟多个数据库
mysqldump -u root -p –databases test mysql > D:\backup.sql
utf8备份
mysqldump -uroot -p –default-character-set=utf8 dbname tablename > bak.sql
数据库还原
mysql> mysql -h host -u root -p root < /path/to/insert.sql
或者
mysql> use dbname;
mysql> source base_user_gbk.sql;
utf8还原
mysql -uroot -p –default-character-set=utf8 dbname < bak.sql
资料为本人入门经验总结,希望能帮到你们,如有不明白可关注我,欢迎共同探讨交流。
部分图片源于网络,如有侵权请联系删除!