温故而知新——MYSQL基本操作
相关连接:
mysql和sqlserver的区别:https://www.cnblogs.com/vic-tory/p/12760197.html
sqlserver基本操作:https://www.cnblogs.com/vic-tory/p/12760871.html
一.创建数据库
CREATE DATABASE IF NOT EXISTS student; DROP DATABASE `student`;
二.表
CREATE TABLE IF NOT EXISTS `user`(
userId int PRIMARY KEY AUTO_INCREMENT,
userName varchar(20) NOT NULL,
userSex char(1) CHECK(userSex='男' OR userSex='女'), #MYSQL不支持检查约束
createTime timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
userPhone varchar(20) UNIQUE
); CREATE TABLE company (`companyId` int PRIMARY KEY AUTO_INCREMENT,`companyName` varchar(20) NOT NULL); ALTER TABLE `user` ADD `userAge` int COMMENT '用户年龄'; #添加字段 ALTER TABLE `user` MODIFY COLUMN `userAge` int NOT NULL COMMENT '用户年龄'; #修改字段 ALTER TABLE `user` DROP COLUMN `userAge`; #删除字段 ALTER TABLE `user` ADD CONSTRAINT FK_userId_companyId FOREIGN KEY (`companyId`) REFERENCES `company`(`companyId`); DESC `user`; DROP TABLE `user`;
三.添加
INSERT INTO `user` SET `userName`='Robin',`userSex`='男', `userPhone`='123456789',`userAge`=18;
INSERT INTO `user`(`userName`,`userSex`,`userPhone`,`userAge`,`createTime`) VALUES ('Robin','男','123456','18','2019-04-06');
INSERT INTO `user` SELECT * FROM `#user`;#一般用于表的数据添加到主表
四.查询
SELECT MAX(`createTime`),MIN(`createTime`),COUNT(*) AS count,AVG(`userAge`),SUM(`userAge`),userId,userName
FROM `user`
WHERE `userSex` ='男'
GROUP BY `userSex`,`userId`,`userName`
HAVING MIN(`createTime`)>'2019-04-05'
ORDER BY `userId` DESC /*ASC*/ ; SELECT * FROM `user` WHERE `userId` IN /*NOT IN*/(SELECT `userId` FROM `user`); SELECT * FROM `user` LIMIT 0,1; SELECT * FROM `user` WHERE EXISTS /*NOT EXISTS*/(SELECT * FROM `user` WHERE `userId`='3'); #EXISTS 返回TRUE 或者FALSE SELECT * FROM `user` u LEFT JOIN /*INNER JOIN,LEFT OUTER JOIN,RIGHT OUTER JOIN,RIGHT JOIN ,CROSS JOIN*/ `company` c ON u.companyId=c.companyId ; SELECT * FROM `user` UNION /*UNION ALL*/ SELECT * FROM `user`; SELECT DISTINCT `userName`,`userSex` FROM `user`;
五.更新
UPDATE `user` SET `userAge`=20 WHERE `userId` =1; UPDATE `user` u JOIN `company` c ON u.companyId=c.companyId
SET c.companyName='BCD',u.userName='RoBin'
WHERE u.userId='1'
六.删除
DELETE FROM `user` WHERE `userId`='1'; TRUNCATE `user`;
七.视图
CREATE VIEW v_user_company AS
SELECT userId,c.companyId FROM `user` AS u JOIN `company` AS c
ON u.companyId=c.companyId
WHERE u.userId=1; SELECT * FROM v_user_company; ALTER VIEW v_user_company AS SELECT * FROM `user`; DROP TABLE IF EXISTS v_user_company;
八.存储过程
CREATE PROCEDURE sp_user_company(
IN inPara int,
OUT outPara int,
INOUT inOutPara int
)
BEGIN
DECLARE count int ;
SELECT COUNT(*) INTO count FROM `user`;
SET outPara=count;
SET inOutPara=count;
END; #SET @outPara=0; #可省略
#SET @inOutPara=0;
CALL sp_user_company(1,@outPara,@inOutPara);
SELECT @inOutPara;
SELECT @outPara; #MYSQL 不提供存储过程中的代码修改 DROP PROCEDURE `sp_user_company`;
九.事务
SHOW GLOBAL VARIABLES LIKE 'autocommit'; SET GLOBAL AUTOCOMMIT=0; SET GLOBAL AUTOCOMMIT=1; START TRANSACTION; ROLLBACK; COMMIT;
十.自定义函数
CREATE FUNCTION fn_user_company() RETURNS int
BEGIN
DECLARE count int ;
SELECT COUNT(*) INTO count FROM `user`;
RETURN count;
END; SELECT fn_user_company(); CREATE FUNCTION fn_user_company1(count int) RETURNS int
BEGIN
RETURN count;
END; SELECT fn_user_company1(1); SHOW CREATE FUNCTION `fn_user_company`; #函数不能内部的内容 DROP FUNCTION `fn_user_company`;
十一.游标
CREATE PROCEDURE `sp_logic`()
BEGIN
DECLARE stuId int;
DECLARE stuName varchar(20) CHARACTER SET UTF8;
DECLARE done int DEFAULT 0;
DECLARE myCursor CURSOR FOR SELECT * FROM `user`;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
OPEN myCursor;
SET total=0;
c:LOOP
FETCH myCursor INTO stuId,stuName;
IF done=1 THEN
LEAVE c;
END IF ;
SET total =total+1;
END LOOP;
CLOSE myCursor;
SELECT total;
END;
十二.常用函数
数值型函数

字符串函数

日期和时间函数

聚合函数和流程控制函数

温故而知新——MYSQL基本操作的更多相关文章
- mysql 基本操作语句
mysql 基本操作笔记: 创建表demo:CREATE TABLE `role` ( `role_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMME ...
- css属性编写顺序+mysql基本操作+html细节(个人笔记)
css属性编写顺序: 影响文档流的属性(比如:display, position, float, clear, visibility, table-layout等) 自身盒模型的属性(比如:width ...
- 【mysql】mysql基本操作
mysql基本操作 1.mysql表复制 mysql 表结构的复制 create table t2 like t2 mysql 表数据的复制 insert into t2 select * from ...
- 数据库相关 Mysql基本操作
数据库相关 设计三范式: 第一范式: 主要强调原子性 即表的每一列(字段)包含的内容,不能再拆分.如果,某张表的列,还可以细分,则违背了数据库设计的第一范式. 第二范式: 主要强调主键,即:数据库中的 ...
- 温故而知新-mysql高级管理
温故而知新-mysql高级管理 1 mysql的一些授权信息都保存在授权表中 授权表是6个 db,user,host,tables_priv,columns_priv,procs_priv 这6个表 ...
- Mysql基本操作、C++Mysql简单应用、PythonMysql简单应用
MySql基本操作 -- 当指定名称的数据库不存在时创建它并且指定使用的字符集和排序方式 CREATE DATABASE IF NOT EXISTS db_name CHARACTER SET UTF ...
- MySQL必知必会笔记-Mysql基本操作
Mysql基本操作 mysql的基本操作包括增.删.改.查,本书中前三章简单的介绍MySQL为何物,查是mysql中非常重要的功能,4-6章展示了mysql的查(查询--select)的简单实现,my ...
- day02 MySQL基本操作
day02 MySQL基本操作 昨日内容回顾 数据库演变史 1.纯文件阶段 2.目录规范 3.单机游戏 4.联网游戏 # 数据库就是一款帮助我们管理数据的程序 软件开发架构及数据库本质 cs架构与bs ...
- MYSQL基本操作(上)
很久之前,就想做个Mysql的小结,毕竟数据库知识是软件研发的基本技能,这里话不多说,开始总结一波. 数据库基本概念 数据库为高效的存储和处理数据的介质(主要分为磁盘和内存两种),一般关系型数据库存储 ...
- MySQL(二) MySQL基本操作
数据库的基本操作 启动关闭 MySQL 服务 MySQL 安装好后,默认是当 Windows 启动.停止时,MySQL 也自动.停止.不过,用户可以使用 Windows 下的服务管理器或从命令行使用 ...
随机推荐
- JNI编程之java层和native层的数组数据的交互
一.前言 JNI中的数组类型分为基本类型数组和引用类型数组,他们的处理方式是不一样的.基本类型数组中的元素都是jni基本数据类型,可以直接访问:但是引用类型的数组中的元素是一个类的实例,不能直接访问, ...
- 2D物理引擎 Box2D for javascript Games 第六章 关节和马达
2D物理引擎 Box2D for javascript Games 第六章 关节和马达 关节和马达 到现在你所见到的所有类型的刚体有着一些共同点:它们都是自由的并且在除碰撞的请款之外,彼此没有依赖. ...
- video.js 视频
http://www.cnblogs.com/lechenging/p/3858181.html
- fastjson反序列化Map对象为null?其实它只是一个地址,试试Map深拷贝
今天遇到一个小问题,我用fastjson,把一个map对象转为实体类对象返回给前端的时候,map对象里面的一个属性既然为null. 由于前端需求,我们需要返回一个json里面,有两个属性是一样的(都是 ...
- 一篇文章玩透awk
安装新版本gawk awk有很多种版本,例如nawk.gawk.gawk是GNU awk,它的功能很丰富. 本教程采用的是gawk 4.2.0版本,4.2.0版本的gawk是一个比较大的改版,新支持的 ...
- OpenCL任务调度基础介绍
当前,科学计算需求急剧增加,基于CPU-GPU异构系统的异构计算在科学计算领域得到了广泛应用,OpenCL由于其跨平台特性在异构计算领域渐为流行,其调度困难的问题也随之暴露,传统的OpenCL任务调度 ...
- excel柱状图自定x轴y轴
在Excel中,柱状图是一种常用的数据可视化方式,可以直观地展示不同数据之间的比较关系.默认情况下,Excel会根据数据自动生成X轴和Y轴的刻度和标签.然而,如果你想要自定义X轴和Y轴,在柱状图中显示 ...
- Java八股面试题整理(1)
1.为什么Java代码可以实现一次编写,到处运行? 参考答案 JVM(Java虚拟机)是Java跨平台的关键. 在程序运行前,Java源代码(.java)需要经过编译器编译成字节码(.class).在 ...
- Prometheus+Grafana 监控平台实践-搭建&常用服务监控&告警
前言 Prometheus 是一个开放性的监控解决方案,通过各种 Exporter 采集当前主机/服务的数据,和 Grafana 相结合可以实现强大的监控和可视化功能 本篇将分享使用 docker c ...
- 搭建一个简易的IPv6网络测试环境
背景 近期一个项目要求产品在IPv6网络环境部署,在此之前所有的项目网络环境都是IPv4,为了验证产品网络适配能力,需要搭建一套IPv6的网络测试环境,网上搜了很多教程,也在某东找了很多路由器,对于如 ...