六千字带你快速上手操作MySQL

快速上手MySQL

mysql基础语法

### 字段操作
字段操作概念语法
新增字段对已经存在的表,插入新的字段alter table 【表名】 add 字段名 数据类型 属性
修改字段在我们需要改进某个字段时alter table 【表名】change 原版字段名,新版字段名 属性
删除字段删除无用字段alter table 【表名】 drop 字段名

主外键设置

我们使用主外键的方式来保证我们的数据完整性

​ 概念及语法见如下表格

概念语法
添加主键保证数据完整性ALTER TABLE 表名 ADD CONSTRAINT 主键名PRIMARY KEY 表名(字段名);
添加外键保证数据完整性ALTER TABLE 表名ADD CONSTRAINT 设置外键名称 FOREIGN KEY(关联字段名) REFERENCES 关联表名字(字段名);

​ 注意事项:mysql的引擎支持问题,innoDB储存类型支持外键,MYISAMD的储存类型不支持外键

​ 复合主键创建方式:

alter	table  result aDD constraint PK_RESULT primary key (studentNo,subjectNo,examDate);

DMl语句操作数据

插入数据记录

概念语法
插入单行数据插入一条需要存储在数据库的数据记录INSERT INTO 表名 (字段1,字段2)value(插入数据)
插入多行数据插入多行需要存储在数据库的数据记录INSERT INTO 表名 (字段1,字段2)value(插入数据1),(插入数据2)
将查询结果插入新表第一种将查询结果备份到新创建的数据库INSERT INTO 新表名 (字段1,字段2) select 字段1,字段2,… from 数据源表
将查询结果插入新表第二种将查询结果备份到新创建的数据库select 字段1,字段2 into 新表 from 原表
修改数据记录
概念语法
修改数据记录当我们要对某一条数据修改或者更新时我们要用到UPDATE 表名 SET 字段1= '修改内容 WHERE 条件
删除表
概念语法
删除数据方法一删除与条件相符的数据Delete from 表名 where 判断条件
删除数据方法二删除整个表的所有记录truncate table 表名

DQL查询

概念语法
查询语句方法在数据库中查询符合条件的数据SELECT 字段列表 FROM 查询表名 WHERE 条件 GROUP BY 分组字段 HAVING 条件 ORDER BY 排序字段名 ASC

LIMIT子句

LINIT子句的使用
概念语法
limit子句设置查询显示的数据条数SELECT * FROM grade LIMIT 位置偏移量;

常用函数集合

聚合函数
函数名作用
avg()返回某一字段的平均值
count()返回某个字段的函数
max()返回某字段的最大值
min()返回某字段的最小值
sum()返回某字段的总和
常勇字符串函数
函数名作用举例
concat(STR1,STR2)连接字符串str1,str2为一个完整的字符串select concat(‘my’,‘s’,‘ql’)返回:mysql
insert (str,pos,len,newstr)将str从怕pos的位置开始len个字符长度替换为newstrinsert (‘这是sql数据库’,‘3’,‘10’,‘mysql’);返回:这是mysql数据库
lower(STR)将str所有字符改为小写SQL LOWER(SQL)返回:sql
upper(str)将str所有的字符串改为大写sql upper(sql)返回:SQL
SUBSTRING(STR,NUM,LEN)返回字符串str的第num个位置开始长度为len的子字符串substring(‘javaMysqlOracle’,5,5)返回结果:Mysql
时间日期函数
作用举例
curdate()获取当前日期curdate()返回:2021-3-5
curtime()获取当前时间curtime()返回:15-39-45
now()获取当前的日期与时间返回:2021-3-5-15-39-45
week(date)返回日期date为一年中的第几周SELECT WEEK(NOW());返回9
year(date)返回日期date的年份SELECT YEAR(NOW());返回时间为2021
HOUR(TIME)返回time的小时值SELECT HOUR(CURTIME());返回为 15
minute(time)返回time的分钟值SELECT MINUTE(CURTIME()); 返回值为44
datediff(date1,date2)返回d1和d2之间的相隔天数SELECT DATEDIFF(NOW(),‘2008-8-8’);返回值:4592
adddate(date,n)计算日期参数date加上n天之后的时间SELECT ADDDATE(NOW(),5);返回值:20213-10-15-48-05
数学函数
函数名字作用举例
ceil(x)返回大于或等于数值x的最小整数SELECT CEIL(5);返回:5
floor(x)返回小于或者等于数值x的最大整数SELECT FLOOR(5);返回:5
rand()返回0~1的随机数SELECT RAND();返回0.86

in和not in 子查询

IN 子查询

​ 问题: 在mysql中档当子查询跟随在=,!=,<,<=,>,>=之后,它不允许子查询返回多条记录,如果有多条满足条件的记录返回,会出现执行代码错误。

​ 解决方法 :

把等号替换成 in关键字

in子查询的语法:

	 select 字段 from 表名
	 where 条件1 in(select 字段 from 表名 where 条件)————————>	 //在小括号中,再来一次查询,作为一个条件,来与条件1判断

NOT IN 子查询

问题:如果我们想要获得与in子查询相反的结果,

解决方案:不需要去进行过多的代码操作,只需要在代码中的 in 前加一个not 就可以获取到查询相反的结。

语法没有太大的变化

语法总结

启动与关闭

net stop MySQL;
net stop MySQL;
mysql -u root -p

创建数据库
create database 数据库名;

查看数据库列表,可查看已存在的数据库
show databases;
选择数据库
use 数据库名;

删除数据库
drop database 数据库名;
创建表
create table 表名(
字段1 数据类型 [字段属性|约束] [索引] [注释],
字段1 数据类型 [字段属性|约束] [索引] [注释]
);

查看表
show tables;

查看表定义
describe 表名;      desc 表名;

删除表
drop table [if exists] 表名;

在删除表之前,先使用IF EXISTS语句验证表是否存在
设置数据表的存储引擎
creata table 表名(

)engine=存储引擎;

修改表名
alter table<旧表名> rename [to] <新表明>;
alter table `demo01` rename `demo02`;

添加字段
alter table 表名 add 字段名 数据类型 [属性];
alter table demo02 add `password` varchar(20) not null;

修改字段
alter table 表名 change 原字段名 新字段名 数据类型 [属性];
alter table demo02 change `name` `username` char(10) not null;

删除字段
alter table 表名 drop 字段名;
alter table demo02 drop `password`;
约束

添加主键约束
alter table 表名 add constraint 主键名 primary key 表名 (字段名);
alter table student add constraint pk_studen primary key grade (gradeId);

添加外键约束
alter table 表名 add constraint 外键名 foreign key (外键字段) references 关联表名 (关联字段)
alter table student add constraint fk_student_grade foreign key(gradeId) references grade (gradeId);

插入单行数据
insert into 表名 [(字段名列表)] values (值列表);
insert into syudent(loginPwd,studentName,gradeId,phone,bornDate)
values(‘123’,‘黄小平’,1,‘13956799999’,‘1996-5-8’);

插入多行数据
insert into 新表 (字段名列表)
values(值列表1),(值列表2),……,(值列表n);
insert into subject (subjectName,classHour,gradeID)
values(‘Logic Java’,220,1),(‘HTML’,160,1),(‘Java OOP’,230,2);

将查询结果插入的新表
insert into 新表 (字段1,字段2,字段3)
select 字段1,字段2……
from 原表;

句式1需要先按照所插入字段的类型,顺序,个数创建新表,才能插入数据
create table 新表 (
select 字段1,字段2
from 原表 );

句式2: 岁插入语句的执行而创建新表,无须先创建表;
更新数据记录
update 表名 set 字段1=值1,字段2=值2,…,字段n=值n [where 条件];

删除数据记录
delate from 表名 [where条件];

删除表中所有记录
truncate table 表名;

DQL语句
select <字段名列表>
from <表名或视图>
[where <查询条件>]
[group by <分组的字段名>]
[having<条件>]
[order by <排序的字段名>[asc或deac]]
limit字句
select <字段名列表>
from <表名或视图>
[where <查询条件>]
[group by <分组的字段名>]
[order by <排序的列名>[asc或deac]]
[limit [位置偏移量,]行数]

简单子查询

SELECT … FROM 表1 WHERE 字段1 比较运算符(子查询)

select `studentNo`,`studentName`,`sex`,`bormDate`,`address`
from `student`
where `bornDate`>
(select `bornDate`from`student`where`studentName`=`李斯文`);

select 'studentName` from `student` where `studentNo` = (
swelect `studentNo` from `result`
inner join `Subject` on result.subjectNo= subject.subjectNo
where `studentResult` =60 AND `subjectName` ='Logic Java'
);

SELECT `studentName` FROM `student` 
WHERE `studentNo` IN(
    SELECT `studentNo` FROM `result` 
    WHERE `subjectNo` =  (
        SELECT `subjectNo` FROM `subject`
        WHERE `subjectName`='Logic Java'
    )AND `studentResult` = 60  
);
  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷环渊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值