--MYSQL8.0.16
--进入MYSQL
mysql -u root -p
--然后会提示输入密码,输入即可进入mysql
--退出
quit
--或者
exit
--如果不想执行正在输入的命令,即,在命令输入到一半时,使其停止
\c
--查看数据库版本
SELECT VERSION();
--展示用户
SELECT USER();
--创建数据库
CREATE DATABASE new_database_name;
--删除数据库
DROP DATABSE database_name;
--展示所有数据库
SHOW DATABESES;
--选择某个数据库进行操作
USE database_name;
--展示操作警告,类似于展示错误信息
SHOW WARNINGS;
--展示所有表
SHOW TABLES;
--创建表
CREATE TABLE table_name
(filed type, filed type, ..., filed type);
--应用变化
CREATE TABLE IF NOT EXISTS mytable
(id1 INT UNSIGNED AUTO_INCREMENT,
id2 VARCHAR(100) NOT NULL,
id3 VARCHAR(40) NOT NULL,
id4 DATE,
PRIMARY KEY(id1))ENGINE=InnoDB DEFAULT CHARSET = utf8;
/*
实例解析:
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,CHARSET 设置编码。
*/
--删除表格
DROP TABLE table_name;
--删除表格信息,但不删除表格
DELETE FROM table_name;
--展示表格信息,包括filed,type,NULL,key,default,extra
DESCRIBE table_name;
--加载文件信息入表格
--用tab分隔字段值
LOAD DATA LOCAL INFILE '/PATH/FILE_NAME' INTO TABLE table_name;
/*
LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet; 命令报错:
ERROR 1148 (42000): The used command is not allowed with this MySQL version
原因可能是:服务器端,local_infile默认开启;客户端,local_infile默认关闭,因此用的时候需要打开。
官网对此的解释是“if the statement fails, it is likely that your MySQL installation does not have local file capability enabled by default. ”大意是,如果这条命令失败,可能是因为MYSQL安装时没有默认启用local file功能。
退出MYSQL,使用以下命令进入MYSQL,打开local file功能:
mysql --local-infile=1 -u root -p
*/
--涉及FILE的格式,用tab分隔每个字段值,用换行分隔每行记录
--在文本记录中用 \N 表示NULL
LOAD DATA LOCAL INFILE '/PATH/FILE_NAME' INTO TABLE table_name LINES TERMINATED BY '\r\n';
--插入某行信息入表格
INSERT INTO table_name (filed1, filed2, ..., filedN) VALUES(value1, value2, ..., valueN);
--如果插入的是文本值,要带单引号或双引号
--UPDATE更新
--更新表格的方法:1、整个删除再导入已经修改的新文件。2、UPDATE修改部分数据
UPDATE table_name SET filed = new_value WHERE conditions;
--无需进行表格选择,即可开始以下操作
--选择整个表
SELECT * FROM table_name;
--WHERE行筛选
SELECT * FROM table_name WHERE conditions_to_satify;
--WHERE条件组合
SELECT * FROM table_name WHERE condition;
SELECT * FROM table_name WHERE condition1 AND condition2;
SELECT * FROM table_name WHERE condition1 OR condition2;
--AND OR优先处理AND,可以用()调整优先级
--列filed筛选
SELECT filed_a, filed_b, ..., filed_n FORM table_name;
--AS起别名alias,不会改变表格,只是展示和写代码的意义更清晰简洁
SELECT filed_a AS other_name FORM table_name;
--DISTINCT去重复。有一些属性的值重复出现,使用DISTINCT使其只输出一次
SELECT DISTINCT * FROM table_name;
--排序
--默认为升序ASC,可以设定为降序DESC
SELECT * FROM table_name WHERE conditions ORDER BY filed_a;
SELECT * FROM table_name ORDER BY filed_a DESC;
--多列排序,多方向排序。排序字段的先后也决定了排序的优先性。
--filed_a是升序排列,filed_b是降序排列。是在对filed_a排序后,保证filed_a的顺序的情况下,在同一个filed_a的值内部,对filed_b进行排列。也就是,总体上看filed_a是有序的,filed_b可能是无序的,仅仅是部分范围有序。
SELECT * FROM table_name ORDER BY filed_a, filed_b DESC;
--强制对String大小写敏感
--一般对大小写不敏感
SELECT * FROM table_name ORDER BY BINARY filed_a;
--DATE类型
--DATE类型可以用>, <, >=, <=, =, !=比较大小
--还有一些专用的算法函数
--展示当前日期YYYY-MM-DD
SELECT CURRENT_DATE;
SELECT CURDATE();
--展示当前日期时间YYYY-MM-DD HH:MM:SS
SELECT NOW();
--TIMESTAMPDIFF(期待输出的单位,时间1,时间2)计算时间差
SELECT TIMESTAMPDIFF(YEAR, "1999-12-01", CURDATE()) AS alias FROM pet;
--YEAR(),MONTH(),DAYOFMONTH()参数是日期,返回其中的年份/月份/日子
SELECT MONTH(CURDATE());
--日期的计算
SELECT = MONTH(DATE_ADD(CURDATE), INTERVAL 1 MONTH));
SELECT '2018-09-01' + INTERVAL 1 DAY;
--一些简单的数学函数,会在字段名显示式子,在字段值显示计算结果
--MYSQL可用作简单计算器
SELECT SIN(PI())/4,(4+1)*5;
--IS
--NOT
--NULL
SELECT 1 IS NULL, 1 IS NOT NULL;
--所有与NULL的比较的结果都是空值,两个空值在GROUP BY 中被视为相等
SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1> NULL;
SELECT 0 IS NULL, ' ' IS NULL;