MySQL 的基础语法

创建数据库

CREATR DATABASE 数据库名; --直接创建数据库

CREATE DATABASE IF NOT EXISTS 数据库名; --判断是否存在并创建

CREATE DATABASE 数据库名CHARACTER SET `GBK`; --创建指定格式数据库

查看数据库

SHOW DATABASES; --查看所有数据库

SHOW CREATE DATABASE 数据库名; --查看某个库的定义信息

SELECT DATABASE(); -- 查看正在使用的数据库

Use 数据库名; -- 使用/切换数据库

修改和删除数据库

ALTER DATABASE 数据库名 DEFAULTCHARACTER 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 CHARACTERSET 新字符集;  --修改表的字符集

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 PRIMARYKEY;  --删除主键

主键自增

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 条件 LIMIToffset, length;

offset 指偏移量,可以认为是跳过的记录数量,不写则默认为0

length 指需要显示的总记录数

使用:

SELECT * FROM 表名 LIMIToffset,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.持久性

STARTTRANSACTION; 开启事务

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介绍:

Booleanexecute(String  sql) --执行任何SQL语句,如果是查询语句返回true,不是返回false

IntexecuteUpdate(String sql) --用于执行增删改语句;返回影响的行数

ResultSetexecuteQuery(String sql) --执行查询语句;返回查询到的结果集

JDBC实现对单表数据查询

关键字ResultSet

调用next方法,ResultSet内部指针回移动到下一行数据,有数据则返回true,无则false

调用getXXX(),方法获取数据:

            参数是字符串则根据字段名获取值;  参数是整数则通过字段序号获取值

JDBC事务

Connection接口与事务有关的方法:

SQLException(false/ture);   false:开启事务  ture :关闭事务

commit(); 提交事务

rollback(); 回滚事务

PreparedSatement使用步骤

编写SQL语句,位置内容使用?占位: 

SELECT * FROMuser WHERE name=? AND password=?; 参数化的SQL

设置参数:

setXXX(第几个?, ?的具体值);

用executeQuery() 、executeUpdate() 执行SQL语句

本文来自投稿,不代表科技代码立场,如若转载,请注明出处https://www.cwhello.com/13491.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
上一篇 2019年9月12日 09:43
下一篇 2019年9月15日 22:29

相关推荐

  • 在PHPstudy中桌面通过cmd命令来连接数据库?

    通过PHPstudy中的cmd连接MYSQL。 1、打开PHPstudy 。 2、通过phpstudy打开cmd。 3、输入cmd命令: cd mysql  进入到mysql文件夹。 4、接着输入:cd bin  进入到数据库的bin目录 5、接着输入 mysql  -uroot -proot...

    2017年11月19日 MySQL自学教程
    0497
  • 重蔚自留地php学习第三十九天——mysql事物触发器函数过程

    数据备份 将数据里的数据进行保存到外部文件,从而在数据库内部数据丢失或者出错的情况下能够通过备份文件进行还原操作,从而将损失降低到最小。 对单表内的纯数据进行备份 将表中的数据(不包含结构,没有字段头...

    2018年10月23日 MySQL自学教程
    0267
  • 我的php学习第十九天之mysql

    昨日回顾 PHP文件的工作原理 www.baidu.com/about/index.php   分析的相关信息: (1)www.baidu.com对应的是服务器上的 DocumentRoot配置项指定的目录 转换成实际目录: e:www (2)about目录 转成实际目录...

    2015年12月1日 server自学教程
    0277
  • 宝塔面板mysql数据库无法启动的解决方法。

    今天真的是遇到的大麻烦了。本来想在服务器上再搭建一个网站的,结果不知道弄了哪里,导致了mysql数据库直接无法启动了。网上找遍了所有方法都没有解决。最后还是在一个博客上找到的解决方法。于是记录一下,方便...

    2022年4月26日
    05.9K
  • mysql基础2-数据类型

    回顾 数据库基本概念:数据库,数据库管理系统,数据库系统 数据库分类:关系型数据库和非关系型数据库 关系型数据库:用二维表来保存数据,数据保存在硬盘里 Mysql,Oracle,DB2,SqlServer,access 非关系型数...

    2018年7月17日 PHP自学教程
    0294
  • MySQL中如何定位慢查询?

    做压测的时候有的接口非常的慢,接口的响应时间超过了2秒以上,在运维的监控系统Skvwalking中,在展示的报表中可以看到是哪一个接口比较慢,分析这个接口,可以看到哪部分比较慢,从而知道SQL的具体的执行时间,...

    2023年8月29日
    00
  • mysql的数据操作_插入数据

    语句:insert into 表名 【(字段1,字段2,字段3,.....)】 values(值1,值2,值3,......); 一次性插入多行数据 Insert into 表名 [(字段列表)] values (第一条数据),(第二条数据),......; 字段列表可以省略:省...

    2017年11月24日 MySQL自学教程
    0182
  • MySQL大表优化方案之表单优化(推荐一)

    当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为...

    2018年3月10日
    0302

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息