(更新中)

忘记mysql密码

windows下找到my.ini

linux下找到my.cnf

在[mysqld]下添加 skip-grant-tables //用于跳过权限验证

windows下使用服务进行重启mysql

在Linux下 mysql service mysqld restart

mysql -u root -p // 登录一下,如果有要求密码,可以直接回车忽略密码要求

use mysql;

update user set password=password("123") where user="root";

flush privileges;


设置远程登录用户和密码

USE mysql; 进入mysql数据库

GRANT ALL PRIVILEGES ON . TO 'test'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 新建用户和密码,并且赋予所有权限和允许远程登陆

FLUSH PRIVLEGES; 更新权限


操作数据库

创建数据库

CREATE DATABASE xxx;

删除数据库

DROP DATABASE xxx;

查看所有数据库

SHOW DATABASES;

查看指定数据库

SHOW xxx;

打开指定数据库

USE xxx;

查看指定数据库的详细信息

SHOW CREATE DATABASE xxx;

修改指定数据库的字符集

ALTER DATABASE xxx CHARACTER SET gbk COLLATE gbk_bin;

数据表的校对规则,与于指定数据集如何排序

COLLATE=utf8_bin

指定字符集

CHARSET=utf8

查看当前mysql所支持的字符集

SHOW CHARACTER SET;

新建数据表

CREATE TABLE xxx(

id int(4),
email char(20),
status int(2),
code char(10)

);

添加数据

INSERT INTO xxx VALUES(

1,
 "hallo",
 "1",
 "xxx"
 );

修改数据(根据条件)

UPDATE xxx SET status=1 WHERE id = 4;

删除数据(根据条件)

DELETE FROM xxx WHERE id = 5;

修改字段类型

ALTER TABLE 表名 MODIFY COLUMN 字段名 新数据类型;


查询数据

查询数据表的表结构(字段)

SHOW COLUMNS FROM 表名

查询数据表的数据

SELECT * FROM 表名;

根据条件查询

SELECT * FROM 表名 WHERE id >= 1;

SELECT * FROM 表名 WHERE id IN (1,3,5);

SELECT * FROM 表名 WHERE id BETWEEN 2 AND 7;

SELECT * FROM 表名 WHERE id >= 1 AND name = "xxx";

SELECT * FROM 表名 WHERE id >= 1 OR name = "xxx";

SELECT * FROM 表名 WHERE id >= 1 NOT name = "xxx";

SELECT id name FROM 表名 WHERE name LIKE"a%";

SELECT 字段 FROM 表名 GROUP BY 字段; // 附属功能和DISTINCT一样,有去重功能

SELECT DISTINCT 字段 FROM 表名; // 列出不同的值,功能和查询数据,并且数据不重复

根据要求返回数据

SELECT id FROM 表名;

通过SELECT语句修改列名

SELECT id abc FROM 表名;

通过SELECT语句接WHRE条件

SELECT id FROM 表名 WHERE name = "yes";

排列

SELECT name FROM 表名 ORDER BY id; // 按照id从低到高

SELECT name FROM 表名 ORDER BY id DESC; // 使用DESC倒序

SELECT name FROM 表名 ORDER BY id DESC,gender; // 先按照id倒序,如果有相同的值再按gender排序

默认的排序是ASC,可以忽略,如果有WHRE语句,那么ORDER BY要放在WHRE后面


SQL约束

PRIMARY KEY 约束唯一标识数据库表中的每条记录,有助于快速查找表中的一个特定的记录。 主键必须包含唯一的值,主键列不能包含 NULL 值,每个表只能有一个主键

例如

CREATE TABLE abc(id int NOT NULL,PRIMARY KEY(id));

NOT NULL 约束某列不能存储NULL值,约束字段要包含值,如果不为字段添加值,则无法更新或者插入新的值

例如:

CREATE TABLE abc(id int NOT NULL);

UNIQUE 约束唯一标识数据库表中的每条记录

例如:
CREATE TABLE abc(id int NOT NULL,UNIQUE(id));

FOREIGN KEY 约束一个表的值指向另一个表的唯一标识,防止非法数据插入,必须是其指向的表中的值

例如:
CREATE TABLE abc(id int NOT NULL,home int,PRIMARY KEY (Id),FOREIGN KEY (home) REFERENCES Persons(home));

DEFAULT 约束向列中插入默认值,确保列中始终有值,而不是NULL值

例如:
CREATE TABLE abc(id int DEFAULT '0');

CHECK 约束限制列中的值的范围,当向单个列约束时,那么该列只允许特定的值,当向一个表约束时,那么该约束只会在特定的列中对值进行限制

例如:

CREATE TABLE abc(id int NOT NULL,CHECK(id >0));


添加表级约束
例如:

ALTER TABLE 表名 add UNIQUE(home);

添加表,列级约束

ALTER TABLE 表名 modify id int NOT NULL