创建数据库

CREATE DATABASE database_name;

create database mysql_test;

删除数据库

DROP DATABASE database_name;

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
> drop database mysql_test;

数据类型

完整数据类型请参考MySQL 数据类型
MySQL支持所有标准SQL数值数据类型,所以数据类型有很多,这里介绍几个常用的
数值类型

类型 大小 范围(有符号) 范围(无符号) 用途
INT或INTEGER 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
FLOAT 4 bytes (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度浮点数值
DOUBLE 8 bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度浮点数值
DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

日期类型

类型 大小( bytes) 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值

字符串类型

类型 大小 用途
CHAR 0-255 bytes 定长字符串
VARCHAR 0-65535 bytes 变长字符串
TEXT 0-65 535 bytes 长文本数据

总体来说整数用int,小数根据精度选择float,double和decimal,日期用date,字符串用varchar。
然后再说一下字符串类型的区别, CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。所以经常变化的字段用 varchar, 知道固定长度的用 char。尽量用 varchar,超过 255 字符的只能用 varchar 或者 text,能用 varchar 的地方尽量不用 text。

创建数据表

CREATE TABLE table_name (column_name column_type);

UNSIGNED 无符号,即非负
AUTO_INCREMENT 自增
NOT NULL 非空
PRIMARY KEY 主键

CREATE table student(
id int PRIMARY KEY auto_increment,
name VARCHAR(20) not null,
address VARCHAR(20) not null)
;

删除数据表

DROP TABLE table_name ;

插入数据

INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );

INSERT into student (name,address) VALUES ('张三','北京');

查询数据

SELECT column_name,column_name FROM table_name [WHERE Clause]

SELECT id,name,address FROM student;

MySQL基础笔记 Mysql 第1张

UPDATE更新

UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]

UPDATE student set address = '长沙' WHERE `name` = '李四';

MySQL基础笔记 Mysql 第2张

DELETE语句

DELETE FROM table_name [WHERE Clause]

如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。

WHERE子句

我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。

SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....

查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件。

  • 你可以在 WHERE 子句中指定任何条件。
  • 你可以使用 AND 或者 OR 指定一个或多个条件。
  • WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
  • WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。

LIKE子句

SQL LIKE 子句中使用百分号 %字符来表示任意字符,如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。

SELECT field1, field2,...fieldN FROM table_name WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'

你可以在 WHERE 子句中指定任何条件。
你可以在 WHERE 子句中使用LIKE子句。
你可以使用LIKE子句代替等号 =。
LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
你可以使用 AND 或者 OR 指定一个或多个条件。
你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。

SELECT id,name,address FROM student WHERE address LIKE '%京';

MySQL基础笔记 Mysql 第3张

UNION

UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

expression1, expression2, ... expression_n: 要检索的列。
tables: 要检索的数据表。
WHERE conditions: 可选, 检索条件。
DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
ALL: 可选,返回所有结果集,包含重复数据。

CREATE table teacher(
id int PRIMARY key auto_increment,
name VARCHAR(20) not null,
address VARCHAR(20) not null);

创建老师表并插入数据
MySQL基础笔记 Mysql 第4张

SELECT address FROM student UNION SELECT address FROM teacher;

MySQL基础笔记 Mysql 第5张

排序

如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]

你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
你可以设定多个字段来排序。
你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
你可以添加 WHERE...LIKE 子句来设置条件。

SELECT * FROM student ORDER BY address;

MySQL基础笔记 Mysql 第6张

分组

GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

插入更多数据,并统计各个地址的人数
MySQL基础笔记 Mysql 第7张

SELECT address,COUNT(address) as '人数' FROM student GROUP BY address;

MySQL基础笔记 Mysql 第8张

连接的使用

你可以在 SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。
JOIN 按照功能大致分为如下三类:
INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

内连接

MySQL基础笔记 Mysql 第9张

新建一个分数表,链接两个表打印成绩和住址

SELECT student.id,student.`name`,student.address,score.score FROM student JOIN score on student.id = score.id;

MySQL基础笔记 Mysql 第10张

左连接

SELECT student.id,student.`name`,student.address,score.score FROM student left JOIN score on student.id = score.id;

MySQL基础笔记 Mysql 第11张

右连接

SELECT student.id,student.`name`,student.address,score.score FROM student RIGHT JOIN score on student.id = score.id;

MySQL基础笔记 Mysql 第12张

ALTER命令

删除,添加或修改表字段

如下命令使用了 ALTER 命令及 DROP 子句来删除以上创建表的 i 字段:

ALTER TABLE testalter_tbl DROP i;

如果数据表中只剩余一个字段则无法使用DROP来删除字段。
MySQL 中使用 ADD 子句来向数据表中添加列,如下实例在表 testalter_tbl 中添加 i 字段,并定义数据类型:

ALTER TABLE testalter_tbl ADD i INT;

执行以上命令后,i 字段会自动添加到数据表字段的末尾。
如果你需要指定新增字段的位置,可以使用MySQL提供的关键字 FIRST (设定位第一列), AFTER 字段名(设定位于某个字段之后)。

修改字段类型及名称

如果需要修改字段类型及名称, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句 。
例如,把字段 c 的类型从 CHAR(1) 改为 CHAR(10),可以执行以下命令:

ALTER TABLE testalter_tbl MODIFY c CHAR(10);

使用 CHANGE 子句, 语法有很大的不同。 在 CHANGE 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型。尝试如下实例:

ALTER TABLE testalter_tbl CHANGE i j BIGINT;
ALTER TABLE testalter_tbl CHANGE j j INT;

ALTER TABLE 对 Null 值和默认值的影响

当你修改字段时,你可以指定是否包含值或者是否设置默认值。
以下实例,指定字段 j 为 NOT NULL 且默认值为100 。

ALTER TABLE testalter_tbl MODIFY j BIGINT NOT NULL DEFAULT 100;

如果你不设置默认值,MySQL会自动设置该字段默认为 NULL。

修改表名

如果需要修改数据表的名称,可以在 ALTER TABLE 语句中使用 RENAME 子句来实现。
尝试以下实例将数据表 testalter_tbl 重命名为 alter_tbl:

ALTER TABLE testalter_tbl RENAME TO alter_tbl;

MySQL函数

完整MySQL函数请参考MySQL函数

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄