连接数据库:mysql -h localhost -u root -p 000000
退出:exit; \q; quit;
SET foreign_key_checks = 0; 禁用外键
->表示当前命令没有执行或者等待命令执行符来确认;
\c 用来清除->效果
'>、"> 表示之前的mysql语句缺少引号
Informaction_schema 主要存储数据库中数据库对象信息 表信息 列信息 权限信息 数据字典
Mysql库、存储了mysql的权限信息和服务器正常运行信息。
performance_schema 记录了保存进程,、详细信息 历史记录等(性能字典)
mysql数据库中数据类型
列的完整约束:
主键:PRIMARY KEY
自增:AUTO_INCREMENT
默认值:DEFAULT ''
不为空:NOT NULL
为空:NULL
无符号:UNSIGNED
数据库操作:
创建数据库 CREATE DATABASE 库名; 可加 IF NOT EXISTS 库名(表示不存在则创建)
删除数据库 DROP DATABASE 库名;
查看数据库 SHOW DATABASES;
创建数据库时设置字符集 DEFAULT CHARSET=UTF8;
修改数据库字符集 ALTER DATABASE 库名 CHARSET=UTF8;
查看数据库字符集 SHOW CREATE DATABASE 库名;
选择数据库 USE 库名;
表的操作:
查看表 SHOW TABLES;
创建表 CREATE TABLE 表名(字段[字段约束]); ENGINE=MYISAM DEFAULT CHARSET=UTF8; 可在表名前面加IF EXISTS表示判断是否存在
修改表 ALTER TABLE 原表名 RENAME 新表名;
备份表 CREATE TABLE 新表名 SELECT * FROM 原表名; 不会备份到主键和字符集
删除表 DROP TABLE [IF EXISTS] 表名;
查看键表语句 SHOW CREATE TABLE; \G表示以完整形式显示
字段操作:
查看字段 DESC 表名; field 字段名 type 类型 null 是否为空 default 默认值 extra 额外信息
添加字段 ALTER TABLE 表名 ADD 新字段名 数据类型[约束] 位置参数 (在最后加):FIRST表示添加到最前 AFTER添加到哪个之后
修改字段数据类型 ALTER TABLE 表名 MODIFY 字段名 新字段类型[新约束]
修改字段所有 ALTER TABLE 表名 CHANGE 原字段名 新字段名 新字段类型[新约束]
删除字段 ALTER TABLE 表名 DROP 字段名
mysql中的运算符:+ - * /或者div %或者mod = <> != >= <=
mysql函数:select database(); 查看当前所在数据库
select md5(); 计算MD5加密
count(); 计算数据的长度
sum(); 累加和运算
concat(); 将字段粘在一起
truncate table 表名; 重置自增并且清空数据表
数据操作:
添加数据 INSERT INTO 表名 (`字段名1`,`字段名2`...) values('值1','值2'); 字段名中使用反引号是为了防止关键字报错
INSERT INTO 表名 values('值1','值2'); 必须写全表中所有字段
INSERT INTO 表名 (`字段名1`,`字段名2`...) values('值1','值2'),('值1','值2') 一次添加多条数据
查看表中所有字段内容 select * from 表名; * 表示通配符
NOT IN 表示不在
like模糊匹配 %表示任意字符 _ 表示一个字符
查询数据表中有多少条数据 SELECT COUNT(*) FROM 表名; *表示所有字段 可将*改为字段则统计字段
排序查询 ORDER BY 字段 ASC(正序) DESC(倒序)
按照id正序排序 SELECT * FROM user ORDER BY id ASC;
限制查询数量LIMIT: SELECT 字段 FROM 表名 LIMIT 查询数量
分组查询 GROUP BY
查询每个部门有多少人 SELECT COUNT(*),部门 FROM gz GROUP BY 部门;
查询每个部门的总工资 SELECT SUM(工资),部门 FROM gz GROUP BY 部门;
多表联合查询 SELECT 表1.字段,表2.字段……FROM 表1,表2 WHERE 表1.字段=表2.字段 注意:多表联合查询一定要有关联的字段才能做
查询条件使用的顺序:SELECT 语句 [WHERE条件] [group BY条件] [HAVING条件 没讲 二次过滤] [ORDER BY条件] [limit 条件]
删除数据 DELETE FROM 表名 WHERE 条件
删除user1表中sex=0的数据 DELETE FROM user1 WHERE sex=0;
删除user1表中id=7的数据 DELETE FROM user1 WHERE id=7;
删除user1表中 id = 3 和 id=6的数据 DELETE FROM user1 WHERE id=3 OR ID=6;
删除user1表中 sex = 1 并且 age = 40的数据 DELETE FROM user1 WHERE sex=1 AND age=40;
删除user1表中 id>10 和 id<5的所有数据 DELETE FROM user1 WHERE id>10 or id<5;
删除user1表中id>7 和 id<9的所有数据 DELETE FROM user1 WHERE id>7 and id <9;
删除user1表中id>=7 和 id<=9的所有数据 DELETE FROM user1 WHERE id>=7 and id <=9;
删除user1表中 id 为 1 4 5 6 7 10 DELETE FROM user1 WHERE id in(1,4,5,6,7,10);
删除表中gid字段为偶数的数据(不要使用,效率太低) DELETE FROM user1 WHERE mod 2=0;
修改数据 UPDATE 表名 SET 字段名=值,字段名=值 WHERE 条件
修改user1表中sex=1,age=18 条件:id为1,3,5,7,9,10的数据 UPDATE user1 SET sex=1,age=18 WHERE id in(1,3,5,7,9,10);
修改 user1表中 name=’zhangsanfeng’ 条件 age=40 UPDATE user1 SET name='zhangsanfeng' WHERE age=40;
修改 user1表中 name=xiaohuahua age=28 条件是性别是null的 UPDATE user1 SET name='xiaohuahua',age=28 WHERE sex is null;
修改user1表中 age=20 条件是 sex不为空 UPDATE user1 SET age=20 WHERE sex is not null;
导出命令 mysqldump [-h localhost] -u 用户名 -p密码 库名 [表名] > 导出的文件名
导入命令 mysql -h 主机地址 -u用户名 -p密码 选择要调入的库名 < 导入的文件地址
mysql正则(不用)
查询
匹配用户名中是以Z开头 以G结尾 中间是任意内容的数据
SELECT * FROM user WHERE name REGEXP '^z[a-z]+g$';
匹配用户名中以Z开头的数据
SELECT * FROM user WHERE name REGEXP '^z';
匹配用户名中以G结尾的数据
SELECT * FROM user WHERE name REGEXP 'g$';
匹配用户名中存在a-h之间任意一个字母
SELECT * FROM user WHERE name REGEXP '[a-h]';