mysql学习笔记(代码片段)

为了2025的桂花 为了2025的桂花     2022-12-01     149

关键词:

一、什么是数据库?

  数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
  每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
  我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
  所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

  RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:

  • 1.数据以表格的形式出现
  • 2.每行为各种记录名称
  • 3.每列为记录名称所对应的数据域
  • 4.许多的行和列组成一张表单
  • 5.若干的表单组成database

  数据库管理
  数据库管理(Database Administration)是有关建立、存储、修改和存取数据库中信息的技术,是指为保证数据库系统的正常运行和服务质量,有关人员须进行的技术管理工作。负责这些技术管理工作的个人或集体称为数据库管理员(DBA)。数据库管理的主要内容有:数据库的建立、数据库的调整、数据库的重组、数据库的重构、数据库的安全控制、数据的完整性控制和对用户提供技术支持。数据库的建立:数据库的设计只是提供了数据的类型、逻辑结构、联系、约束和存储结构等有关数据的描述。这些描述称为数据模式。要建立可运行的数据库,还需进行下列工作:

    1. 选定数据库的各种参数,例如最大的数据存储空间、缓冲决的数量、并发度等。这些参数可以由用户设置,也可以由系统按默认值设置。
    1. 定义数据库,利用数据库管理系统(DBMS)所提供的数据定义语言和命令,定义数据库名、数据模式、索引等。
    1. 准备和装入数据,定义数据库仅仅建立了数据库的框架,要建成数据库还必须装入大量的数据,这是一项浩繁的工作。在数据的准备和录入过程中,必须在技术和制度上采取措施,保证装入数据的正确性。计算机系统中原已积累的数据,要充分利用,尽可能转换成数据库的数据。

  MySQL官网:http://www.mysql.com

二、RDBMS 术语

  在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:

  • 数据库: 数据库是一些关联表的集合。
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
  • 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

三、数据类型

  MySQL支持多种列类型:数值类型、日期/时间类型和字符串(字符)类型。长度以字节为单位。

名称 长度 用法
TINYINT(M) BIT,BOOL,BOOLEAN 1 如果为无符号数,可以存储从0到255的数; 否则可以存储从-128到127的数。
SMALLINT(M) 2 如果为无符号数,可以存储从0到65535的数; 否则可以存储从-32768到32767的数。
MEDIUMINT(M) 3 如果为无符号数,可以存储从0到16777215的数;否则可以存储从-8388608到8388607的数
INT(M) INTEGER(M) 4 如果为无符号数,可以存储从0到4294967295的数,否则可以存储从-2147483648到2147483647的数。
BIGINT(M) 8 如果为无符号数,可以存储从0到18446744073709551615的数,否则可以存储从-9223372036854775808到9223372036854775807的数。
FLOAT(precision) 4或8 这里的precision是可以直达53的整数。如果precision<=24则转换为FLOAT,如果precision>24并且precision<=53则转换为DOUBLE。
FLOAT(M,D) 4 单精度浮点数。
DOUBLE(M,D),DOUBLE PRECISION,REAL 8 双精度浮点。
DECIMAL(M,D),DEC,NUMERIC,FIXED M+1或M+2 ±1.0 * 10e−28至±7.9 *10e28,28到29位有效
DATE 3 以YYYY-MM-DD的格式显示。
DATETIME 8 以YYYY-MM-DD HH:MM:SS的格式显示。
TIMESTAMP 8 以YYYY-MM-DD HH:MM:SS的格式显示。
TIME 3 以HH:MM:SS的格式显示。
YEAR 1 以YYYY的格式显示。
CHAR(M) M 定长字符串。
VARCHAR(M) 最大M 变长字符串。M<=255.
TINYBLOB,TINYTEXT 最大255 TINYBLOB为大小写敏感,而TINYTEXT不是大小写敏感的。
BLOB, TEXT 最大64K BLOB为大小敏感的,而TEXT不是大小写敏感的。
MEDIUMBLOB,MEDIUMTEXT 最大16M MEDIUMBLOB为大小写敏感的,而MEDIUMTEXT不是大小敏感的。名称 长度 用法
LONGBLOB,LONGTEXT 最大4G LONGBLOB为大小敏感的,而LONGTEXT不是大小敏感的。
ENUM(VALUE1,….) 1或2 最大可达65535个不同的值。
SET(VALUE1,….) 可达8 最大可达64个不同的值。

  数据类型更详细的讲解请参考MYSQL帮助文档

四、SQL

  SQL全称是:结构化查询语言(Structured Query Language)。

  SQL语言包含4个部分

    1. 数据定义语言(Data Definition Language--DDL):如CREATE, DROP,ALTER等语句
    1. 数据操纵语言(Data Manipulation Language- -DML):INSERT, UPDATE, DELETE语句
    1. 数据查询语言(Data Query Language --DQL):SELECT语句
    1. 事务控制语言(Transaction Control Language--TCL):如COMMIT, ROLLBACK等语句

1、数据定义语言(DDL)

  • 创建数据库(CREATE DATABASE语句)
CREATE DATABASE mydatabase;
show databases; //查看当前服务器上存在的数据库(当前登录用户可见的)
use mydatabase; //访问数据库
  • 创建表(CREATE TABLE语句)
create table student(
sid int(11) primary key auto_increment,name varchar(20),gender char(1),age int(2),birth
date
);
desc student; //查看表结构
//创建表
CREATE TABLE `employee` (
`eid` int(11) NOT NULL default \'0\',
`name` varchar(11) NOT NULL,
`dept` varchar(11) NOT NULL,
`job` varchar(11) NOT NULL,
`gender` varchar(5) NOT NULL,
PRIMARY KEY (`eid`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

  主键:用来唯一代表一条记录的字段(主键值必须是唯一)

  • 删除表(DROP TABLE语句)
DROP TABLE student;
//drop table 语句会删除该的所有记录及表结构
show create table student; --查看表结构创建语句
desc student; --查看表结构
  • 修改表结构(ALTER TABLE语句)
alter table test add column name varchar(10); --添加表列
alter table test rename test1; --修改表名
alter table test drop column name; --删除表列
alter table test modify address char(10) --修改表列类型
alter table test change address address char(40) --修改表列类型
alter table test change column address address1 varchar(30)--修改表列名

2、数据操纵语言(DML)

  • 添加数据(INSERT INTO…语句)
INSERT INTO student(name,gender,birth) values(‘Tom’,’男’,’1985-2-5’);
  • 修改数据(UPDATE … SET语句)
UPDATE student SET name=’LILY’,gender=’女’,birth=’1988-1-1’ where id=1;
  • 删除数据(DELETE FROM…语句)
DELETE FROM student; --删除所有记录 DELETE FROM student where id=1; --删除ID为1的记录

3、数据查询语言(DQL)

  employees等表数据的sql文件点击下载

  • 查询数据(SELECT … FROM …语句)
#查询表中的单个字段
SELECT last_name FROM employees;

#查询表中的多个字段
SELECT last_name,salary,email FROM employees;

#查询表中的所有字段
SELECT
`employees`.`employee_id`,
`employees`.`first_name`,
`employees`.`last_name`,
`employees`.`email`,
`employees`.`phone_number`,
`employees`.`job_id`,
`employees`.`salary`,
`employees`.`commission_pct`,
`employees`.`manager_id`,
`employees`.`department_id`,
`employees`.`hiredate`
FROM
employees;

# 方式二
SELECT * FROM employees;

#查询常量值
SELECT 100;
SELECT \'john\';

#查询表达式
SELECT 10%3;

#查询函数
SELECT VERSION();

#7. 别名
SELECT 50%3 AS 结果;
SELECT last_name AS 姓,first_name AS 名 FROM employees;

#方式二:使用空格(省略 AS)
SELECT last_name 姓,first_name 名 FROM employees;

#案例:查询工资,显示结果为 员工 工资
SELECT salary "员工 工资" FROM employees;

#去重复
#案例:查询员工表中设计到的所有部门编号
SELECT DISTINCT department_id FROM employees;

#查询 ID 为 100 的员工信息
SELECT * FROM employees WHERE employee_id=100;

#查询部门id为空的员工信息
SELECT * FROM employees WHERE department_id IS NULL;1.5.4、数据控制语言(TCL)

#查询表中的多个字段
SELECT first_name,last_name FROM employees;

#查询 employees_id 大于105 的员工信息
SELECT * FROM employees WHERE employee_id>105;

#查询 job_id 为 ST_MAN 并且 manager_id 为 100 的员工信息
SELECT * FROM employees WHERE job_id=\'ST_MAN\' AND manager_id=100;

#查询 job_id 为 ST_MAN 或者 manager_id 大于 100 的员工信息
SELECT * FROM employees WHERE job_id=\'ST_MAN\' OR manager_id>120;

#查询姓名的最后一个字符为“T”的员工信息
SELECT * FROM employees WHERE last_name LIKE \'%T\';

#查询姓名以“T”开头的员工信息
SELECT * FROM employees WHERE last_name LIKE \'t%\';

#查询姓名中包含“T”的员工信息
SELECT * FROM employees WHERE last_name LIKE \'%t%\';

#查询所有员工信息,并按工资降序排序(默认为升序:ASC)
SELECT * FROM employees ORDER BY salary DESC;

#多个排序条件:当第一个条件相同时,以第二个条件排序
SELECT * FROM employees ORDER BY salary DESC, department_id DESC;

#按部门分组查询各部门的人数
SELECT department_id, COUNT(department_id) AS 人数 FROM employees GROUP BY department_id;

#HAVING条件语句一个HAVING子句(条件查询)必须位于GROUP BY子句之后,并位于ORDER BY子句之前。
#按部门分组查询部门id为80的部门的人数
SELECT department_id, COUNT(department_id) AS 总数 FROM employees GROUP BY department_id
HAVING department_id=80;

#查询表的总记录数
SELECT COUNT(*) AS 总数 FROM employees;

#查询学生记录的前三条(从0位置开始找出3条)
SELECT * FROM employees LIMIT 0,3;

4、数据控制语言(TCL)

1、什么是事务

  事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
  例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。
  事务是恢复和并发控制的基本单位。
  事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性。

  • 原子性(atomicity) 一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
  • 一致性(consistency) 事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
  • 隔离性(isolation) 一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
  • 持久性(durability) 持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

  事务(Transaction),也就是要么成功,要么失败,并恢复原状。

2、事务操作
  • 设置默认事务提交方式
set autocommit = false –设置事务提交方式为“手动提交”
set autocommit = true –设置事务提交方式为“自动提交”
  • 事务就是对数据库的多步操作,要么一起成功,要么一起失败
set autocommit = false;
update student set name=’vince’ where id=1;--更新数据
insert into student(name,gender,birth) values(‘yoyo’,’女’,’1981-03-20’);--插入数据
commit;--手动提交事务
delete from student where id=1;--删除数据
insert into student(name,gender,birth) values(‘tony,’男’,’1985-02-26’);--插入数据
rollback;--回滚事务
delete from student where id=1;--删除数据
savepoint point1; --保存还原点
delete from student where id=1;--删除数据
savepoint point2; --保存还原点
rollback to point2; --回滚到point2还原点
commit; --提交事务

五、函数

1、GROUP BY(聚合)函数

  • AVG ([DISTINCT] expr) 返回expr 的平均值。 DISTINCT 选项可用于返回 expr的不同值的平均值。
SELECT department_id,AVG(salary) 平均薪资 FROM employees GROUP BY department_id;
SELECT gender, AVG(age) FROM student GROUP BY gender;

  • COUNT(expr) 返回SELECT语句检索到的行中非NULL值的数目。
SELECT COUNT(*) FROM student; --返回检索行的数目,不论其是否包含 NULL值
SELECT COUNT(name) FROM student; --返回SELECT语句检索到的行中非NULL值的数目

  • MIN ([DISTINCT] expr), MAX ([DISTINCT] expr) 返回expr 的最小值和最大值
SELECT MIN(age),MAX(age) FROM student;
  • SUM ([DISTINCT] expr) 返回expr 的总数
SELECT SUM(age) FROM student;

2、控制流程函数

  • CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE
    result] END 如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE 部分,则返回值为 NULL。
SELECT CASE 1 WHEN 1 THEN \'one\' WHEN 2 THEN \'two\' ELSE \'more\' END;

  • IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。
SELECT IF(1<2,\'yes \',\'no\');
  • IFNULL(expr1,expr2) 假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2
SELECT IFNULL(1,0);
  • NULLIF(expr1,expr2) 如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为 expr1
SELECT NULLIF(1,1);

3、字符串函数

  • ASCII (str) 返回值为字符串str 的最左字符的数值。假如str为空字符串,则返回值为 0 。假如str 为NULL,则返回值为 NULL。ASCII()用于带有从 0到255的数值的字符。
SELECT ASCII(\'dx\');

  • BIN (N) 返回值为N的二进制值的字符串表示
SELECT BIN(15);
  • BIT_LENGTH (str) 返回值为二进制的字符串str 长度
SELECT BIT_LENGTH(\'text\');
  • CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符
SELECT CHAR_LENGTH( \'Admiral\');

  • FORMAT(X,D) 将数字X 的格式写为\'#,###,###.##\',以四舍五入的方式保留小数点后 D 位,并将结果以字符串的形式返回。若D为0,则返回结果不带有小数点,或不含小数部分。
SELECT FORMAT(12332.123456, 4);
  • INSERT (str,pos,len,newstr) 返回字符串 str, 其子字符串起始于 pos 位置和长期被字符串 newstr取代的len 字符。 如果pos 超过字符串长度,则返回值为原始字符串。 假如len的长度大于其它字符串的长度,则从位置pos开始替换。若任何一个参数为null,则返回值为NULL。
SELECT INSERT(\'Quadratic\', 3, 4, \'What\');
SELECT INSERT(\'Quadratic\', 3, 100, \'What\');
  • INSTR(str,substr) 返回字符串 str 中子字符串的第一个出现位置
SELECT INSTR(\'foobarbar\', \'bar\');
  • LEFT(str,len) 返回从字符串str 开始的len 最左字符。
SELECT LEFT(\'foobarbar\', 5);
  • LENGTH(str) 返回值为字符串str 的长度,单位为字节。一个多字节字符算作多字节。这意味着对于一个包含5个2字节字符的字符串, LENGTH() 的返回值为 10, 而 CHAR_LENGTH()的返回值则为5。
      utf8编码:一个汉字三个字节,一个数字或字母一个字节。
      gbk编码:一个汉字两个字节,一个数字或字母一个字节。
SELECT LENGTH(\'text\');
  • LTRIM(str) 返回字符串 str ,其引导空格字符被删除。
SELECT LTRIM(\' barbar\');
  • TRIM([BOTH | LEADING | TRAILING [remstr] FROM] str) TRIM(remstr FROM] str) 返回字符串 str , 其中所有remstr 前缀和/或后缀都已被删除。若分类符BOTH、LEADIN或TRAILING中没有一个是给定的,则假设为BOTH 。 remstr 为可选项,在未指定情况下,可删除空格。
SELECT TRIM(\' bar \'); --去空格
SELECT TRIM(LEADING \'x\' FROM \'xxxbarxxx\'); --去左边的xSELECT
TRIM(BOTH \'x\' FROM \'xxxbarxxx\'); --去左右两边的x
SELECT TRIM(TRAILING \'xyz\' FROM \'barxxyz\'); --去右边的xyz
  • STRCMP(expr1,expr2) 若所有的字符串均相同,则返回0,若根据当前分类次序,第一个参数小于第二个,则返回 -1,其它情况返回1。
SELECT STRCMP(\'text\', \'text2\'); --返回-1
SELECT STRCMP(\'text2\', \'text\'); --返回1
SELECT STRCMP(\'text\', \'text\'); --返回0
  • CONCAT (str1,str2,...) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多个参数。 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如:
SELECT CONCAT(CAST(int_col AS CHAR), char_col) mysql> SELECT CONCAT(\'My\', \'S\', \'QL\');

4、日期和时间函数

  • DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。
select DAYOFWEEK(\'1998-02-03\');
  • WEEKDAY(date) 返回date的月份中日期,在1到31范围内。
select DAYOFMONTH (\'1998-02-03\');
  • DAYOFYEAR(date) 返回date在一年中的日数, 在1到366范围内。
select DAYOFYEAR(\'1998-02-03\');
  • MONTH(date) 返回date的月份,范围1到12。
select MONTH(\'1998-02-03\');
  • DAYNAME(date) 返回date的星期名字。
select DAYNAME("1998-02-05");
  • MONTHNAME(date) 返回date的月份名字。
select MONTHNAME("1998-02-05");
  • QUARTER(date) 返回date一年中的季度,范围1到4。
select QUARTER(\'98-04-01\');
  • WEEK(date) 对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1,从星期一开始。
select WEEK(\'1998-02-20\'); 
select WEEK(\'1998-02-20\',0);
select WEEK(\'1998-02-20\',1);
  • YEAR(date) 返回date的年份,范围在1000到9999。
select YEAR(\'98-02-03\');
  • HOUR(time) 返回time的小时,范围是0到23。
select HOUR(\'10:05:03\');
  • MINUTE(time) 返回time的分钟,范围是0到59。
select MINUTE(\'98-02-03 10:05:03\');
  • SECOND(time) 返回time的秒数,范围是0到59。
select SECOND(\'10:05:03\');
  • PERIOD_ADD(P,N) 增加N个月到阶段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意阶段参数P不是日期值。
select PERIOD_ADD(9801,2);
  • PERIOD_DIFF(P1,P2) 返回在时期P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期值。
select PERIOD_DIFF(9802,199703);
  • ADDDATE(expr,days) expr是指定加到开始日期的间隔值一个表达式,expr是一个字符串;它可以以一个“-”开始表示负间隔。type是一个关键词,指明表达式应该如何被解释。(type关键词用法请参考帮助文档)若 days 参数只是整数值,则将其作为天数值添加至 expr。
SELECT ADDDATE(\'1998-01-02\', 31);SELECT DATE_ADD(\'1997-12-31 23:59:59\',INTERVAL 1
SECOND);
  • SUBDATE(date,INTERVAL expr type) date是一个指定开始日期的DATETIME或DATE值,expr是指定从开始日期减去的间隔值一个表达式,expr是一个字符串;它可以以一个“-”开始表示负间隔。type是一个关键词,指明表达式应该如何被解释。(type关键词用法请参考帮助文档)
SELECT DATE_SUB(\'1998-01-02\', INTERVAL 31 DAY);
  • ADDTIME(expr,expr2) 将 expr2添加至expr 然后返回结果。 expr 是一个时间或时间日期表达式,而expr2 是一个时间表达式。
SELECT ADDTIME(\'01:00:00.999999\', \'02:00:00.999998\');
  • DATE(expr) 提取日期或时间日期表达式expr中的日期部分。
SELECT DATE(\'2003-12-31 01:02:03\');

  • TO_DAYS(date) 给出一个日期date,返回一个天数(从0年的天数)。
select TO_DAYS(950501);mysql> select TO_DAYS(\'1997-10-07\');

  • FROM_DAYS(N) 给出一个天数N,返回一个DATE值。
select FROM_DAYS(729669);
  • CURDATE() 以\'YYYY-MM-DD\'或YYYYMMDD格式返回今天日期值,取决于函数是在一个字符串还是数字上下文被使用。
select CURDATE(); -- YYYY-MM-DD 格式mysql> select CURDATE() + 0; --YYYYMMDD 格式

  • CURTIME() 以\'HH:MM:SS\'或HHMMSS格式返回当前时间值,取决于函数是在一个字符串还是在数字的上下文被使用。
select CURTIME(); --HH:MM:SS 格式mysql> select CURTIME() + 0; --HHMMSS 格式
  • NOW() 以\'YYYY-MM-DD HH:MM:SS\'或YYYYMMDDHHMMSS格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的上下文被使用
select NOW(); -- YYYY-MM-DD HH:MM:SS 格式mysql> select NOW() + 0; --YYYYMMDDHHMMSS
格式
  • SEC_TO_TIME(seconds) 返回seconds参数,变换成小时、分钟和秒,值以\'HH:MM:SS\'或HHMMSS格式化,取决于函数是在一个字符串还是在数字上下文中被使用。
select SEC_TO_TIME(2378); -- HH:MM:SS格式mysql> select SEC_TO_TIME(2378) + 0; --HHMMSS 格式
  • TIME_TO_SEC(time) 返回time参数,转换成秒
select TIME_TO_SEC(\'22:23:00\'); mysql> select TIME_TO_SEC(\'00:39:38\');
  • DATE_FORMAT(date,format) 根据format 字符串安排date 值的格式。以下说明符可用在 format 字符串中:
说明符 说明
%a 工作日的缩写名称 (Sun..Sat)
%b 月份的缩写名称 (Jan..Dec)
%c 月份,数字形式(0..12)
%D 带有英语后缀的该月日期 (0th, 1st, 2nd, 3rd, ...)
%d 该月日期, 数字形式 (00..31)
%e 该月日期, 数字形式(0..31)
%f 微秒 (000000..999999)
%H 小时(00..23)
%h 小时(01..12)
%I 小时 (01..12)
%i 分钟,数字形式 (00..59)
%j 一年中的天数 (001..366)
%k 小时 (0..23)
%l 小时 (1..12)
%M 月份名称 (January..December)
%m 月份, 数字形式 (00..12)
%p 上午(AM)或下午( PM)
%r 时间 , 12小时制 (小时hh:分钟mm:秒数ss 后加 AM或PM)
%S 秒 (00..59)
%s 秒 (00..59)
%T 时间 , 24小时制 (小时hh:分钟mm:秒数ss)
%U 周 (00..53), 其中周日为每周的第一天
%u 周 (00..53), 其中周一为每周的第一天
%V 周 (01..53), 其中周日为每周的第一天 ; 和 %X同时使用
%v 周 (01..53), 其中周一为每周的第一天 ; 和 %x同时使用
%W 工作日名称 (周日..周六)
%w 一周中的每日 (0=周日..6=周六)
%X 该周的年份,其中周日为每周的第一天, 数字形式,4位数;和%V同时使用说明符 说明
%x 该周的年份,其中周一为每周的第一天, 数字形式,4位数;和%v同时使用
%Y 年份, 数字形式,4位数
%y 年份, 数字形式 (2位数)
%% ‘%’文字字符
SELECT DATE_FORMAT(\'1997-10-04 22:23:00\', \'%W %M %Y\');
# Saturday October 1997

SELECT DATE_FORMAT(\'1997-10-04 22:23:00\', \'%H:%i:%s\');
# 22 23 00

SELECT DATE_FORMAT(\'1997-10-04 22:23:00\',\'%D %y %a %d %m %b %j\');
#4th 97 Sat 04 10 Oct 277

mysql高级学习笔记(代码片段)

文章目录MySQL基础篇学习笔记SQL性能下降的原因SQL的执行顺序索引索引的优劣势索引的分类索引的创建索引结构判断是否需要创建索引EXPLAINEXPLAIN之idEXPLAIN之select_typeEXPLAIN之tableEXPLAIN之typeEXPLAIN之possible_keysEXPLAIN之keyEXPLAIN之key_lenEX... 查看详情

mysql高级学习笔记(代码片段)

文章目录第1章MySQL的架构介绍1.1MySQL简介1.2在Linux上安装MySQL1.3MySQL配置文件1.3MySQL逻辑架构介绍1.4MySQL存储引擎1.4.1查看命令1.4.2MyISAM和InnoDB第2章索引优化分析2.1概述2.1.1性能下降原因2.1.2常用的join查询2.1.2.1SQL执行顺序2.1.2.2join图2.... 查看详情

mysql学习笔记新建表格,添加字段等(代码片段)

【新建表格】mysql>usetest;//打开test数据库//创建userInfo表mysql>CREATETABLEIFNOTEXISTS`userInfo`(`id`INTUNSIGNEDAUTO_INCREMENT,`user_id`INTNOTNULL,`age`INTNOTNULL,`interest 查看详情

mysql学习笔记(代码片段)

MySQL中的简单内容一、常用管理命令quit;——退出服务器连接showdatabases;——显示当前数据库服务器下的所有数据库use数据库名称;——进入指定数据库showtables;——显示当前数据库下所有的数据表desc数据表名称;——描述指定数据... 查看详情

mysql学习笔记json类型(代码片段)

MySQL学习笔记JSON类型创建表创建JSON值JSON_OBJECTJSON_ARRAYJSON_QUOTE转义字符查询JSON值JSON_CONTAINS判断包含值JSON_CONTAINS_PATH判断包含路径JSON_EXTRACT(简写->)提取值JSON_KEYS返回所有键JSON_VALUE返回值JSON_OVERLAPS对比JSONJSON_SE 查看详情

mysql学习笔记2(代码片段)

表的相关操作1ALTERTABLE表名ADD字段名数据类型约束属性(字段);1添加字段2ALTERTABLE表名DROP字段名;2删除字段3ALTERTABLE表名MODIFY字段名数据类型字符集;3修改字段4ALTERTABLE旧表名RENAMETO新表名;4更改表名5ALTERTABLECHANGE旧字段名新字段名数... 查看详情

mysql学习笔记(代码片段)

目录一、什么是数据库?二、RDBMS术语三、数据类型四、SQL1、数据定义语言(DDL)2、数据操纵语言(DML)3、数据查询语言(DQL)4、数据控制语言(TCL)1、什么是事务2、事务操作五、函数1、GROUPBY(聚合)函数2、控制流程函数3... 查看详情

mysql学习笔记(代码片段)

英语单词都认识的话,mysql的基本使用方法不难。难的地方在于应用场景和设计思路以及优化方案。1、sql、DB、DBMS分别是什么,他们之间的关系?DB:database数据库,实际上是以文件的方式存储在硬盘中;DB... 查看详情

mysql学习笔记_10_mysql高级操作(下)(代码片段)

MySQL高级操作(下)五、MySQL预处理语句1、设置预处理stmt,传递一个数据作为where的判断条件preparestmtfrom“select*fromtable_namewhereid>?”;2、设置一个变量set@i=1;3、执行预处理语句executestmtusing@i;4、删除预处理指... 查看详情

mysql学习笔记新建表格,添加字段等(代码片段)

【新建表格】mysql>usetest;//打开test数据库//创建userInfo表mysql>CREATETABLEIFNOTEXISTS`userInfo`(`id`INTUNSIGNEDAUTO_INCREMENT,`user_id`INTNOTNULL,`age`INTNOTNULL,`interest`VARCHAR(100)NOTNULL,`address`VARCHAR(100)NOTNULL,PRIMARYKEY... 查看详情

mysql学习笔记(代码片段)

一、mysql体系结构从上到下,连接层,服务层,引擎层,存储层不同存储引擎对比二、索引优化分析mysql索引分类单值索引:即一个索引只包含单个列,一个表可以有多个单列索引唯一索引:索引列的值... 查看详情

mysql学习笔记——常用基础操作(代码片段)

登录与退出登录MySQL需要使用mysql命令,该命令有许多的选项参数可供使用:-V:显示MySQL的版本信息(大写)-u:用户名-p:该用户的密码-h:想要登录的MySQL服务的运行主机IP-P:想要登录的MySQL... 查看详情

学习笔记之mariadb的入门操作(代码片段)

由于CentOS7将mysql全部都改成了mariadb。所以在CentOS下yum安装mysql是没有用的。虽然还是有一大堆软件包叫做mysql。mysql-community-release.noarchel7-5installedphp-mysql.x86_645.4.16-23.el7_0.3@RHELakonadi-mysql.x86_641.9.2-4.el7RHELdovec 查看详情

python学习笔记之使用pycharm连接mysql数据库(代码片段)

代码:#coding:utf-8'''mysqlsearchjoin'''importmysql.connectorconfig='host':'localhost','port':3306,'user':'root','password&# 查看详情

bat批处理学习笔记mysql小助手.bat(代码片段)

@echooffTITLEMySQL小助手——耀眼的笨笨:startCLS::使用COLOR命令对控制台输出颜色进行更改COLOR2f::MODE语句为设定窗体的宽和高modeconcols=70lines=20:sc_mainCLS@echo.echo---------------------MySQL小助手---------------------@ec 查看详情

mysql+mybatis分页查询——数据库系列学习笔记(代码片段)

一、首先做一个查询所有并显示daopublicinterfaceProductDAO publicList<Product>list();mapper<mappernamespace="hust.mm.dao.ProductDAO"> <selectid="list"resultType="Produ 查看详情

mysql+mybatis分页查询——数据库系列学习笔记(代码片段)

一、首先做一个查询所有并显示daopublicinterfaceProductDAO publicList<Product>list();mapper<mappernamespace="hust.mm.dao.ProductDAO"> <selectid="list"resultType="Produ 查看详情

数据库学习笔记第二弹——mysql的登陆与使用(图文详解2022)(代码片段)

数据库学习笔记第二弹——MySQL的登陆与使用(图文详解2022)文章目录数据库学习笔记第二弹——MySQL的登陆与使用(图文详解2022)1.MySQL的登录1.1服务的启动与停止1.1.1途径1:使用图形界面工具1.1.2途径2:... 查看详情