做为前端虽然数据库接触的很少,但当使用时总记不住命令确实有点尴尬,遂作此笔记,以方便查阅。html
mysql -h localhost -u root -p //登陆 QUIT // 登出
ps: 又一次储存emoji表情时,出现了一次报错,由于UTF-8编码有多是两个、三个、四个字节,其中Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,因此致使了数据插不进去。
当时的解决方式是更改了某个表的字符集前端
ALTER TABLE tab-name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
注释:utf8mb4的最低mysql版本支持版本为5.5.3+mysql
数据库查看sql
查看全部数据库数据库
SHOW DATABASES;
查看数据库变量服务器
SHOW VARIABLES;
SHOW VARIABLES LIKE 'PORT';
查看可选字符: SHOW VARIABLES LIKE 'CHARACTER%';
ide
character_set_client 为客户端编码方式; character_set_connection 为创建链接使用的编码; character_set_database 为数据库的编码; character_set_results 为结果集的编码; character_set_server 为数据库服务器的编码;
查看数据库数据存放路径编码
SHOW VARIABLES LIKE '%DATADIR%';
数据库操做code
建立数据库server
CREATE DATABASE name [CHARACTER SET utf8 COLLATE utf8_general_ci];
修改数据库
ALTER DATABASE name CHARACTER SET utf8;
查看建立数据库语句
SHOW CREATE DATABASE name
删除数据库
DROP DATABASE name;
使用数据库
USE database-name
显示当前选择
SELECT DATABASE();
数据表操做
建立数据表:
CREATE TABLE name ( column-name data_type, ... )
查看次数据表建立语句:
SHOW CREATE TABLE tab-name
查看次数据库中的数据表:
SHOW TABLES;
查看次数据库中的数据表:
DESC tab-name;
查看数据列:
SHOW COLUMS FROM tab-name;
插入数据:
INSERT tab-name [(column1,column2...)] VALUES (val1,val2...)
更新数据:
UPDATE tab-name SET column1 = val1 , column2 = val2 [WHERE expr = val]
外键添加:
FOREING KEY (column) REFERENCES tab-name (column)
查看数据:
SELECT * FROM tab-name;
SHOW INDEXES FROM tab-name
WHERE
,GROUP BY
(分组),HAVING
,ORDER BY
,LIMIT
]()修改数据表:
ALTER TABLE tab-name ADD column data-type [FIRST | AFTER column-name]
(添加多列-add后跟小括号,但无位置关系)ALTER TABLE tab-name DROP column-name
ALTER TABLE tab-name PRIMARY KEY (column-name)
ALTER TABLE tab-name DROP PRIMARY KEY
ALTER TABLE tab-name DROP {INDEX | KEY} index-name
ALTER TABLE tab-name ALTER column-name {SET DEFAULT default | DROP DEFAULT}
ALTER TABLE tab-name MODIFY column-name data-type [FIRST | AFTER column-name]
ALTER TABLE tab-name CHANGE old-name new-name data-type [FIRST | AFTER column-name]
清空数据表:
DELETE FROM tab-name;
TRUNCATE TABLE tab-name
删除数据表:
DROP tab-name
数据表均用到了的为sql语句查询,语句参考
查看帐户权限:
SHOW GRANTS; # 当前用户权限 SHOW PRIVILEGES; # mysql 所支持的权限列表 SHOW GRANTS FOR user; # 查看某用户
grant 权限名称[字段列表] on [数据库资源类型]数据库资源 to MySQL帐户1,[MySQL帐户2] [with grant option]
*.* 表示全部数据库,全部数据表'user'@'%' user 帐号能够在任意的主机上进行登陆。
grant all privileges on *.* to 'supperuser'@'%' identified by 'password' with grant option;
将建立一个名字为supperuser的帐号,拥有全部的数据库权限,而且具备grant 权限,能够建立其余拥有服务实例权限的其余用户。
建立数据库实例帐号
grant all privileges on database_name.* to 'user'@'%' identified by 'userpass' with grant option;
将建立一个名字为user的帐号。拥有database_name 数据库的全部权限,能够随该库中的表进行全部操做。
grant all privileges on table tab_name.test to 'user'@'%' identified by 'userpass' with grant option;
将建立一个名字为user 的用户,对tab_name数据库中test拥有全部的权限。
想要增长update, delete,alter 权限能够以下操做:
grant update,delete,alter on database_name.* to 'user'@'%' identified by 'userpass' with grant option;
想要移除insert 权限:
revoke insert on database_name.* from 'user'@'%';
删除用户:
drop user user_name