MYSQL基础总结

2021/9/26 2:10:54

本文主要是介绍MYSQL基础总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

MYSQL总结

操作数据库

格式

CREATE TABLE [IF NOT EXISTS] `表名`(
    `字段名` 列类型 [属性][索引][注释],
    `字段名` 列类型 [属性][索引][注释],
    `字段名` 列类型 [属性][索引][注释],
    `字段名` 列类型 [属性][索引][注释],
    ...
)[表类型][字符集设置][注释]

修改和删除数据表字段

修改表名 ALTER TABLE 旧表名 RENAME AS 新表名
增加表字段 ALTER TABLE 表名 ADD 字段名 列属性
修改表字段 ALTER TABLE 表名 MODIFY 字段名 列属性
         ALTER TABLE 表名 CHANGE 旧名字 新名字 列属性
删除表字段 ALTER TABLE 表名 DROP 字段名
删除表 DROP TABLE IF EXISTS 表名

DML语言

添加

insert into 表名(字段1,字段2,...)values ('值一')('值二')('值三')

修改

update 表名 set colnum _name = value,[colnum _name = value...] where [条件]

删除

delete from 表名 [where 条件]

DQL查询数据(最重点)

查询字段:

select 字段 from 表

起别名:

select 字段 as 别名 from 表

去重 distinct:

select distinct 字段 from 表

联表查询(重点):

join(连接的表)on(判断的条件)连接查询 inner join.....on(等值条件)交叉连接 left join 左联 right join 右联

where 等值查询

自连接:

自己的表和自己的表连接 一张表拆为两张一样的表即可

查询逻辑顺序

我要查询哪些数据 select ...

从哪几个表中查from表 (左表或者右表)xxxJoin 连接的表 on 交叉的条件

假设存在多张表查询 先查询两张表再慢慢增加

查询顺序

SELECT [ALL | DISTINCT]
{*l table.* l [table,field1[as alias1][,table.field2[as alias2]][,...]]}
FROM table_name [as table_alias]
[left | right | inner join table_name2] --联合查询
[WHERE ...]--指定结果需满足的条件
[GROUP BY ...]-- 指定结果按照哪几个字段来分组
[HAVING] -- 过滤分组的记录必须满足的次要条件
[ORDER BY ...]--指定查询记录按一个或多个条件排序
[LIMIT {[offset,]row_count l row_countOFFSET offset]];--指定查询的记录从哪条至哪条
​

分页和排序

分页

放在最后

语法:limit 起始值,页面大小

【pagesize:页面大小】

【(n-1)*pagesize:起始值】

【n:当前页】

【数据总数/页面大小=总页数】

排序

放在where后

升序 ASC

降序 DESC

语法:order by 字段 ASC/DESC

子查询

本质

在where语句中嵌套一个子查询语句

MySQL函数

常用函数

数据函数

 SELECT ABS(-8);  /*绝对值*/
 SELECT CEILING(9.4); /*向上取整*/
 SELECT FLOOR(9.4);   /*向下取整*/
 SELECT RAND();  /*随机数,返回一个0-1之间的随机数*/
 SELECT SIGN(0); /*符号函数: 负数返回-1,正数返回1,0返回0*/
12345

字符串函数

 SELECT CHAR_LENGTH('狂神说坚持就能成功'); /*返回字符串包含的字符数*/
 SELECT CONCAT('我','爱','程序');  /*合并字符串,参数可以有多个*/
 SELECT INSERT('我爱编程helloworld',1,2,'超级热爱');  /*替换字符串,从某个位置开始替换某个长度*/
 SELECT LOWER('KuangShen'); /*小写*/
 SELECT UPPER('KuangShen'); /*大写*/
 SELECT LEFT('hello,world',5);   /*从左边截取*/
 SELECT RIGHT('hello,world',5);  /*从右边截取*/
 SELECT REPLACE('狂神说坚持就能成功','坚持','努力');  /*替换字符串*/
 SELECT SUBSTR('狂神说坚持就能成功',4,6); /*截取字符串,开始和长度*/
 SELECT REVERSE('狂神说坚持就能成功'); /*反转
 
 -- 查询姓周的同学,改成邹
 SELECT REPLACE(studentname,'周','邹') AS 新名字
 FROM student WHERE studentname LIKE '周%';
1234567891011121314

日期和时间函数

 SELECT CURRENT_DATE();   /*获取当前日期*/
 SELECT CURDATE();   /*获取当前日期*/
 SELECT NOW();   /*获取当前日期和时间*/
 SELECT LOCALTIME();   /*获取当前日期和时间*/
 SELECT SYSDATE();   /*获取当前日期和时间*/
 
 -- 获取年月日,时分秒
 SELECT YEAR(NOW());
 SELECT MONTH(NOW());
 SELECT DAY(NOW());
 SELECT HOUR(NOW());
 SELECT MINUTE(NOW());
 SELECT SECOND(NOW());
12345678910111213

系统信息函数

 SELECT VERSION();  /*版本*/
 SELECT USER();     /*用户*/

聚合函数(常用)

函数名称描述
COUNT()【重点】 计数
SUM() 求和
AVG() 平均值
MAX() 最大值
MIN() 最小值
... ...官网找
## 事务

事务原则

ACID原则 :

原子性:要么都成功 要么都失败

一致性:事务前后的数据完整性保证一致

隔离性: 不被其他事务所干扰 事务之间相互隔离

持久性:事务一旦提交则不可逆 被持久化到数据库中

步骤

关闭自动提交 set autocommit = 0

事务开启 start transaction

提交 commit(成功) 或 回滚 rollback(失败)

事务结束 set autocommit = 1 (开启自动提交)

索引

主键索引(primary key)

唯一标识 主键不可重复

唯一索引(unique key)

避免重复的列 唯一索引可以重复

常规索引(key/index)

默认的 index key关键字设置

全文索引(FullText)

特定数据库引擎下有

快速定位数据

数据库三大范式

第一范式

原子性:保证每一列不可再分

第二范式

每张表只描述一件事情

第三范式

保证数据表中的每一列数据都与主键相关 而不能间接相关

JDBC程序

步骤总结

1 加载驱动

2 连接数据库DriverManager

3 获取执行sql对象 Statement

4 获取返回的结果集

5 释放连接

DriverManager

//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver");//固定写法
Connection connection= DriverManager.getConnection(url,name,password);

//connection代表数据库
//数据库设置自动提交
//事务提交
//事务回滚
connection.rollback();
connection.commit();
connection.setAutoCommit();

URL

jdbc:mysql://主机地址:端口号/数据库名?参数1&参数2&参数3

statement执行sql对象

String sql="SELECT * FROM users";//编写Sql

statement.executeQuery();
statement.execute();
statement.executeUpdate();//更新,插入,删除,返回一个受影响的行数

123456

ResultSet查询结果集

ResultSet resultSet = statement.executeQuery(sql);//返回的结果集,结果集中封装了我们全部查询的结果
        resultSet.getObject();//在不知道列类型下使用
        resultSet.getString();//如果知道则指定使用
        resultSet.getInt();
        


1234567

释放内存

//6. 释放连接
        resultSet.close();
        statement.close();
        connection.close();//耗资源

 



这篇关于MYSQL基础总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程