mysql基础语法
mysql介绍
-
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
-
SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名
-
SQL语言不仅能独立应用于终端,还可以作为子语言为其他程序设计提供有效助力,该程序应用中,SQL可与其他程序语言一起优化程序功能,进而为用户提供更多更全面的信息。
MYSQL8数据库之关系模型E-R图
-
E-R图也称实体-联系图(Entity Relationship Diagram)
-
一对多的关系:在从表(多的一方)创建一个字段,该字段做为外键指向主表(一的一方)的主键
-
多对多的关系:额外创建一张表,作为中间表。其余两张表都是主表,中间表至少包含两个字段作为外键,分别指向两张主表的主键。
例图如下:
数据库的定义之操作
- 创建数据库 :create database 数据库名;
- 设置中文编码集:default charset utf8mb4 collate utf8mb4_general_ci;
- 使用指定数据库:use 数据库名;
- 删除数据库:drop database 数据库名;
- 查看所有数据库:show databases;
数据库表创建
- MySQL 常用数据类型
- 整数类型:TINYINT、INTEGER、BIGINT
- 浮点数:FLOAT、DOUBLE
- 日期:DATE、TIME、DATETIME、TIMESTAMP
- 文本:VARCHAR、TEXT、LONGTEXT
- 列出当前库下的所有表:show tables;
- 查询已存在的表结构:DESC 表名;
- 备注:comment
- 引擎:engine
- 默认–执行事务–回滚:innodb
- 主键:primary key
- 自增序列:auto_increment
数据库表之插入数据
-
插入数据: insert into 表名 (列1,列2,列3… 列N) values (列1的值,列2的值,列3的值…列N的值)
-
查看数据库表的数据: select * from 表名 ;
select 列1,列2,列3…列N from 表名; -
外键:Alter table 表1 add constraint 表1的外键名称 foreign key(外键列) references 表2(表2的列)
数据库表查询之条件语句
- SQL SELECT 语句:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
数据库表查询之排序
- ORDER BY 语句:select * from 表名 where 条件语句 order by 列名 ASC|DESC
数据库表查询之limit
- limit默认从0开始
- limit NUM(个数)
- limit startindex(开始index),num(个数)
- 页面–下一页,页面数量
数据库表查询之NULL
- 如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。
- NULL 值的处理方式与其他值不同。 NULL 用作未知的或不适用的值的占位符
mysql中级语法
单表分组查询
- GROUP BY 语句:SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE 条件语句 GROUP BY column_name
2. 聚合函数
- 最小值:min(列)
- 最大值:max(列)
- 求总和:sum(列)
- 求总个数:count(列)
- 求平均值:avg(列)
- HAVING 子句:SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE 条件语句
GROUP BY column_name
HAVING aggregate_function(column_name) 值操作
单表更新数据之更新与删除
- 使用 UPDATE语句来实现修改数据:UPDATE <tb_name> SET field1=value1, field2=value2 [WHERE conditions]
- 使用 DELETE语句来实现删除数据:DELETE FROM <tb_name> 删表所有数据 [WHERE conditions] 按指定条件删除数据
- 使用 DROP语句来实现删除数据库表:DROP TABLE <tb_name>
- 注 :关闭安全模式–SET SQL_SAFE_UPDATES = 0;
单表模糊查询-Like
- 一般模糊查询语句如下:SELECT 字段 FROM 表 WHERE 某字段 Like 条件
- % :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
- _ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
- []:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个
- [^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符
多表组合查询
- 内连接查询会把两张表中,存在关系的数据都查询显示出来
----SELECT * FROM , WHERE table1.xx = table2.xx
----SELECT * FROM inner join ON <table2.col_name> = table1.col_name - 外连查询包括左连接(left join)和右连接(right join)
----SELECT * FROM left join on <table2.col_name> = table1.col_name;
----SELECT * FROM right join on <table2.col_name> = table1.col_name; - 外连查询包括左连接(left join)和右连接(right join)
----SELECT 表1., 表2., 表3.,表4. FROM 表1
LEFT JOIN 表2 ON 表2.列1 = 表1.列1
LEFT JOIN 表3 ON 表3.列1 = 表1.列1
LEFT JOIN 表4 ON 表4.列1 = 表1.列1
WHERE 表1.列1 = 表2.列1 AND 表2.列 = 表3.列
mysql高级语法
子查询
- 概率:当一个查询是另一个查询的条件时,这个查询称之为子查询(内层查询)
- 语法:SELECT 列 FROM 表 WHERE 列 比较运算符 子查询
where子查询
- 语法:SELECT * FROM 表 WHERE 列 比较符 ( 子查询 )
in子查询
- 语法:SELECT * FROM 表 WHERE 列 in ( 子查询 )
from子查询
- 语法:SELECT name, count(*) as gk FROM stu
WHERE score<60 GROUP BY name HAVING gk>=2;
字符串拼接-CONCAT
CONCAT(str1,str2,…):
- 返回结果为连接参数产生的字符串。
- 如有任何一个参数为NULL ,则返回值为 NULL
- 允许有一个或多个参数
- 例如:1,查询所有员工的全名
select CONCAT(‘查询出’,ename,‘的全名’) from emp;
日期类型-DATE_FORMAT
- 将数据库日期格式转化为string(yyyy-MM-dd HH:mm:ss 格式):
----SELECT DATE_FORMAT(NOW(),’%Y-%m-%d %H:%i:%s’) - 将数据库日期格式转化为string(yy-MM-dd hh:mm:ss 格式):
----SELECT DATE_FORMAT(NOW(),’%y-%m-%d %h:%i:%s’)
感谢您的观看!
创作人 ---- wzy