自己整理mysql语句

创建数据库

create database 数据库名字;

看数据库

show databases;

使用数据库

use (名字):

创建表

create table 表名字(内容);

看所有表的名字

show tables查看表的结构 describe/desc 表名字

看表的结构和脚本

show create table 表名字 ;

增加

alert table 表名字 add 字段名 内容/(内容,内容,…);

增加到表头

alert table 表名字 add 字段名 内容/(内容,内容,…) first

增加到所指定的地方去

alert table 表名字 add 字段名 内容/(内容,内容,…); before 属性名字

插入一条记录

insert into 表名字 values (内容)

插入多条记录

insert into 表名字 values (内容),(内容)…

修改数据库,将数据库的字符集修改为utf8

alter database 数据库名字 character set utf8

修改记录中字段内容

update 表名字 set 字段=‘修改内容’where 字段=‘原先内容’

修改字段类型

alter table 表名字 modify 字段 字段类型;

删除表内容

drop table 表名字;

删除数据库内容

drop database 数据库名字;

删除内容

delete from 表名字 (删除表内的所有内容)
delete from 表名字 where 字段=‘内容’ (删除字段为字段名的那一条数据)

单表查询 select 字段名 from 表名字;

(select * from 表名字 (*代表所有字段))

select 字段名 from 表名字 where 条件

select 字段名 from 表名字 where 条件 group by 字段

select 字段名 from 表名字 where 条件 group by 字段 having 条件

select 字段名 from 表名字 where 条件 order by 字段(ASC升序,DESC降序)

select * from 表名字 order by 字段 ,字段 (先执行前面,再执行后面);

select 字段名 from 表名字 where 条件 group by 字段 order by 字段

AA的类型: count总数 、sum 求和 、 max 最大值 、 avg 平均值

select AA(*) from 表名字 where 条件
select 1字段 ,AA(2字段)from 表名字 group by 3字段(1.3字段必须相同)
select 字段 ,AA(字段)from 表名字 group by 字段 order by 字段
select 字段 ,AA(字段)XX from 表名字 group by 字段
select 字段 ,AA(字段)as XX from 表名字 group by 字段
select 字段 ,AA(字段)from 表名字 group by 字段 having 条件

多表查询

select * from 表A,表B(A * B)

自然连接

select * from 表A natural join 表B (相同的内容不会添加,其他连接起来)

等值连接(内连接)

select * from 表A (inner) join 表B on 表名字.原字段名字 = 表名字.原字段名字(满足on后面的条件则连接,字段名字改为 表名字.原字段名字)
select * from 表A,表B where 原字段名字 = 表名字.原字段名字

左、右、全外连接

select * from 表A XX join 表B on 表名字.原字段名字 = 表名字.原字段名字 (XX可以为left,right,full)
select * from 表A XX outer join 表B on表名字.原字段名字 = 表名字.原字段名字 (满不满足on后面的条件都连接,不相同的内容连接后赋值为null,字段名不用改)

条件可以有:
一般

where 字段 = ‘内容’;

多重关系

where 字段 = ‘内容’or(and) ‘内容’;(or和and后面可以是任何字段,不一定要相同,select后面的字段不受影响)

确定集合

where 字段 in(not in)‘范围内容’;(where 字段 in(‘内容’,‘内容’)
等价于 where 字段 =‘内容’or ‘内容’)

范围关系

where 表达式 between xx and xx;between and, notbetween and)

大小关系

where 表达式(=, >, >=, <, <=, <>(或!=))

通配符

where 字段 like‘%x’;(%为通配符,%x表示找到含有x的记录,可以放在任意位子)

正则表达式

where 字段 regexp ‘内容’

内容为:‘^X’以X开头

‘X$’以X结尾

‘.X’里面包含X,且X前面必须有东西

‘X*’X出现0次或多次

‘X+’X出现一次或多次

‘X?’X出现0次或1次

‘|’表示或

是否为空

where 字段 is null

去除字段类型中重复的元素

select distinct 字段名 from 表名字

经过计算的表达式作别名

select 表达式 as 别的名字 from 表名字

主键

primary key(字段名字);

外键

constraint fk_名字 foreign key (字段名) references 表名字(字段名)

导出

select * from 表名字 into outfile ‘路径/XX.txt’;

导入

load data infile ‘路径\XX.txt’ into TABLE 表名字;

curdate():得到系统的当前日期和时间

year():得到日期数据中年的部分

month():得到日期数据中月的部分

day():得到日期数据中日的部分

if语句:

if 条件 then 内容
elseif 条件 then 内容
else 内容
end if

while语句:

while 条件 do
内容
end while

mysql数据库三种变量:

1)全局变量。(mysql内置的变量,mysql程序关闭的时候全局变量才会失效!!)

character_set_client: mysql接收的客户端的数据编码 character_set_results:
mysql使用什么编码输出给客户端数据
查看某个全局变量: select @@变量名
修改某个全局变量: set @@变量名=值

  1. 会话变量。变量只在某次登录的会话中有效!退出连接,会话变量数据失效!!

查看某个会话变量: select @变量名
修改/定义某个会话变量: set @变量名=值

  1. 局部变量:在存储过程中定义的变量。存储过程结束局部变量失效!!

查看某个局部变量: select 变量名
修改某个局部变量: set 变量名=值
定义某个局部变量: declare 变量名 数据类型;

存储过程的语法:
1.创建

无参数

Delimiter 结束符号
create procedure 存储名字()
begin
sql语句(不限)
end 结束符号

有参数

Delimiter 结束符号
create procedure 存储名字(参数类型 参数名称 数据类型(in XX int))
begin
sql语句(不限)
end 结束符号

2调用

call 存储名字(参数列表)

3删掉

drop procedure 存储名字

4 携带数据库的数据给输出参数(INTO)
例子:传入员工id,查询对应的员工,输出员工姓名

DELIMITER $
CREATE PROCEDURE pro_testByData(IN eid INT,OUT sname VARCHAR(20))
BEGIN
	SELECT NAME INTO sname FROM employee WHERE id=eid;
END $

CALL pro_testByData(2,@sname);

SELECT @sname;

参数类型:

in:输入参数,可以携带数据到存储过程中

       例:传入员工id查询对应的员工
        DELIMITER $
        CREATE PROCEDURE pro_testByIn(IN eid INT)  -- 参数类型(IN) 参数名称 数据类型(int)
        BEGIN
        	SELECT * FROM employee WHERE id=eid;
        END $
    
        调用:	CALL pro_testByIn(2);

out: 输出参数,可以携带数据带存储过程外面

例:
DELIMITER $
CREATE PROCEDURE pro_testByOut(OUT n VARCHAR(20))
BEGIN
	-- 修改变量n
	SET n = '输出参数';
END $
call pro_testByOout(@n)

inout:输入输出数据

	DELIMITER $
	CREATE PROCEDURE pro_testByInOut(INOUT n VARCHAR(20))
	BEGIN
		-- 查看n变量
		SELECT n;
		-- 修改n变量
		SET n = '500';
	END $
	set @n='100';
	call pro_testByInOut(@n)

触发器:
1创建
增加触发器:

create trigger 名字 XX insert on 1表名字 for each row insert into 2表名字 values (内容)

表示在表1插入一条记录(XX可为after/ before) 触发触发器 在表2中插入内容

修改触发器:

create trigger 名字 after update on 1表名字 for each row insert into 2表名字 values (内容)

删除触发器:

create trigger 名字 after delete on 1表名字 for each row insert into 2表名字 values (内容)

2删除

drop trigger 名字;

权限:

grant XX on 数据库名字.表名字 to ‘用户名’@‘localhost’ identified by ‘密码’ (XX可为增删检除)

备份:

mysql -u 用户名 -p 数据库名字 > 路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值