连接数据库
连接本地数据库:
连接远程数据库:
1
| mysql -h HOSTNAME -u root -p
|
数据库操作
显示所有数据库:
建立新数据库,并设置默认编码:
1
| create database dbname CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;;
|
选择一个数据库:
删除数据库:
用户和权限操作
新建用户
1
| create user '[USERNAME]'@'[HOST]' identified by '[PASSWORD]';
|
分配权限
1
| grant all on [DB.TABLES] to '[USERNAME]'@'[HOST]';
|
新建用户并分配权限
1
2
| grant [PRIVILEGE_LIST] on [DB.TABLES] to '[USERNAME]'@'[HOST]' identified by '[PASSWORD]';
flush privileges;
|
[PRIVILEGE_LIST]
:权限列表见 官方文档,如果赋予所有权限使用 ALL;[DB.TABLE]
:如果赋予该用户操作该数据库所有表的权限,table 可以使用*
代替,数据库也可以用*
代替;[HOST]
:HOST 可以是具体的地址;也可以是localhost
,表示只监听本地;或者使用%
表示监听所有地址;
举个例子:新建用户aaa
,密码为sccc@123
,可以从其他所有主机登录,赋予对 dbname 所有表的 CRUD 权限:
1
2
| grant insert, delete, update, select on dbname.* to 'aaa'@'%' identified by "sccc@123";
flush privileges;
|
用户密码管理
更改用户密码:
1
| alter user '[USERNAME]'@'[HOST]' identified by '[PASSWORD]';
|
更改用户密码过期时间:
1
2
3
| ALTER USER 'username'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
ALTER USER 'username'@'localhost' PASSWORD EXPIRE NEVER;
ALTER USER 'username'@'localhost' PASSWORD EXPIRE DEFAULT;
|
删除用户
1
| DROP USER 'username'@'localhost';
|
表操作
创建表
1
2
3
4
5
6
| CREATE TABLE `topic` (
`token` varchar(10) NOT NULL,
`name` varchar(100) NOT NULL,
`followers` int(11) NOT NULL,
`description` varchar(1000) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
修改表
重命名:
1
| ALTER TABLE t1 RENAME t2;
|
修改字段,modify 不改变字段名,只修改字段属性;change 既可改变字段名,也可修改字段属性;
因此 change 可以用来重命名字段。
1
2
3
| ALTER TABLE t2
MODIFY a TINYINT NOT NULL,
CHANGE b c CHAR(20);
|
增加字段:
1
| ALTER TABLE t2 ADD d TIMESTAMP;
|
删除字段:
1
| ALTER TABLE t2 DROP COLUMN c;
|
删除表
数据(记录)操作
CRUD(Create Read Update Delete),是软件系统中数据库或者持久层的基本功能操作。
查询:
1
| SELECT * FROM t1 WHERE a=3 AND b like '%foo%';
|
更新:
1
| UPDATE t1 set a=3 where a=4 and b like '%foo%';
|
新建:
1
| INSERT INTO t1 (`a`, `b`) VALUES (33, 'foo');
|
删除:
1
| DELETE FROM t1 WHERE a=3 and `b` in (1, 2, 3);
|
索引操作
使用 ALTER 语法
添加索引
1
| ALTER TABLE table_name ADD INDEX index_name (column_list);
|
添加唯一索引
1
| ALTER TABLE table_name ADD UNIQUE index_name (column_list);
|
添加主键索引
1
| ALTER TABLE table_name ADD PRIMARY KEY index_name (column_list);
|
使用 ADD 语法
添加索引
1
| CREATE INDEX index_name ON table_name (column_list);
|
添加唯一索引
1
| CREATE UNIQUE INDEX index_name ON table_name (column_list);
|