附上mysql的几条基本语句

:insert into 表名(列名1,列名2)/不加列名默认全部列/values(值1,值2),(值3,值4);
同理可得值5,值6

:delete from 表名1 where 筛选条件
删多表:delete 表名① from 表名1 连接条件(inner/left/right) join 表2 on 连接条件 where 筛选条件; ①位置可以写表2
删全部 truncate table 表名1 delete from 表名1 # delete是一行一行删的.

:update 表名 1 set 列1=值1,列2=值2 where 筛选条件
改多表:update 表名1 连接条件(inner/left/right) join 表2 on 连接条件 (此时已经合成一张大表)set 表名.列名=值1 where 筛选条件;

:select 列名1 from 表名 where 筛选条件

其中自有万般变化,但万变不离其中,忘诸君共勉!

最后再给个全的式子
select ① from ② (③join on)where ④ group by ⑤ having ⑥ order by ⑦ limit ⑧
具体的分析呢,等我在学一点吧。
①写列名
②写表名
③写连接
④写筛选条件
⑤写分组条件
⑥写不存在的筛选条件(就是当前表中没有的值,比如max,min,sum,之类)
⑦ ASC正序,DESC倒序
⑧分页查询,写int型的x,y从x开始的,后面y条记录,或者写x,从0开始的x条记录。
目前就学到这里。
⑨完全题外话 union的联合查询

库的增删改查

:create database 【if not exists】库名;
:drop database 【if exists】 库名;
:一般不改 改了可能要等死 :
重命名:rename database 老库名 to 新库名;
字符集:alter database 库名 character set utf-8;#utf-8位置是字符集
:show databases;

用户的增删改查


create user ‘用户名’@‘ip地址’ 【identified by ‘密码’】;
insert into mysql.user(Host,User,Password) values(“localhost”,“test”,password(“1234”));
:
drop user 用户名@ip地址;
delete from mysql.user where host=‘ip地址’ and user=‘用户名’
:
给权限:grant update【权限(列名而已)】 on 数据库.表【.】 to ‘用户名’@‘ip地址’;
收权限:revoke update 【权限(列名而已)】 on 数据库.表【.】 from ‘用户名’@‘ip地址’;
改密码:update user set password=PASSWORD(‘新密码’) where host=‘ip地址’ and user=‘用户名’;
:select * from user;
刷新:flush privileges

表的增删改查

增:

create table 【if not exists】表名(
列名 列的类型【(长度)  约束】,
列名 列的类型【(长度)  约束】,
列名 列的类型【(长度)  约束】
)

:drop table 表名;
:
①重命名列名:alter table 表名 change column 旧列名 新列名;
②重命名表名:alter table 旧表名 rename to 新表名;
③添加列: alter table 表名 add column 要添加的列名 列名类型名;
④删除列:alter table 表名 drop column 列名;
⑤修改列的类型或约束:alter table 表名 modify column 列名 列名类型名;
:SHOW TABLES

-------------------------------------------------------------

复制:

create table 表名1 like 表名2;#表名1复制表名2的结构
create table 表名1 select 列名 from 表名2  #复制部分列
create table 表名1 select * from 表名2;#表名1复制表名2 (完全复制记录)
create table 表名1 select * from 表名2 where 筛选条件 #(复制部分记录)
create table 表名1 select 列名 from 表名2 where 筛选条件 #复制部分列和部分记录**

-------------------------------------------------------------

数据类型

数值
整型:Tinyint【1】,Smallint【2】,Mediumint【3】,Int、Integer【4】,Bigint【8】;【】数字是为所占内存大小 ,有符号修饰符 unsigned可放数据类型的长度后面。
/========
定点数:dec(M,D)#M为总长度,D为小数点后位数,即是上限,默认dec(10,0);
浮点数:float【(M,D)|4】,double【(M,D)|8】
定点数的精度>浮点数
字符型:
较短字符:
char(0到255【可省默认为1】)【固定类型长度,效率最高】
varchar(0到65535【不可省】)【最大长度,最省空间】
较长字符:text,blob(较长二进制数)
日期型:Date【4】:年-月-日
DateTime【8】:(1000-9999) 年-月-日 时-分-秒
Timestamp【4】:(1970-2038) 时间戳(随着时区的变化而变化)
Time【3】:时-分-秒
Year【1】:年(1901——2155)
show variables like’time_zone’; #这是一个看sql版本是神奇命令

枚举类型: ENUM(‘值1’,‘值2’,‘值3’) 只能插入值123中的一个
集合类型:SET(‘值1’,‘值2’,‘值3’) 只能插入值123中的一个或多个。

常用连接方式自我理解

内连就是两表相乘,A表4条记录,B表5条记录,就是4*5共20条记录,每条A的记录,对应B的5条记录,这时不加筛选条件,就可以组成一张虚拟的新表。
左连就是以左边为基准,A表joinB表on某个条件,A表的4条记录会全部都在上面,而B表部分,会出现null情况,
右连同理,B表的5条记录会全在上面,A表部分会出现null情况。
内连是最好理解的,这里不做过多阐述,左连右连,可以理解为,先经过on的筛选,再进行连接。

查询详解

存储过程


delimiter KaTeX parse error: Expected 'EOF', got '#' at position 65: …理,随缘上限,用逗号连接】) #̲通过 into 参数名 给ou…
:drop procedure 存储过程名字1;
:改不了,删了再建吧;
:call 存储过程名字1(参数要给对,out的给@变量);
然后select @变量;
show procedure status where db=‘数据库名’;
存储过程的个人理解:把许多mysql语句整合起来调用。

函数

事务

begin;#第一步开启事务
随便写上几句sql语句;#第二步写sql语句
savepoint 回滚点名1;#看心情给回滚点
commit;或rollback;或rollback to 回滚点名1; #事务还是较好理解的了

流程控制

视图

变量

以上待续
2019年11月26日11点09分,第三次修改

学习大可如公式一般套用。