LOADING

加载过慢请开启缓存 浏览器默认开启

sql学习ver1.0

2023/10/16 学习 学习

2023.10.19:文章周末更新,会把排版优化一下~
2023.10.16:更新sql ver1.0


数据库概念

操作者用SQL语言向数据库管理系统(DBMS)发出指令,系统在数据库(DB)里进行操作。

数据库存储特点

  • 数据放进表(按行存储),表放进数据库
  • 数据库有多个表,每个表只有一个名字
  • 表中的每一列(也称字段)类似于java中对象的属性,每一行类似于java中的对象

配置文件

my.ini 文件位置:C:\ProgramData\MySQL\MySQL Server 8.0

SQL启动与停止

方式一:计算机 ——– 管理 ——-服务

方式二:命令行(管理员) net start/stop mysql端口

SQL登陆与退出

方式一:MySQL Command Line Client登陆(仅限于root)

方式二:命令行(管理员) mysql [-h主机名 -P端口号] -u用户名 -p密码 (仅限本地可以省略)

退出:exit或ctrl+c

SQL常见命令

show databases;              //查看数据库
use 库名;						//打开指定库
show tables					 //查看表
desc 表名						//查看表结构
查看版本:
select version();
mysql --version

SQL语法规范

  • 不区分大小写
  • 用分号结尾
  • 可以换行
  • 单行注释#或– + 空格
  • 多行注释/* */

查询

基础查询

SELECT 列表 FROM 表名;

注意:1.查询的可以是字段、变量、表达式或函数;

​ 2.返回的是虚拟表格

​ 3.SELECT * 会返回所有字段。

​ 4.如果查询的列与SQL关键字冲突时,用反引号(``)包裹。

​ 5.SELECT可以查询常量值(意义何在…

去重直接在字段前加上DISTINCT

MySQL里的+号没有连接符的作用,只有运算符的作用

  • 若一方是字符型,会自动隐式转换为数值型,失败会当做0
  • 一方为NULL,最终值也为NULL

若要拼接字段,使用CONCAT(str1, str2, …),如果其中有NULL值最终也会变为NULL,使用ISNULL(字段,赋值) 来判断。

条件查询

SELECT 列表 FROM 表名 WHERE 条件;

  • 按条件表达式筛选(> < = !=或<> >= <=)
  • 按逻辑表达式筛选(& || ! and or not)
  • 模糊查询(like between and in isnull)

ESCAPE ‘ ‘ 指定转义字符

用IN模糊查询时不能用通配符。

条件等于NULL值时 不能用=,用专门的IS NULL。

安全等于(<=>) 可以判断NULL值。

排序查询

SELECT 列表 FROM 表名 WHERE 条件 ORDER BY 排序列表 ASC|DESC;

ORDER BY 一般是放在查询语句的最后。

常用函数

LENGTH()      求长
CONCAT()      连接字段
UPPER()		  大写化
LOWER()		  小写化
SUBSTR(str1, index1, index2)	 返回在str1 index1~index2 位置上的子字符串(索引从1开始)
INSTR(str1, str2)		  返回在str2中第一次出现str1的索引,未查到返回0
TRIM(str1, str2) 		  在str2的头和尾上去除str1,未填str1默认为空格
L(R)PAD(str1, str2,length) 用str1在str2的左(右)边填充直到length长度
REPLACE(str1, str2, str3)  将str1中的str2全部替换为str3

数学函数

ROUND(x, y)			//四舍五入,对x保留y位小数
CEIL(x)					 //向上取整
FLOOR(x)				//向下取整
RTUNCATE(x, y)	 //截断,对y + 1位后的小数进行截断
MOD(x, y)				//x对y取余

日期函数

NOW()			//返回当前系统日期+时间
CURDATE()	//返回当前系统日期
CURTIME()	//返回当前时间
YEAR(time)、MONTH(time)...		//可以获取指定时间的年、月等...(MONTHNAME可获得英文月份)
STR_TO_DATE()				//将日期格式的字符转换成指定格式的日期
例:STR_TO_DATE('1998-3-2', '%Y-%c-%D');
DATE_FORMAT				//将日期转换为字符
例:DATE_FORMAT(NOW(), '%y年%m月%d日')

其他函数

VERSION()		//版本号
DATABASE()		//查看当前库
USER()			//查看当前用户

流程控制函数

IF的使用:
IF(exp1, exp2, exp3)

例: IF(10 < 5, '大', ‘小')


CASE的使用:
1.CASE 要判断的字段或表达式
WHEN 常量1 THEN  要显示的值或语句;
WHEN 常量2 THEN  要显示的值或语句;
WHEN 常量3 THEN  要显示的值或语句;
...
ELSE 要显示的值或语句;
END

2.CASE
WHEN 条件1 THEN 要显示的值或语句;
WHEN 条件2 THEN 要显示的值或语句;
WHEN 条件3 THEN 要显示的值或语句;
...
ELSE 要显示的值或语句;
END