mysql的基础查阅

本文全面介绍MySQL数据库的使用,包括命令行连接、数据库语言、触发器、存储过程、事务处理、索引、视图和SQL语法等核心概念。详细讲解了事务的四大特性(原子性、一致性、隔离性、持久性),以及如何处理数据库故障和恢复。此外,还探讨了数据库设计的三大范式,以及当数据库自增ID用完时的处理策略。
摘要由CSDN通过智能技术生成

命令行连接

连接数据库:mysql -uroot -p密码;
修改用户密码:update mysql.user set authentication_string=password(‘密码’) where user=‘root’ and Host = ‘localhost’;
刷新权限:flush privileges;
查看所有的数据库:show databases;
使用数据库:use 数据库名
查看数据库中所有的表:show tables;
查看表中的信息:describe 表名;
创建数据库:create database 数据库名;
退出连接:exit;

数据库语言

DDL 定义
DML 操作
DQL 查询
DCL 控制

外键
创建表成功后,有外键约束

ALTER TABLE 表 ADD CONSTRAINT 约束名 FOREIGN KEY('作为外键的列') REFERENCES '另一张表名'(‘某个字段’)

举例:ALTER TABLE 'student' ADD CONSTRAINT 'FK_gradeid'  FOREIGN KEY('gradeid') REFERENCES 'grade' (‘gradeid’);

外键很少使用:
删除外键关系的表的时候,必须要先删除引用别人的表(从表)(student),再删除被引用的表(主表)(grade)
DML 操作
insert

insert into 表名([字段名1,字段名2.。。])values ('值1','值2',。。。);

由于主键自增 我们可以忽略;
一个字段对应一个值
插入多个字段:
如:insert into ‘grade’ (‘gradename’,‘age’) values(‘大一’,23),(‘大二’,21);
update
updat 表名 set ‘某个字段名’=值 where 天剑
如果不指定条件的情况下,会改动所有表
如:update 表名 set ‘某个字段名’ = 值;
修改多个属性:

如:`update 表名 set colnum_name = value,colnum_name1 = value1,.....where 条件`

条件:where子句 ,操作符会返回布尔值
操作符==,>=,between … and…,AND,OR等等
delete
delete from 表名 where 条件
清空表用truncate命令
truncate 表名,保留表的结构和索引约束不会变和delete 唯一不同就是truncate可以重新设置自增列,计数器会归0;
delete删除的问题(了解)
重启数据库,现象
InnoDB 自增列会重1开始(存在内存当中,断电即失)
MyISAM 继续从上一个自增量开始(存在文件中,不会丢失)
DQL 查询(重要)
所有的查询操作都用它 select
简单查询和复杂查询
指定查询字段:
select * from 表名
select ‘字段名’,‘字段名’ from 表名

可以给字段起个别名,也可以给表起个别名
select '字段名' as 别名,'字段名' as 别名。。。 from 表名 as 别名;

函数Concat(a,b)
select Concat(‘姓名:’,字段名) as 别名 from 表名

SELECT CONCAT("新姓名:",name) as '自己设置新名字' FROM s_student

去重
作用:去除查询出来的结果中重复的数据,只显示一条
selcect distinct ‘字段名’ from 表名
查询系统版本
SELECT VERSION()
用来计算(表达式)
SELECT 100*9 AS 计算结果
查询自增的步长(变量)
SELECT @@auto_increment_increment
模糊查询

SELECT * FROM account where mobile LIKE ‘136%’
SELECT * FROM account where realName LIKE ‘张__’
SELECT * from account where realName LIKE ‘%五%’

-- 查询id 为 2 3 5人物的信息
SELECT * FROM account WHERE id in (2,3,5);

in (具体的一个或多个值)

-- 查询南京 北京人物的信息
SELECT * from account where address in ('南京','上海 浦东');
-- 查询remark不为空的学生信息
SELECT s_score.score,s_score.course_id FROM s_score where s_score.remark !='' AND s_score.remark IS Not NULL;

-- 查询remark为空的学生信息
SELECT s_score.score,s_score.course_id FROM s_score where s_score.remark ='' OR s_score.remark IS NULL;(null查不出来)

如果要单纯查NULL值列,则使用 is NULL去查,单纯去查空值(’’)列,则使用 =’’。

建议查询方式:NULL值查询使用is null/is not null查询,而空值(’’)可以使用=或者!=、<、>等算术运算符。**
联表查询
分析:
要查询的字表段来自哪些 (连接查询)
确定用哪种连接查询(7种)
确定交叉点(两个表中哪个数据是相同的)
条件:某张表.stuId = 另张表.stuId
inner join 如果表中至少有一个匹配,就返回性
left join 会从左表中返回所有的值,即使右表中没有匹配
right join 会从右表中返回所有的值,即使左表中没有匹配

-- 查询学生的爱好(学生姓名、爱好)
-- SELECT t_student.`name`,t_hobby.hobbyname FROM t_hobby,t_student WHERE t_student.id=t_hobby.id
SELECT t_student.`name`,t_hobby.hobbyname
FROM t_student
INNER JOIN t_hobby
ON t_student.id = t_hobby.id

自连接
把一张表看成是两张一模一样的表
select完整语法
顺序不要搞乱
select [选项 all | distinct]
字段表达式
from 数据源
left|right|inner join 数据源2(联合查询)
where 字段表达式(指定结果满足的条件)
group by 子句(指定结果按照哪个字段来分组)
having 子句(过滤分组的记录必须满足的次要条件)
order by 子句(指定查询记录按一个或多个条件排序)
limit 子句(指定查询的记录从哪条到哪条)
排序
order by 排序字段 desc 降序
order by 排序字符 asc 升序
分页
数据库分页是有公式的
每页显示5条数据 pageSize = 5;
第一页 limite 0,5 (1-1)*5
第二页 limite 5,5 (2-1)*5
第三页 limite 10,5 (3-1)*5
第n页 limite (n-1)*pageSize,5
pageSize:页面大小
(n-1)*pageSize:起始值
n:当前页
数据总记录数/页面大小 = 总页数
子查询
where语句中嵌套一个子查询语句
嵌套查询
函数

SELECT MOD(10,3);#1 返回10除以3的余数
select SQRT(100);#10 返回10的平方根
select ABS(-10);#10 返回-10的绝对值
SELECT PI();#3.141583返回圆周率

SELECT CEIL(1.5);#2 返回大于或等于1.5的最小整数
SELECT CEIL(-1.56);#-1

select CEILING(1.5);#2 返回大于或等于1.5的最小整数
SELECT CEILING(-1.5);#-1
SELECT FLOOR(1.5);#1 返回小于或等于1.5的最大整数
SELECT FLOOR(-1.5);#-2

SELECT RAND();#返回一个0,1之间的随机数
SELECT RAND(100);#返回一个0~x之间的随机数

SELECT ROUND(10.82);#11 四舍五入
SELECT ROUND(10.32);#10
SELECT ROUND(10.82,1);#10.8
SELECT ROUND(10.325,2);#10.333 四舍五入 保留指定后面的小数位

SELECT `TRUNCATE`(10.352,2);#10.333 四舍五入 保留指定后面的小数位
SELECT sign(12),sign(234);#返回参数的符号

select pow(12,3);#乘方
SELECT POWER(2,3);#乘方
SELECT EXP(2);#7.38905609893065 计算e的乘方

SELECT log(2);
SELECT LOG10(100);#以10为底的对数

SELECT RADIANS(360);#将角度转换为弧度
SELECT DEGREES(6.28);#将弧度转换为角度

SELECT sin(1);#计算正弦值
SELECT ASIN(3);#计算反正弦值
SELECT COS(10);#计算余弦值
SELECT ACOS(3);#计算反余弦值

SELECT TAN(12);#计算正切值
SELECT ATAN(12);#计算反正切值
SELECT cot(12);#计算余切值

MySQL:字符串函数:

SELECT ASCII('A');#65 返回字符串'A'的ASCII码
SELECT CHAR_LENGTH("laoshuaidami");#12 返回字符串s的字符数
SELECT CHARACTER_LENGTH("laoshuaidami");#12 返回字符串s的字符数
SELECT CONCAT("sql","java","php");#sqljavaphp 字符串的合并
SELECT FIELD("d","d","d","3");#1
SELECT FIELD("c","2",",","c","d");#3返回第一个字符串s在字符串列表中的位置

SELECT FIND_IN_SET("c","i,love,c");#3 返回在字符串s2中与s1匹配的字符串的位置

SELE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值