一、MySQL的连接
mysql -u root -p
二、MySQL数据库
1.创建数据库
CREATE DATABASE 数据库名;
2.删除数据库
drop database 数据库名;
3.选择数据库
use 数据库名;
三、MySQL 数据类型
1.数值类型
(1)整型
最常用的类型为INT
(2)浮点型
2.日期和时间类型
3.字符串类型
四、MySQL数据表
1.创建数据表
CREATE TABLE table_name (column_name column_type);
举例:
create table stu_test (
id int,
name varchar(20) comment '姓名',
password varchar(50) comment '密码',
age int,
sex varchar(1),
birthday timestamp,
amout decimal(13,2),
resume text
);
2.删除数据表
DROP TABLE table_name ;
举例:
DROP TABLE stu_test ;
3.插入数据
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
举例
单行数据 + 全列插入
INSERT INTO student VALUES (100, 10000, '小米', NULL);
INSERT INTO student VALUES (101, 10001, '小明', '11111');
多行数据 + 指定列插入
INSERT INTO student (id, sn, name) VALUES
(102, 20001, '小鹏'),
(103, 20002, '小小');
4.查询数据
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
五、关键字
1.where
数据库中常用的是where关键字,用于在初始表中筛选查询。它是一个约束声明,用于约束数据,在返回结果集之前起作用。
查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件。
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
WHERE条件可以使用表达式,但不能使用别名。
AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分
2.UPDATE
update 表名称 set 列名称=新值 where 更新条件;
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
可以同时更新一个或多个字段。
可以在 WHERE 子句中指定任何条件。
可以在一个单独表中同时更新数据。
3.DELETE
delete from 表名称 where 删除条件;
DELETE FROM table_name [WHERE Clause]
如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
可以在 WHERE 子句中指定任何条件
可以在单个表中一次性删除记录。
4.LIKE
模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符
‘%a’ //以a结尾的数据
‘a%’ //以a开头的数据
‘%a%’ //含有a的数据
’ _ a_’ //三位且中间字母是a的
'_a ’ //两位且开头字母是a的
‘a _’ //两位且开头字母是a的
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 子句来指定条件。
5.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: 可选,返回所有结果集,包含重复数据。
UNION 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)
UNION ALL 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)
使用形式如下:
SELECT 列名称 FROM 表名称 UNION SELECT 列名称 FROM 表名称 ORDER BY 列名称;
SELECT 列名称 FROM 表名称 UNION ALL SELECT 列名称 FROM 表名称 ORDER BY 列名称;
6.排序:ORDER BY
-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];
可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
可以设定多个字段来排序。
可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
可以添加 WHERE…LIKE 子句来设置条件。
7.分组:GROUP BY
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
SELECT column_name, SUM(column_name) as column_nameFROM employee_tbl GROUP BY name WITH ROLLUP;
8.HAVING
GROUP BY 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 WHERE 语句,而需要用HAVING
举例:
显示平均工资低于1500的角色和它的平均工资
select role,max(salary),min(salary),avg(salary) from emp group by role having avg(salary)<1500;
9.连接:JOIN
(1)INNER JOIN
INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
select字段from 表1 别名1 [inner] join 表2 别名2 on 连接条件and 其他条件;
select字段from 表1 别名1,表2 别名2 where连接条件and 其他条件;
(2)外连接
外连接分为左外连接和右外连接。如果联合查询,左侧的表完全显示我们就说是左外连接;右侧的表完全显示我们就说是右外连接。
-- 左外连接,表1完全显示
select字段名from 表名1 left join 表名2 on 连接条件;
-- 右外连接,表2完全显示
select字段from 表名1 right join 表名2 on 连接条件;
(3)自连接
自连接是指在同一张表连接自身进行查询。
六、NULL 值处理
1.IS NULL
当列的值是 NULL,此运算符返回 true。
2.IS NOT NULL
当列的值不为 NULL, 运算符返回 true。
3.<=>
比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true。
七、正则表达式
八、事务
事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。在不同的环境中,都可以有事务。对应在数据库中,就是数据库事务。MySQL 事务主要用于处理操作量大,复杂度高的数据。
在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
事务用来管理 insert,update,delete 语句。
事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。
(1)原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
(2)一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
(3)隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
(4)持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
事务的使用
(1)开启事务:start transaction;
(2)执行多条SQL语句
(3)回滚或提交:rollback/commit;说明:rollback即是全部失败,commit即是全部成功。
九、ALTER命令
1.删除表字段
用了 ALTER 命令及 DROP 子句来删除以上创建表的 i 字段:
ALTER TABLE table_name DROP i;
如果数据表中只剩余一个字段则无法使用DROP来删除字段。
2.添加表字段
使用 ADD 子句来向数据表中添加列。
如下实例在表 table_name 中添加 i 字段,并定义数据类型。
ALTER TABLE table_name ADD i INT;
3.修改表字段
如果需要修改字段类型及名称, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句 。
例如,把字段 c 的类型从 CHAR(1) 改为 CHAR(10),可以执行以下命令:
ALTER TABLE table_name MODIFY c CHAR(10);
使用 CHANGE 子句, 语法有很大的不同。 在 CHANGE 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型。尝试如下实例:
ALTER TABLE table_name CHANGE i j BIGINT;
ALTER TABLE table_name CHANGE j j INT;
- 当你修改字段时,你可以指定是否包含值或者是否设置默认值。如果你不设置默认值,MySQL会自动设置该字段默认为 NULL。
- 可以使用 ALTER 来修改字段的默认值,尝试以下实例:
ALTER TABLE table_name ALTER i SET DEFAULT 1000;
默认值变为1000
- 可以使用 ALTER 命令及 DROP子句来删除字段的默认值,如下实例:
ALTER TABLE table_name ALTER i DROP DEFAULT;
默认值变为NULL
- 修改数据表类型,可以使用 ALTER 命令及 TYPE 子句来完成。尝试以下实例,我们将表table_name 的类型修改为 MYISAM :
ALTER TABLE table_name ENGINE = MYISAM;
- 如果需要修改数据表的名称,可以在 ALTER TABLE 语句中使用 RENAME 子句来实现。
尝试以下实例将数据表 table_name 重命名为 alter_name:
ALTER TABLE table_name RENAME TO alter_name;
十、索引
索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。
1.作用
(1)数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍目录的关系。
(2)索引所起的作用类似书籍目录,可用于快速定位、检索数据。
(3)索引对于提高数据库的性能有很大的帮助。
2.使用场景
要考虑对数据库表的某列或某几列创建索引,需要考虑以下几点:
(1)数据量较大,经常对这些列进行条件查询。
(2)该数据库表的插入操作,及对这些列的修改操作频率较低。
(3)索引会占用额外的磁盘空间。
满足以上条件时,考虑对表中的这些字段创建索引,以提高查询效率。
反之,如果非条件查询列,或经常做插入、修改操作,或磁盘空间不足时,不考虑创建索引。
3.查看索引
show index from 表名;
4.创建索引
对于非主键、非唯一约束、非外键的字段,可以创建普通索引
create index 索引名on 表名(字段名);
5.删除索引
drop index 索引名on 表名;
以下链接为:MySQL教程|菜鸟教程 的网站地址
https://www.runoob.com/mysql/mysql-tutorial.html