您当前的位置:首页 > 电脑百科 > 数据库 > MYSQL

MySQL的基础语法

时间:2020-03-01 14:38:42  来源:  作者:

MySQL

基础语法

DDL定义

 

MySQL的基础语法

 

 

创建数据库
CREATR DATABASE 数据库名; --直接创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名; --判断是否存在并创建
CREATE DATABASE 数据库名 CHARACTER SET `GBK`; --创建指定格式数据库
 
查看数据库
SHOW DATABASES; --查看所有数据库
SHOW CREATE DATABASE 数据库名; --查看某个库的定义信息
SELECT DATABASE(); -- 查看正在使用的数据库
Use 数据库名; -- 使用/切换数据库
 
修改和删除数据库
ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 新字符集; --修改数据库字符集
DROP DATABASE 数据库名; --删除数据库
 
创建表
CREATE TABLE 表名(字段名 数据类型,字段名 数据类型); -- 创建表
CREATE TABLE 表名 LIKE 新表名; -- 快速创建爱你一个表结构相同的表
 
查看表
SHOW TABLES; --查看数据库中所有表
DESC 表名; -- 查看表结构
SHOW CREATE TABLE 表名; --查看创建表的SQL语句
 
删除表
DROP TABLE 表名; -- 直接删除表
DROP TABLE IF EXISTS 表名; -- 判断表是否存在并删除表
 
修改表结构
ALTER TABLE 表名 ADD 字段名 字段类型; --添加列
ALTER TABLE 表名 MODIFY 字段名 新的类型; --修改列类型
ALTER TABLE 表名 CHANGE 老字段名 新字段名 类型; --修改列名
ALTER TABLE 表名 DROP 字段名; --删除列
RENAME TABLE 旧表名 TO新表名; --修改表名
ALTER TABLE 表名 DEFAULT CHARACTER SET 新字符集; --修改表的字符集
 
DML插入记录
INSERT INTO 表名(字段名1,字段名2...) VALUES (字段值1,字段值2); --插入全部字段
省略写法: INSERT INTO 表名 VALUES (字段值1,字段值2);
没有添加数据的字段可以使用NULL
插入多条数据:
INSERT INTO 表名(字段名1,字段名2...) VALUES (字段值1,字段值2),(字段值1,字段值2)...;
 
DML更新表记录
UPDATE 表名 SET 字段名=新的值; --不带条件修改数据
UPDATE 表名 SET 字段名=新的值 WHERE 条件; --带条件修改数据
 
DML删除表记录
DELETE FROM 表名 WHERE 字段名=值; --带条件删除数据
DELETE FROM 表名; --不带条件删除数据,删除所有数据
 
数据库约束
PRIMARY KEY 主键约束 UNIQUE 唯一约束
NOT NULL 不为空
DEFAULT 默认约束
FOREIGH KEY 外键约束
ALTER TABLE 表名 ADD PRIMARY KEY(字段名); --已有表添加主键
ALTER TABLE 表名 DROP PRIMARY KEY; --删除主键
主键自增
AUTO_INCREMENT 主键自增(整数类型自动增长)
ALTER TABLE 表名 AUTO_INCREMENT=起始值; 修改自增起始值
DELETE和TRUNCATE/ 前者只删除表中数据,后者删除数据的同时,重置主键自增的值为1
 
蠕虫复制
CREATE TABLE 表2 LIKE 表1; --创建表2结构和表1结构一样
INSERT INTO 表名2 SELECT * FROM 表名1; --表1的数据复制到表2
 
DQL查询语句
语法格式:
SELECT 字段 FROM 表名 WHERE 条件;
 
比较运算符
>`大于
`<`小于
`<=`小于等于
`>=`大于等于
`=`等于
`<>`、`!=`不等于
 
逻辑运算符
AND(&&) 多个条件同时满足
OR(||) 多个条件其中一个满足
NOT(!) 不满足
关键字in:
in() in里面每个数据都会作为一次条件,只要满足的就会显示
 
模糊查询like
LIKE 像 像什么什么一样
SELECT * FROM 表名 WHERE 字段名 LIKE ‘通配符字符串’;--满足通配符字符串的数据就会显示
MySQL通配符有两个:
%:表示任意多个字符
_:表示一个字符
 
DQL查询语句-排序
关键字:
ORDER BY 字段名 [ASC|DESC]
ASC:升序 DESC:降序
单列排序:
使用字段数据排序
SELECT * FROM 表名 ORDER BY 字段名 DESC;
组合排序:
当字段1数据有相同时,再用字段2数据进行排序
SELECT * FROM 表名 WHERE 条件 ORDER BY 字段名1 ASC, 字段名2 ASC;
 
DQL查询语句-聚合函数
COUNT: 统计记录数,记录为NULL的不统计
SUM: 计算指定列数值的和,如果不是数值类型,那么结果为0
MAX: 计算指定列最大值
MIN: 计算指定列最小值
AVG: 计算指定列平均值
聚合函数的使用: 写在SQL语句SELECT后
SELECT 聚合函数(字段名) FROM 表名;
 
DQL查询语句-分组
分组一般和聚合函数一起使用,单独分组没卵用
关键字: GROUP BY 将字段中相同值作为一组,返回第一条数据
SELECT * FROM 表名 GROUP BY 字段名;
SELECT * FROM 表名 WHERE 条件 GROUP BY 字段名;
 
DQL查询语句-limit语句
LIMIT语句格式:
SELECT * FROM 表名 WHERE 条件 LIMIT offset, length;
offset 指偏移量,可以认为是跳过的记录数量,不写则默认为0
length 指需要显示的总记录数
使用:
SELECT * FROM 表名 LIMIT offset,length;
 
外键约束
新建表时增加外键:
CREATE TABLE 表名(
字段名 字段类型,
字段名 字段类型,
-- 外键约束
[CONSTRAINT 外键约束名] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键)
);
已有表时增加外键:
ALTER TABLE 从表 ADD [CONSTRAINT 外键约束名] FOREIGN KEY(外键字段名)
REFERENCES 主表(主键字段名);
删除外键:
ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;
 
外键级联操作
级联更新: ON UPDATE CASCADE主表更新时,从表跟着更新
级联删除: ON DELETE CASCADE 主表删除时,从表跟着删除
 
内连接
隐式内连接:看不到JOIN关键字,条件使用WHERE指定
SELECT 字段 FROM 表1,表2 WHERE 条件;
显式内连接:使用INNER JOIN ... ON语句,可以省略INNER
SELECT 字段 FROM 左表 INNER JOIN 右表 ON 表连接条件 WHERE 查询条件;
 
左外连接
SELECT 字段 FROM 左表 LEFT OUTER JOIN 右表 ON 表连接条件 WHERE 查询条件;
 
子查询
单行单列: 在WHELE 后面作为条件
SELECT 查询字段FROM 表 WHERE 字段=(子查询);
多行单列: 在WHERE 后面作为条件
SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询);
多行多列: 在FROM后面作为表
SELECT 查询字段FROM (子查询) 表别名 WHERE 条件;
子查询作为表需要取别名,否则这张表没有名称无法访问表中的字段
 
事务
四大特性: 1.原子性 2.一致性 3.隔离性 4.持久性
START TRANSACTION; 开启事务
COMMIT; 提交事务
ROLLBACK; 回滚事务
每条SQL语句都是一个单独的事务,自开自提,通过设置可以关闭自动提交事务。
关闭自动提交事务: SET AUTOCOMMIT= 0; 0:OFF(关) 1:ON(开)
 
回滚点
设置回滚点:
SAVEPONIT 回滚点名字;
回到回滚点:
ROLLBACK TO 回滚点;
JDBC访问数据库步骤
1. Class.forName(“com.mysql.jdbc.driver”); --注册驱动
2. DriverManager.getConnection(“URL”, ”User”, “Password”); --连接数据库
3. 调用 .createStatement() 获取Statement对象执行SQL语句
Statement对象的API介绍:
Boolean execute(String sql) --执行任何SQL语句,如果是查询语句返回true,不是返回false
Int executeUpdate(String sql) --用于执行增删改语句;返回影响的行数
ResultSet executeQuery(String sql) --执行查询语句;返回查询到的结果集
 
JDBC实现对单表数据查询
关键字ResultSet
调用next方法,ResultSet内部指针回移动到下一行数据,有数据则返回true,无则false
调用getXXX(),方法获取数据:
参数是字符串则根据字段名获取值; 参数是整数则通过字段序号获取值
JDBC事务
Connection接口与事务有关的方法:
SQLException(false/ture); false:开启事务 ture :关闭事务
commit(); 提交事务
rollback(); 回滚事务
PreparedSatement使用步骤
编写SQL语句,位置内容使用?占位:
SELECT * FROM user WHERE name=? AND password=?; 参数化的SQL
设置参数:
setXXX(第几个?, ?的具体值);
用executeQuery() 、executeUpdate() 执行SQL语句


Tags:MySQL   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生...【详细内容】
2021-12-24  Tags: MySQL  点击:(7)  评论:(0)  加入收藏
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  Tags: MySQL  点击:(12)  评论:(0)  加入收藏
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章...【详细内容】
2021-12-14  Tags: MySQL  点击:(18)  评论:(0)  加入收藏
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二...【详细内容】
2021-12-14  Tags: MySQL  点击:(13)  评论:(0)  加入收藏
为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查...【详细内容】
2021-12-09  Tags: MySQL  点击:(15)  评论:(0)  加入收藏
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  Tags: MySQL  点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  Tags: MySQL  点击:(17)  评论:(0)  加入收藏
对于数据分析来说,MySQL使用最多的是查询,比如对数据进行排序、分组、去重、汇总及字符串匹配等,如果查询的数据涉及多个表,还需要要对表进行连接,本文就来说说MySQL中常用的查询...【详细内容】
2021-12-06  Tags: MySQL  点击:(21)  评论:(0)  加入收藏
在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQL Server等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。...【详细内容】
2021-11-24  Tags: MySQL  点击:(23)  评论:(0)  加入收藏
概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域...【详细内容】
2021-11-05  Tags: MySQL  点击:(31)  评论:(0)  加入收藏
▌简易百科推荐
作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生...【详细内容】
2021-12-24  爱可生    Tags:MySQL   点击:(7)  评论:(0)  加入收藏
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章...【详细内容】
2021-12-14  python数据分析    Tags:MySQL记录锁   点击:(18)  评论:(0)  加入收藏
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二...【详细内容】
2021-12-14  linux上的码农    Tags:mysql   点击:(13)  评论:(0)  加入收藏
为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查...【详细内容】
2021-12-09  元宇宙iwemeta    Tags:mysql   点击:(15)  评论:(0)  加入收藏
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  吴彬的分享    Tags:Mysql数据库   点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  秃头码哥    Tags:MySQL数据库   点击:(17)  评论:(0)  加入收藏
对于数据分析来说,MySQL使用最多的是查询,比如对数据进行排序、分组、去重、汇总及字符串匹配等,如果查询的数据涉及多个表,还需要要对表进行连接,本文就来说说MySQL中常用的查询...【详细内容】
2021-12-06  笨鸟学数据分析    Tags:MySQL   点击:(21)  评论:(0)  加入收藏
在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQL Server等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。...【详细内容】
2021-11-24  笨鸟学数据分析    Tags:SQL语句   点击:(23)  评论:(0)  加入收藏
概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域...【详细内容】
2021-11-05  Java云海    Tags:分布式锁   点击:(31)  评论:(0)  加入收藏
MySQL的进阶查询 一、 按关键字排序 使用ORDERBY语句来实现排序排序可针对一个或多个字段ASC:升序,默认排序方式 【升序是从小到大】DESC:降序 【降序是从大到小】ORDER BY的...【详细内容】
2021-11-05  Java热点    Tags:SQL语句   点击:(28)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条