MySQL---根底 A8站源码交易平台

摘要:#列名:契合MySQL命名规矩标准,一般来说MySQL起姓名运用_离隔单词 #java:userAge mysql:user_age #常见类型: #数值类型:int(整型)、float(小数)、decimal(数值型) #字符型:char(长度)、varchar(长度)、longtext(长文本) #日期型:date,time,datetime #束缚:主键束缚、外键束缚、非空束缚、仅有束缚、默许值束缚和check束缚(MySQL不支持)

###MySQL
#1.数据库相关
#2.表相关
#3.业务相关
#4.DML操作
#5.块、函数、进程、触发器、视图等高档部分



#MySQL:命名规矩和标准:字母、数组、_、和$,数字不能在首位,尽量不要运用关键字和$,不差异大小写

#1.数据库相关
#怎么创立一个数据库
CREATE DATABASE 数据库姓名;
CREATE DATABASE db1;
#怎么删去一个数据库
DROP DATABASE 数据库姓名;

#2.怎么创立一张表
CREATE TABLE 表名
(
 列名 数据类型 [束缚],
 列名 数据类型 [束缚],
 ...
 列名 数据类型 [束缚]
);
#列名:契合MySQL命名规矩标准,一般来说MySQL起姓名运用_离隔单词
#java:userAge mysql:user_age
#常见类型:
#数值类型:int(整型)、float(小数)、decimal(数值型)
#字符型:char(长度)、varchar(长度)、longtext(长文本)
#日期型:date,time,datetime
#束缚:主键束缚、外键束缚、非空束缚、仅有束缚、默许值束缚和check束缚(MySQL不支持)

CREATE TABLE stuinfo
(
stuid INT PRIMARY KEY, #[auto_increment]:自增(int)#一个表只能有一个主键,效果:标识仅有   主键不答应为空  
stuname VARCHAR(20) NOT NULL,#varchar()变长字符串 实践长度是实践放的
stusex CHAR(1) CHECK(stusex='男' OR stusex='女'),#char()定长字符串  没放满后边补空格
stuage DECIMAL(3,0),#3位有用数字,小数点后0位
stuaddress VARCHAR(30) DEFAULT'陕西省西安市',#mysql5版别 不加()   8版别DEFAULT('陕西省西安市')
stuphone VARCHAR(15) UNIQUE,#unique答应放null值,但只能放一个
stubri DATE,
studesc LONGTEXT
);

#删去表
DROP TABLE 表名;
DROP TABLE stuinfo;

#修正表
ALTER TABLE 表名 ADD 列名 类型 [束缚];#增加一列
ALTER TABLE 表名 DROP 列名;#删去一列
ALTER TABLE 表名 MODIFY 列名 类型;#修正列的数据类型
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型[束缚];#修正列
ALTER TABLE stuinfo DROP studesc;
ALTER TABLE stuinfo ADD studesc LONGTEXT ;

#DDL:create,alter,drop  数据界说言语  操作的都是结构
#DML:insert,update,delete,select  数据操作言语 操作的是数据

##DML:insert、update、delete和select
#1.怎么刺进一行数据
INSERT [INTO] 表名[(列字段)] VALUES(值列表);
INSERT INTO stuinfo(stuid,stuname,stusex,stuage,stuaddress,stuphone,stubri,studesc)
VALUES(1,'张三','男',23,'陕西省宝鸡市','110','1999-3-3','哦买噶');#日期格局有必要这样'1999-3-3'书写
#有自增:1.INSERT INTO stuinfo(stuid,stuname) VALUES(NULL,'张三'); 接着自增
#2.INSERT INTO stuinfo(stuname) VALUES('张三');
#3.INSERT INTO stuinfo(stuid,stuname) VALUES(7,'张三'); 自己输入stuid,接下来自增从7开端

##单行刺进的留意事项
#1.假如书写了列字段,列字段次序能够和物理次序不共同,那么值列表依照列字段次序赋值
INSERT INTO stuinfo(stuid,stusex,stuname,stuage,stuaddress,stuphone,stubri,studesc)
VALUES(2,'男','李四',23,'陕西省宝鸡市','111','1999-3-3','哦买噶的')
#2.假如未书写列字段,有必要依照物理次序顺次输入值列表,不能省掉内容,不然报错
INSERT INTO stuinfo
VALUES(3,'王麻子','男',24,'陕西省宝鸡市','112','1999-3-3','哦买噶啊');
#3.假如刺进数据时,值想刺进部排列内容,有必要确保未赋值列答应为NULL或许有默许值
INSERT INTO stuinfo(stuid,stusex) VALUES(3,'女');#报错
INSERT INTO stuinfo(stuid,stuname) VALUES(4,'张五');#没报错
INSERT INTO stuinfo(stuid,stuname,stuaddress) VALUES(5,'bb',DEFAULT);#没报错

#2.怎么修正表数据
UPDATE 表名 SET 列=值,列=值,...,列=值,[WHERE 条件];
UPDATE stuinfo SET stusex='男';#将一切性别改成了‘男’
UPDATE stuinfo SET stuage=19 WHERE stuid=3;#将stuid=3的这一行的stuage改成了19
UPDATE stuinfo SET stuaddress='陕西省宝鸡市',stuphone='116' WHERE stuid=5;
 
#3.怎么删去表数据
DELETE FROM 表名 [WHERE 条件];
TRUNCATE table  表名;

DELETE FROM stuinfo WHERE stuid=5;
DELETE FROM stuinfo WHERE stuid=5 OR stuid=6;
DELETE FROM stuinfo;#全表删去
TRUNCATE TABLE stuinfo;#全表删去

##truncate、delete和drop之间的差异?
#1.drop删去的是结构,而truncate和delete删去的是数据
#2.delete能够全删去,也能够部分删去;而truncate只能全删去
#3.delete删去时会写日志,所以能康复,可是删去慢;而truncate删去时不写日志,所以不能康复,删去快。

#4.查询表信息
#4.1全表查询
SELECT * FROM 表名;#查询一切行和列  *代表显现一切列,次序为物理次序
SELECT * FROM userinfo;
#4.2挑选部排列
SELECT 待显现列 FROM 表名;
SELECT username,usersex FROM userinfo;
#4.3挑选部分行
SELECT * FROM userinfo WHERE 挑选条件;
# =等号 <> !=不等号 > >= < <= and or not !
SELECT * FROM userinfo WHERE userage>28;

#4.4规模查询
SELECT * FROM userinfo WHERE userage BETWEEN 18 AND 40;
SELECT * FROM userinfo WHERE useraddress IN('北京','重庆','西安');#等同于or
SELECT * FROM userinfo WHERE useraddress NOT IN('北京','重庆','西安');
#4.5常量查询
SELECT 8;
SELECT 15,'a';
SELECT *,8 FROM userinfo;
SELECT userid,username,userage+10 FROM userinfo;#一切人年纪+10
#4.6别号查询 重命名查询
SELECT userid AS '编号',userage AS '姓名' FROM userinfo u;
#4.7含糊查询 like 、not like、%
SELECT * FROM userinfo WHERE username LIKE '%张%';#只需姓名中有张字
SELECT * FROM userinfo WHERE username LIKE '%成';#姓名中最终一个是成字
SELECT * FROM userinfo WHERE username LIKE '张%';#姓名中第一个是张字
#4.8加密查询
SELECT MD5('aaaaa');
#4.9拼接行查询  union(拼接,疏忽重复行)、union all(拼接,不疏忽重复行)
SELECT 8,'a'
UNION
SELECT 8,'a'
UNION
SELECT 9,'b';
#out:8 a
#    9 b

SELECT 8,'a'
UNION ALL
SELECT 8,'a'
UNION ALL
SELECT 9,'b';
#out:8 a
#    8 a
#    9 b
#4.10排序查询 order by,desc(降序)、asc(默许升序)
SELECT * FROM userinfo ORDER BY userage ASC;
SELECT * FROM userinfo ORDER BY userage DESC;
SELECT * FROM userinfo WHERE usersex='男' ORDER BY userage;#先where后order by 即先挑选再排序
SELECT * FROM userinfo ORDER BY userage,userid DESC;#先按userage,遇见持平按userid排序,后边紧跟其排序准则,不写默许asc
#4.11仅有查询
SELECT DISTINCT useraddress FROM userinfo;
#4.12为空查询
SELECT * FROM userinfo WHERE useraddress=NULL;#过错
SELECT * FROM userinfo WHERE useraddress IS NULL;
SELECT * FROM userinfo WHERE useraddress IS NOT NULL;
#4.13部分行查询(分页查询)
SELECT * FROM userinfo LIMIT 0,5;#limit 从第几个开端(不包括当时数据),显现多少个
page:当时页码
size:每页显现多少条
SELECT * FROM userinfo LIMIT (page-1)*size,size;
#4.14分组(聚合)函数查询
SELECT MAX(userage),MIN(userage),SUM(userage),AVG(userage),COUNT(userage),COUNT(useraddress) FROM userinfo;#count会疏忽null(空)行,sum和avg只能是数值类型
#4.15分组查询 
SELECT useraddress FROM userinfo GROUP BY useraddress;
SELECT useraddress,COUNT(*) FROM userinfo GROUP BY useraddress; 
#分组计算年纪大于38岁的每个城市的人数
SELECT userAddress,COUNT(*) FROM userinfo WHERE userage>38 GROUP BY useraddress;
#找出有哪些城市有3人以上都是38岁的
SELECT useraddress,COUNT(*) FROM userinfo WHERE userage>38 GROUP BY useraddress HAVING COUNT(userid)>3;#where分组之前挑选,having分组之后挑选  where-->group by-->having
/*
留意:
1.假如运用了分组查询,那么select和from之间只能显现分组字段和分组(聚合)函数
2.分组是在挑选之后进行的 即先where后group by
*/
#4.16表衔接查询
#1.内衔接
SELECT 待显现列字段 FROM 表A a INNER JOIN 表B b ON 衔接条件 [WHERE 挑选条件];
SELECT * FROM emp e INNER JOIN dept d ON e.deptno=d.deptno;#将两张表衔接起来

SELECT * FROM booksinfo;
SELECT * FROM authorsinfo;
SELECT * FROM bookauthor;
SELECT * FROM booksinfo b INNER JOIN bookauthor ba ON b.book_id=ba.book_id
INNER JOIN authorsinfo a ON ba.authors_id=a.author_id;
#简写
SELECT booksinfo b,bookauthor ba,authorsinfo a WHERE ba.authors_id=a.author_id AND b.book_id=ba.book_id;
#2.左外衔接  以左表为主,右表为辅的一种衔接方法,假如左表中的数据在右表中没有对应显现,会用NULL补全
SELECT 待显现列字段 FROM 表A a LEFT [OUTER] JOIN 表B b ON 衔接条件 [WHERE 挑选条件];
SELECT * FROM emp e LEFT JOIN dept d ON e.`deptno`=d.`deptno`;
#4.17子查询:一个查询的成果是另一个查询的条件,这个查询便是子查询,外边的查询便是父查询
#查询年纪比‘折为成’年纪大的人
SELECT * FROM userinfo WHERE userage>(SELECT userage FROM userinfo WHERE username='折为成');
#查询性别和‘张虎豹’相同的人
SELECT * FROM userinfo WHERE usersex=(SELECT usersex FROM userinfo WHERE username='张虎豹');
#查询地址和‘马果树’,‘杨平’相同的人
SELECT * FROM userinfo WHERE useraddress=(SELECT useraddress FROM userinfo WHERE username='马果树' OR username='杨平');#过错
SELECT * FROM userinfo WHERE useraddress IN(SELECT useraddress FROM userinfo WHERE username='马果树' OR username='杨平');
SELECT * FROM userinfo WHERE useraddress =ANY(SELECT useraddress FROM userinfo WHERE username='马果树' OR username='杨平');
/*
1.假如查询了多行内容,不能运用联系(> >=...)运算符,需求运用规模运算
2.子查询的成果不能有多列,只能回来一列
3.回来成果类型和条件类型共同
*/
#4.18 any和all
SELECT * FROM userinfo WHERE userage>ANY(18,19,28,29);#大于任何一个 即18
SELECT * FROM userinfo WHERE userage>ALL(18,19,28,29);#大于一切的 即29 
#4.19 函数查询
ABS(X) 回来x的绝对值
SELECT ABS(3),ABS(-3);
BIN(X) 回来x的二进制(OCT回来八进制,HEX回来十六进制)
SELECT BIN(4),OCT(9),HEX(4);
SELECT CEILING(5.4),CEILING(5.6),FLOOR(5.4),FLOOR(5.6),ROUND(5.4),ROUND(5.6);
GREATEST(x1,x2,x3...); 回来调集中的最大值
LEAST(x1,x2,x3...);回来调集中的最小值
SELECT GREATEST(5,6,7,8),LEAST(5,6,7,8);
SELECT MOD(6,4);#取余
SELECT RAND(),FLOOR(RAND()*100+1);#随机数

SELECT BIT_LENGTH('a啊bc的'),CHAR_LENGTH('a啊bc的'),LENGTH('a啊bc的');#位 字符 字节
SELECT CONCAT('a','b','c','d'),CONCAT_WS(',','a','b','c','d');#concat_ws以‘,’离隔
SELECT REPLACE('abcdea','a','$'),INSERT('afudsjfhd',2,3,'55555');#两种替换 下标从1开端
SELECT SUBSTR('asfsafasf',3,5);
SELECT INSTR('sfsdgsg','s');#s在字符串中第一次呈现的方位
SELECT POSITION('s'IN'sfsdfssf');#同上
SELECT SUBSTR('ahsdhfs',3,5),LEFT('fasfas',3),RIGHT('safsf',1);#截取
SELECT LOWER('AdasSF'),UPPER('asafsaSA');#全小写、全大写
SELECT LTRIM(' a  a '),RTRIM(' a a '),TRIM(' a a ');#去空格 中心空格去不了
SELECT REVERSE('abcd');#逆置字符串

SELECT NOW();#获取当时年月日
SELECT YEAR(NOW());#获取当时年 也可改为月、日
SELECT DATE_ADD(NOW(),INTERVAL 3 YEAR);#三年后  相加
SELECT DATE_ADD(NOW(),INTERVAL -3 YEAR);#三年前

SELECT CAST('029' AS SIGNED INTEGER);#转化


业务:将一个或许一组指令批量顺次执行的进程,这些指令要么一同成功,要么一同失败.
ACID:
原子性:业务是最小的履行单元,不行再被切割
共同性:要么一同成功,要么一同失利.
永久性(持久性):业务成功履行后,将保存到硬盘中
阻隔性:业务和业务之间不会受到影响

SET autocommit=0;

SELECT * FROM demo2;

INSERT INTO demo2 VALUES(333);

COMMIT;
ROLLBACK;




A8站源码交易平台


  • 全部评论(0)
最新发布的资讯信息
【A8站-免费源码分享|直播源码】直播系统源码开发:关于安卓开发工具和obs直播推流(2020-10-30 09:41)
【计算机/互联网|】【独家修复】用户定制版短视频点赞系统,支持抖音+快手+刷宝+微视等所有主流短视频评论系统源码(2020-10-26 16:34)
【技术宅-为技术而疯|网站架设教程】【独家首发】最新更新已对接短信2020全新抖音快手点赞任务系统霸屏天下小红书头条威客兼职完整搭建架设视频教程(2020-10-25 13:56)
【技术宅-为技术而疯|网站架设教程】最新可用个人发卡网系统源码完整搭建架设视频教程(2020-10-25 10:53)
【技术宅-为技术而疯|网站架设教程】独家更新全新V10抢单系统唯品会京东淘宝自动抢单区块系统源码全开源抢单收单接单返利+搭建架设完整视频教程(2020-10-25 10:52)
【计算机/互联网|】柔丫纸尿裤云仓系统源码部署(2020-10-15 18:13)
【计算机/互联网|】侏罗纪软件模式定制开发(2020-10-14 15:33)
【计算机/互联网|】S2b2C供应商系统 营销闭环(2020-10-10 17:46)
【计算机/互联网|程序设计开发】盛都汇系统奖励机制(2020-10-10 17:20)
【A8站-免费源码分享|网站源码】积分商城系统APP开发(2020-09-23 14:56)
联系我们
Q Q:3101359898 点击直接对话
电话:18580901894
邮箱:admin#a8zhan.com
时间:09:00 - 24:00
手机二维码 访问手机版
返回顶部