mySQL—笔记

该博客是数据库学习笔记,涵盖常见数据库类型、存储引擎等基础概念,详细介绍了SQL的功能,包括数据定义、操作、查询和控制语言,还涉及表关系、多表查询、常用函数、事务、权限操作、视图、存储过程和索引等进阶内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔记—数据库

day 1

  • cmd进入mysql命令: mysql -u root -p

DBMS :数据库管理系统

常见的数据库:

  • Orale:大型企业
  • DB2:中大型
  • MySQL:开源,体积小,适合中小型企业
  • SQL Server:全面,效率高,中小型企业

事务:逻辑单元操作,要么不执行要么就执行

存储引擎:

  • myisam:访问很快,不支持外键,不支持事务

  • innoodb:提供提交,回滚和崩溃的事务安全,访问会慢

  • memory:访问非常快,数据存放在内存,默认使用HASH索引。

sql:就是数据库语言,结构化语言

数据类型:

  • char(n): 固定长度
  • varchar : 不固定长度
  • int(m): 范围()
  • float(m,d) : 单精度 小数点长度4字节 m:个数 d:小数
  • double(m,d): 双精度 ,小数点长度8字节
  • datatime :时间日期类型

mySQl逻辑结构:

select》》》

连接层:提供客户端连接的服务

服务层:提供用户使用的接口

​ 提供sql优化器

引擎层:提供数据存储的方式

存储层:数据存储

SQL功能:

  1. 数据定义语言DDL,对结构操

创建数据库 CREATE DATABASE 数据库名

删除数据库 DROP DATABASE 数据库名

创建表

CREATE TABLE 表名(

​                列名1   类型   [约束],

​                列名2   类型   [约束],

)engine = innobD  default  charset=utf8;

default   设置默认值

添加列: ALTER TABLE 表名 add 数据类型

查看信息: sesc 表名;

修改数据类型: ALTER TABLE 表名 modify 数据类型

删除列: ALTER TABLE 表名 drop 列名 数据类型

修改表名: RENAME TABLE 原始表名 TO 新表名;

查看表: show ALTER TABLE 表名;

修改表的字符集为gbk: ALTER CREATE 表名 CHARACTER SET INT;

修改表的列名: ALTER TABLE student CHANGE 类名 新类名 数据类型

删除表: drop table 表名

数据操作语言 DML

查询表中数据 select*from 表名

插入 insert into 表名(列名1,列名2)VALUE(列值1,列值2),(列值1,列值2;

更新 update 表名 set 列名1=列值1,列名2=列值2.。。。

​ where 列名=值

删除 delete from 表名【where 列名=值】 删除后数据可以找回

​ truncate 删除后数据不可以找回

数据查询语言(重点)DQL

select*from 表名;

正在表达式: like ‘_李’;任一个字符

​ like ‘%李’;任n个字符

  • 条件查询:where子句中使用运算符

  • 模糊查询:like后跟通配符

  • 字段控制查询

  • 排序:order by

​ ASC:升序

​ DESC:降序

  • 聚合函数

​ count():统计指定列不为NULL的记录行数

​ SUM和AVG:求和和平均值

​ MAX和MIN:最大值和最小值

数据控制语言DCL

用户,权限,事务

day 2

分组查询:将查询结果按照一个或多个进行分组,字段值相同为一组

SELECT gender from employee GROUP BY gender;

group by:

limit:

数据的完整性:

实体完整性:

​ 一行一个实体,标识数据不重复,

​ 主键约束:primary key(主键1)

​ 唯一约束:

自动增长约束:

域完整性:

​ 非空约束:not null

​ 默认约束: default null

参照完整性:

​ 外键约束:

主键:**

添加主键 ALTER TABLE emp ADD PRIMARY KEY(dept_number);

添加多个主键 alter table tableName addunique(column_name);

查看主键 show keys from tableName;

外键:

表外创建外键

ALTER TABLE dept ADD CONSTRAINT fk_ID FOREIGN KEY(dept_number) REFERENCES emp(dept_number);

表内创建外键

CREATE TABLE score1(
    score DOUBLE,
    sid INT,
    CONSTRAINT fk_ID FOREIGN KEY(dept_number) REFERENCES emp(dept_number

);


day 3

SQL进阶2

一、表之间的关系:

一对一:

一对多:

多对多:创建两个表,用外键和主键进行连接

二、多表查询:

合并结果集:

​ UNION:合并去重复记录

​ UNION all : 合并不去重复记录

笛卡尔集:把两个集合合并,每个数据进行合并

​ A(a,b) B(1,2,3,4)

​ (a,1)(a,2)(a,3)(a,4)(b,1)(b,2)(b,3)(b,4)

等值连接:select * from stu st >>>stu 是表 ,st是别名

​ inner join ste ct

​ where 。。。

​ and 。。。

99连接法:

select 查询列表

from 表1 别名,表1 别名

[where 筛选条件 ADD 筛选条件]

 

内联查询(inner join):

select 查询列表

from 表1 别名

inner jion 表2 别名 on 连接条件

inner jion 表3 别名 on 连接条件



select * from T1 inner join T2 on T1.userid = T2.userid

非等值连接:

左联(left outer join):左边查出全部,右边查出满足的

select * from T1 left outer join T2 on T1.userid = T2.userid

右联(right outer join):右边查出全部,左边查出满足的

select * from T1 right outer join T2 on T1.userid = T2.userid

全联(full outer join):显示左表、右表两边中的所有行,过滤掉重复的

select * from T1 full outer join T2 on T1.userid = T2.userid

DAY 4

SQL进阶3

一、常用函数

函数分类:
1.字符串函数:
  • left(str,n),right(str,n):左右查询
  • lower(str),upper(str):大小写
  • concat(a,b,c):连接字符串
  • insert(str,x,y,instr):在x位起始替换y个字符为instr
  • Lpad(str,n,pad),Rpad(str,n,pad):左右填充

​ SELECT LPAD(‘xingdao’,10,23)>>>232xingdao

  • timer():左右去空格 Llimer()左去空格,Rlimer右去空格
  • replace(str,a,b):用a去替换str中的b
  • repeat(str,x):返回str重复x次
  • substring(str,x,y):返回x位y个长度的字符串
二、数值函数
  • abs(str):取绝对值
  • ceil(),floor():向上取整,向下取整
  • mod(x,y):去摸
  • rand(x):返回0或1的随机数
三、日期和时间函数
  • curdata():返回当前日期=年月日
  • curtime():返回当前时间=分秒时
  • now():返回当前日期和时间
  • unix_timestamp:返回当前日期的时间戳
SELECT UNIX_TIMESTAMP("2016-07-11");
  • from_unixtime(unixtime):将时间戳变成时间
  • week(date):返回第几周
  • year(date):返回那一年
  • hour(time):返回当前小时
  • minute(time):返回当前分钟
  • date_format(date,fmt):把字符串格式化日期值
  • date_add(date,interval expr type):计算日期间隔
  • datediff(date1,date2)计算两个日期相差的天数

SELECT NOW();>>>now() 2019-05-05 11:24:58

四、流程函数
  • IF():
  • ifnull():
  • case when then end:
五、事务

就是一种操作

  1. 开启事务 START TRANSACTION
  2. 提交事务 COMMIT(可不执行,默认提交)
  3. 回滚事务 rollback
START TRANSACTION;
UPDATE sc SET Cno=Cno+2;
rollback;
COMMIT;
SELECT * FROM sc;
执行事务到另一处显示
六、权限操作
七、视图

一个虚拟表

创建视图

USE school;
CREATE VIEW T 
AS (SELECT*FROM student WHERE Sage>30);
八、存储过程

参数:

  • in :
  • out :
  • inout :

语句:

  • If语句
  • Case语句
  • 循环
DELIMITER $$
CREATE PROCEDURE ysc (IN NAME VARCHAR(50))
BEGIN
SELECT*FROM sc WHERE Sno=NAME;
END$$
DELIMITER ;
CALL ysc('01');
九、索引
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值