【MySQL基础内容】

MySQL关键字总结:

localhost本地主机
user用户
password密码
data数据
database数据库
table
column
row
port端口
quit退出
exit退出
charset字符集
collate排序规则
collation排序规则

表二                                                                                                           

create创建(数据库、表等)
show查看(数据库、表等)
drop删除(数据库、表等)
alter修改(数据库、表等)
insert插入(数据、记录)
delete删除(数据、记录)
update修改(数据、记录)
set设置
query查询
year
field字段
delimiter分隔符
exists存在
int整数类型
tinyint微整数类型
smallint小整数类型
mediumint中整数类型
bigint大整数类型
unsigned无符号的
zerofill填充0
float单精度浮点类型
double双精度浮点类型
decimal定点小数类型
numeric数字
fixed固定类型
char定长字符类型
varchar可变长字符类型
binary二进制类型
enum单选类型/枚举类型 
set多选类型(数据类型的一种)
bit比特类型

表三                                                                                                   

primary key主键
unique key唯一键
auto_increment自增长
default默认值
comment说明
index索引
key
foreign key外键
fulltext key全文索引
constraint约束
engine存储引擎
show显示
describe描述
rename重命名
load加载
identify标识
null
not null非空
datetime日期时间
date日期
time时间
timestamp时间戳
text长文本类型
blob二进制形式的长文本类型
values

表四

select选择;查询;检索
from从…
order顺序
distinct区分的
where哪里
group
as作为
in在…里面
like像…一样
limit限制
count计数
avg平均
max最大
min最小
sum总和
asc升序的
desc降序的
join连接
inner内部的
cross交叉的
left左边
right右边
outer外面的
in在…里面
any任意一个
all全部
some其中一部分
union联合的
replace替换

表五                                                                                       

start开始
transaction事务
autocommit自动提交
begin开始
end结束
commit提交
rollback回滚
case在…情形
loop循环
while当…的时候
repeat重复
leave离开
declare声明
call调用
procedure存储过程
trigger触发器
before
after
for each row行级
grant授予
revoke撤销
privilege权限
view视图
truncate截取
usage惯例
identified by 登录密码
option选项
with具有

MySQL常用命令:

显示帮助信息 ?或\?或help或\h 
清除当前输入语句 \cclear
连接到服务器,可选参数数据库和主机connect或\r
设置语句分隔符 delimiter或\d
退出MySQLexit或quit或\q 
从服务器获取MySQL的状态信息 status或\s 
选择一个数据库使用,参数为数据库名称use或\u 
修改用户登录密码

见表五

查看当前MySQL中 有哪些数据库show databases;
查看当前MySQL支持的所有字符集

show char set;

show character set;

启动MySQL服务net start MySQL 
停止MySQL服务

net stop MySQL

登录MySQL数据库mysql -h主机名 -u用户名 -p密码
登录本机MySQL数据库mysql -u用户名 -p密码

表二                                                                                              

创建数据库                                            

CREATE DATABASE 库名;

CREATE DATABASE IF NOT  EXISTS 库名; #加判断

CREATE DATABASE 库名 CHAR SET 字符集名;#加选项

查看警告信息SHOW WARNINGS;
查看MySQL服务器下所有数据库SHOW DATABASES;
查看指定数据库的创建信息SHOW CREATE DATABASE 库名;
选择或切换或使用数据库(指定当前库)USE 库名;
登录本地MySQL服务器

mysql -u用户名 -p密码 

mysql -u用户名 -p                   #隐藏密码

mysql -u用户名 -p密码 库名    #同时选择库

mysql  -u用户名 -p 库名           #隐藏密码

示例:

超级用户root登录本机MySQL服务器(设密码123)

mysql -uroot -p123

mysql -uroot -p

mysql -uroot -p123 test    #同时选择库test

mysql -uroot -p test

删除数据库  

DROP DATABAS 库名;

DROP DATABASE IF EXISTS  库名;#加判断

单行注释 #或--
多行注释/*多行注释 */
创建数据表

create table 表名(

列名1  数据类型 [列/行级别约束…]

列名2  数据类型 [列/行级别约束…],

[行/表级别约束],

 ); 

                #列/行级别约束:

#级别约束:not null,default

#级别约束:单字段

primary key,unique,auto_increment

               #行/表级别约束:

#行级别约束:单、多字段

primary key(字段名1,字段名2)

unique(字段名1,字段名2)

#表间约束

foreign key(外键列) references 主表名(被引用列

查看当前数据库中的所有数据表SHOW TABLES; 
按匹配模式查看数据表SHOW TABLES LIKE '含%_的匹配模式';
查看当前数据库中的所有数据表的状态SHOW TABLE STATUS; 
查看所有或指定字段的信息

DESCRIBE|DESC 表名;                 #1

DESC|DESCRIBE 数据表名 字段名;       #2

查看创建数据表的具体SQL语句,含字符编码                          SHOW CREATE TABLE 表名;
修改字段                                    

格式1:ALTER TABLE 数据表名 CHANGE [COLUMN] 旧字段名 新字段名 字段类型 [字段属性];

格式2:ALTER TABLE 数据表名 MODIFY [COLUMN] 字段名 新类型 [字段属性];

新增字段

格式1:新增一个字段,并可指定其位置

ALTER TABLE 数据表名

ADD [COLUMN] 新字段名 字段类型 [FIRST | AFTER 字段名];

格式2:同时新增多个字段

ALTER TABLE 数据表名

ADD [COLUMN] (新字段名1 字段类型1, 新字段名2 字段类型2, ...) ;

删除字段

ALTER TABLE 表名 DROP [COLUMN] 字段名;

修改表名

# 格式1

ALTER TABLE 旧表名 RENAME [TO|AS] 新表名;

# 格式2

RENAME TABLE 旧表名1 TO 新表名1[, 旧表名2 TO 新表名2...] ;

删除数据表                                    

DROP TABLE 表名;

DROP TABLE IF EXISTS 表名;   #加判断

表三   

新增记录(行) 

格式1:(简化格式)

INSERT  INTO 表名 VALUES(值1,值2,…,值n);

#注意:(值1,值2,…,值n)中的值顺序、数据类型、个数必须与表结构一致

格式2:(基本格式)

INSERT INTO 表名(字段名1,字段名2,…) VALUES(值1,值2,…);

#注意:(值1,值2,…,)中的值顺序、数据类型、个数必须与(字段名1,字段名2,…)一致

#常用系统函数:now(),curdate()

表约束基本规则:

一.对应在默认值列插入default,MySQL自动为该列插入预设的默认值

二.默认值可以省略,MySQL自动为该列插入预设的默认值;

三.非空列一定要插入具体值,原则上不能省略!!!

四.允许空可以省略,MySQL自动为该列插入NULL值;

五.非空叠加默认值可以省略,MySQL自动为该列插入预设的默认值

六.对应在自增列插入0|NULL|DEFAULT三选一,MySQL自动为该列插入预设的自增值

七.自增可以省略,MySQL自动为该列插入预设的自增值;

修改数据

UPDATE 表名

SET 字段名1 =值1,字段名2 =值2 

WHERE 条件

删除记录(行)

DELETE FROM 表名

WHERE 条件

清空数据

TRUNCATE TABLE 表名;

等价于

TRUNCATE 表名;

添加主键(含非空)

ALTER TABLE 表名 ADD  PRIMARY KEY(列名1,…);

删除主键ALTER TABLE 表名 DROP PRIMARY KEY;
添加外键

ALTER TABLE 表名 ADD

FOREIGN KEY(外键列) REFERENCES 主表(被引用列);

删除外键ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;
添加自增式主键

ALTER TABLE 表名 ADD 列名 INT PRIMARY KEY AUTO_INCREMENT FIRST;

等价于

ALTER TABLE 表名 ADD 列名 INT FIRST;

ALTER TABLE 表名 MODIFY 列名 INT PRIMARY KEY AUTO_INCREMENT;

创建索引

语句1:ALTER TABLE 表名 ADD [UNIQUE ] INDEX [索引名] (字段名 [ASC|DESC,…]);

语句2:CREATE [UNIQUE ]INDEX  索引名 ON 表名(字段名[ASC|DESC,…]); 

语句3:CREATE TABLE 表名(

……,

INDEX [索引名] (字段名 [ASC|DESC,…])

);

说明:ASC表示升序,DESC表示降序,默认升序

删除索引

语句1:ALTER TABLE 表名 DROP INDEX 字段名;

语句2:DROP INDEX 索引名 ON 表名;  

基础查询(主语句)

select  查什么  from  从哪里查;

查什么:输出什么列

从哪里查:表名/视图名

完整查询语句

(注意各子句位置和顺序)

selec[distinct] 输出列

from 表名

[where 条件]

[group by 字段名 [having 条件]]

[order by 字段名 asc/desc]

[limit [偏移量,]记录数]

;

#输出列:*/字段名1,字段名2,…/计算列

#常用系统函数:year(),year(now()),month(),if()

WHERE条件子句常用运算符#比较运算符:=,>,<,>=,<=,<>,!=

#逻辑运算符:not,and,or

#其他运算符:between and,in(),like '%_' ,is null

#带NOT运算符:not between and,not in(),not like '%_' ,is not null

#其他运算符2:any()/some(),all(),exists(),not exists()

分组统计select、having、order by子句常用聚合函数count()/count(*),avg(),max(),min(),sum()

去除重复记录查询

多字段去除重复记录

SELECT DISTINCT 字段名 FROM 表名;

SELECT DISTINCT 字段名1,字段名2 FROM 表名;

分组统计查询

多字段分组统计

分组统计筛选

GROUP BY 字段名

GROUP BY 字段名1,字段名2

GROUP BY 字段名 HAVING  条件

查询结果排序(升序|降序)

多字段排序

ORDER BY 字段名 ASC|DESC

ORDER BY 字段名1 ASC|DESC,字段名2 ASC|DESC

限行查询:第n行到第m行

从第一条开始的i条记录

LIMIT n-1,m-n+1

LIMIT 0,i 等价于 LIMIT i

多表查询

内连接(之等值连接)

(注意各子句位置和顺序)

JOIN方法

内连接分为:

等值连接

非等值连接

自连接

功能:只显示两表匹配的记录

select [distinct] 输出列

from 表名1

inner join 表名2 on 表名2.公共列=表名1.公共

[inner join 表名3 on 表名3.公共列=表名1|2.公共列]

[where 条件]

[group by 字段名 [having 条件]]

[order by 字段名 asc/desc]

[limit  [偏移量,]记录数]

;

#输出列:*,表名.*/别名.*,表名.字段名/别名.字段名,字段名

左外连接

JOIN方法

LEFT JOIN  ON 

#输出列:同上

右外连接

JOIN方法

RIGHT JOIN  ON

#输出列:同上 

全外连接(MySQL不支持,可以使用UNION实现相同的效果)

JOIN方法

FULL JOIN  ON

#输出列:同上 

交叉连接

JOIN方法

CROSS JOIN

#输出列:同上 

内连接(之等值连接)

(注意各子句位置和顺序)

where方法(逗号连接方法)

select [distinct] 输出列

from 表名1,表名2[,表名3]

where 表名1.公共列=表名2.公共列         -- 连接条件

    [and 表名3.公共列=表名1|2.公共列]    -- 连接条件

    [and 查询条件]                                   -- 查询条件

[group by 字段名 [having 条件]]

[order by 字段名 asc/desc]

[limit  [偏移量,]记录数]

;

注意:where方法无法得到左、右、全连接等功能

子查询

SELECT主查询

WHERE 字段名 =(SELECT标量子查询); #二层嵌套

SELECT主查询

WHERE 字段名 in(SELECT列子查询); #二层嵌套

SELECT主查询

WHERE 字段名 in(SELECT子查询 WHERE 字段名 in(SELECT子子查询))#三层嵌套

SELECT 输出列 FROM (SELECT子查询) AS 别名;  #表子查询

合并结果集

SELECT条件查询

UNION  

SELECT条件查询;

将查询结果存入新表

CREATE TABLE 表名

SELECT查询语句;

将查询结果插入旧表

INSERT INTO 表名

SELECT查询语句;

创建视图

CREATE  VIEW 视图名

 AS 

SELECT查询语句;

表四      

开启一个事务处理START TRANSACTION;
提交事务COMMIT;
取消事务ROLLBACK;
定义语句结束符号

DELIMITER $$           #推荐1

DELIMITER //            #推荐2

DELIMITER ;              #恢复默认

创建自定义函数

DELIMITER $$

CREATE FUNCTION 函数名(形参名 数据类型) RETURNS 数据数型

BEGIN

    [SQL语句]

    RETURN 返回值;

END

$$

DELIMITER ;

查看函数的创建语句SHOW CREATE FUNCTION 函数名;
输出语句

SELECT 表达式; 

SELECT 函数名();          #无参

SELECT 函数名(实参);   #有参

删除函数DROP FUNCTION 函数名;
查看系统中所有函数状态SHOW FUNCTION STATUS ;
按匹配模式查看库中的函数SHOW FUNCTION STATUS LIKE '%_';
定义存储过程

DELIMITER $$

CREATE PROCEDURE 过程名(INOUT 形参名 数据类型)

BEGIN

    SQL语句

END

$$

DELIMITER ;

查看存储过程的创建语句SHOW CREATE PROCEDURE ;
查看库中所有存储过程状态SHOW PROCEDURE STATUS ;
按匹配模式查看库中的存储过程SHOW PROCEDURE STATUS LIKE '%_';
调用存储过程

CALL 过程名();         #无参

CALL 过程名(实参);  #定义语句中只有IN形参

CALL 过程名(实参,@会话变量); 

#注:定义语句中有OUT或INOUT形参,一个OUT或INOUT形参对应一个@会话变量

册除存储过程DROP PROCEDURE 过程名;
查看所有系统变量值SHOW VARIABLES;
按匹配模式查看系统变量值SHOW VARIABLES LIKE '%_';
查看指定名称的当前系统变量SELECT @@变量名;
修改系统变量值(局部修改)SET 变量名=新值;
修改系统变量值(全局修改)

SET GLOBAL 变量名=值;

SET @@GLOBAL.变量名=值;

定义会话变量(用户变量)同时赋值

SET @变量名=值;

SELECT @变量1:=字段1 FROM 表名 WHERE 条件; 

SELECT 字段1 FROM 表名 WHERE 条件  INTO @变量1;

定义局部变量DECLARE 变量名1,变量名2 数据类型 [DEFAULT 初值];
为局部变量赋值

#1常规

SET 变量名1=值,变量名2=值;

#2存储条件查询结果

SELECT 字段名1, 字段名2 FROM 表名 WHERE 条件 

INTO 变量名1,字段名2

#2等价于

SELECT 字段名1, 字段名2 INTO 变量名1,字段名2

FROM 表名 WHERE 条件 

IF判断语句

#单分支

IF 条件 THEN 语句组

END IF;

#双分支

IF 条件 THEN  语句组1

ELSE 语句组2

END IF;

#多分支

IF 条件1 THEN 语句组1

ELSEIF 条件2 THEN 语句组2

……

ELSE 语句组n+1

END IF;

CASE判断语句

#1常规

CASE

WHEN 条件1 THEN 语句组1

WHEN 条件2 THEN 语句组2

……

ELSE 语句组n+1

END CASE;

#2使用等号比较特例

CASE 表达式

WHEN 值1 THEN 语句组1

WHEN 值2 THEN 语句组2

……

ELSE 语句组n+1

END CASE;

WHILE循环语句

WHILE 条件 DO

   循环体

END WHILE; 

创建触发器

DELIMITER $$

CREATE TRIGGER 触发器名

BEFORE/AFTER INSERT/UPDATE/DELETE

ON 表名

FOR EACH ROW

BEGIN

   new.字段名

   old.字段名

END

$$

DELIMITER ;

查看触发器SHOW TRIGGERS ;
删除触发器DROP TRIGGER 触发器;

表五                                       

备份单个数据库mysqldump -u用户名 -p密码>备份文件全名
备份多个数据库mysqldump -u用户名  -p密码 --database >备份文件全名
备份所有数据库mysqldump -u用户名  -p密码 --all-databases>备份文件全名
还原数据mysql -u用户名  -p密码<备份文件全名
添加新用户create user '用户名'@'主机标识' identified by '密码'; 
添加新用户或修改用户密码

grant usage on * to '用户名'@'主机标识' identified by '密码';

修改用户密码mysqladmin -u 用户名 -p[旧密码] password 新密码
修改当前登陆用户自己的密码

set password=password('新密码');

删除用户DROP USER 
授予权限GRANT  ON  TO
收回特权REVOKE ON FROM 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值