mysql -h 127.0.0.1 -P 3306 -u root -p
create database 数据库名字;
创建数据库,本质创建一个目录。
就是在 /var/lib/mysql
路径下创建了dome1数据库(目录)。
路径可以在/etc/my.cnf
中查看MySQL的配置文件。
create table 表名(...);
本质是在使用的数据库目录中创建了文件。
use 数据库名字;
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。MySQL的核心就是插件式存储引擎,支持多种存储引擎。
查看存储引擎
show engines;
create database if not exists 数据库名字;
后面可以跟写charset utf8
、collate utf8_general_ci
表示字符集和校对规则。
show variables like 'character_set_database';
show variables like 'collation_database';
show charset;
show collation;
drop database 数据库名字;
删除后,该数据库对应的表数据全部被删。
alter database 数据库名字 [...];
mysqldump -P 3306 -p 密码 -B 数据库名字 > 数据库备份存储的文件路径;
如:
source ./dome.sql;
注意:
mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
show processlist;
可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。
create table user(
id int,
name varchar(11) commit '用户名',
pssword varchar(11) commit '用户密码'
)character set utf8;
先插入两条记录
insert into user (id,name,pssword) values (1,'猫爷','123456'),(2,'狗哥','654321');
select * from user;
+------+--------+---------+
| id | name | pssword |
+------+--------+---------+
| 1 | 猫爷 | 123456 |
| 2 | 狗哥 | 654321 |
+------+--------+---------+
1、增加表中增加一个字段
在该表中添加一个年龄字段
alter table user add age int comment '用户的年龄';
desc user;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(11) | YES | | NULL | |
| pssword | varchar(11) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
select * from user;
+------+--------+---------+------+
| id | name | pssword | age |
+------+--------+---------+------+
| 1 | 猫爷 | 123456 | NULL |
| 2 | 狗哥 | 654321 | NULL |
+------+--------+---------+------+
新添加字段后,行记录中的该字段为NULL。
语法:ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);
2、删除表中的一个字段
alter table user drop age;
desc user;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(11) | YES | | NULL | |
| pssword | varchar(11) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
如果删除了有数据的字段,那么数据也就删除了。
语法:ALTER TABLE tablename DROP (column);
3、修改表的一个字段
alter table user modify name varchar(33) comment '用户名';
desc user;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(33) | YES | | NULL | |
| pssword | varchar(11) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
语法:ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...);
其实不建议对已经创建好了的表修改其结构。第一,可能导致数据的丢失;第二,影响到一些业务逻辑,可能你修改了表结构,影响到了上层代码里面的逻辑,导致多读数据或者少读等。
4、修改列名
把 name 列名修改 mingzi(拼音)
alter table employee change name mingzi varchar(60); --新字段需要完整定义
desc employee;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| mingzi | varchar(60) | YES | | NULL | |
| pssword | varchar(11) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
将表名user 修改为 employee
alter table user rename to employee;
其中 to 可以省略
记录学习MySQL的过程,不会止步于此,期待后文吧。