Mysql语句(更新)

本文详细介绍了SQL查询的基本结构(如SELECT,JOIN,WHERE等),DML(INSERT,DELETE,UPDATE)和DDL(CREATE,ALTER,DROP)操作,数据类型、约束、事务控制、视图、变量、函数以及控制语句的使用,为数据库管理和查询提供全面指南。
摘要由CSDN通过智能技术生成
  1. 查询框架

                                执行顺序
       select     查询列表          7
       from   表                   1
       [join type]  join   表2     2 
       on   连接条件                3
       where  筛选条件              4
       group by  分组条件           5
       having  分组后筛选           6
       order by   排序条件          8  
       limit  [offset],size       9     
       #注# offset表示分页查询中当前页开始位置,计算公式=(page-1)*size,最小是0,size是页面大小
    

2.字符串查询语句

select substr(email,1,instr(email,@)-1)  as use_name
from stu_infor

3.联合查询
将多条查询结果合并成一个结果(上下合并,因此要求多个查询结果列数相同,且对应顺序列的属性相同

查询语法:
查询语句1
union  [ALL]
查询语句2
union  [ALL]
......
注释:union连接中会**自动去重**,如果不需要去重的话加上**[ALL]**

4.exists的使用

select exists(select employee_id From employees);
exisets布尔类型,判断括号内查询结果是否为空,非空为1

5.DML语言

插入:insert 删除:delet 修改:update

修改多表数据:
      update 表1 别名,表2 别名 ......
      set 列=新值
      where 筛选条件
      and 筛选条件
删除:
      delete:整行删除,可以加筛选条件
      truncate:整表删除
            truncate  table  表名
      区别:
      1、delete删除的如果有自增长列,则再插入后新数据,新数据从删除的数字自增长;truncate直接从1开始
      2、delete删除后有返回值,truncate没有返回值
      3、delete删除后可以回滚,truncate不可以回滚

6.DDL语言

表和库管理:
	创建:create 修改:alter 删除:drop
	create database if not exist books;
	
	Alter database books character set gbk;
	
	use books
	create table 表名(列名 类型,......)
表的管理:
	add、change(修改字段)、modify(修改约束
	)、drop、rename to
	
	Alter Table  books  add/change/modify/drop/rename to  新的;
表的复制:
	1、只复制格式
		create  Table copy like 源表;
	2、格式+数据
		create Table copy1 select * from 源表;
	3、部分数据
		create Table copy2 select 数据 from 源表 where 筛选条件;
	4、部分数据格式
		create Table copy3 select 数据 from 源表 where 1=2;
		//没有满足1=2的所以没有数据复制过去因此只有格式被复制了

7.数据类型

1、默认有符号类型,无符号要加上unsigned
2、如果插入的数值超过范围则会报out of range ,并且直接插入临界值

浮点型数据:
	float(M,D)   double(M,D)	dec(M,D)	decimal(M,D)
M代表数据总长度,D代表小数点后几位 M,D默认都为0
字符型:
	char   varchar(M):可变长字符,M表示最大长度,也可以省略
	Enum  枚举 每次只能插入列表中的一个; Set  集合  每次可以插入列表中的多个
日期型:  **必须用单引号引起来**
	date:日期    2018-10-12
	time:时间    5:07:02
	year:年份
	datetime:日期+时间   2018-10-12 5:07:02   八字节
	timestamp:日期+时间    20181012050702   四字节  受时区影响

8.常见约束

1、六大约束
	NOT NULL、Default、primary key  主键   唯一   非空、unique  唯一  可以为空  、check[mysql不支持]、Foreign key 外键 限制两个表的关系
	外键:
	1、在从表上设置外键关系
	2、从表的外键列的类型和主表的关联列的类型要求一致或者兼容
	3、主表的关联列必须是一个key(一般是主键或唯一)
	4、插入数据时先插入主表再插入从表,删除时先删除从表再删除主表
2、添加约束
	修改表是添加约束:
		Alter Table stuio Add Primary Key(id);
		Alter Table stuio Add Foreign Key(majorid);
3、标识列(自增长列   Auto-Increment,必须与key搭配,默认从1开始,默认步长1可以更改)直接加在字段名后就可
auto  increment   increment(新步长)
auto increment offset  起始值不支持更改,如果要更改在第一次插入时直接指定开始号,并且下次执行的时候,标识列要设置成null。
	Insert into tab_indentity(id,name) values(50,'shf');#50是标识列起始值
	Insert into tab_indentity(id,name) values(null,'shf1');
删除标识列:
	直接把设置语句中的auto increment去掉然后重新执行就可以了

9.TCL(事务控制语句)

事务的ACID:原子性、隔离性、一致性、持久性
事务的创建:
	隐式事务:没有明显开始结束标志
	显式事务:有明显开始结束标志    **前提:**必须先设置自动提交功能为禁用(set autocommit=0)
	事务开始的标记:
		set autocommit=0;或start transaction
		编写sql语句
	事务结束:
		commit;提交事务  或者  rollback  事务回滚
多个事务执行时可能出现的问题:
	1、脏读:----更新过程中可能发生
	2、不可重复读
	3、幻读:----插入或删除
savepoint 保存点 搭配roll back使用
	set autocommit=0;
	start Transaction;
	delete from account where id=25;
	**savepoint a;**
	delete from account where id=28;
	**rollback to a;**

10.视图

1、创建视图
	create view 视图名 as 查询语句
2、视图的修改 
	create or replace view 视图名 as 查询语句
		或者
	alter view 视图名 as 查询语句
3、视图删除
	drop view 视图名
4、视图查看
	desc  view 视图名
5、视图更新
	delete、drop、update对于是视图的修改都会影响原表的数据,所以视图一般只看不改

11.变量

系统变量:全局变量(global) 会话变量(session  默认)
自定义变量:用户变量  局部变量
使用的语法
	1、查看所有的系统变量
	show global/session variables
	2、查看满足条件的部分系统变量 
	show global/session variables like ‘%char%’
	3、查看指定的某个系统变量的值
	select @@global/session**.**系统变量名
	4、为某个系统变量赋值
	set  global/session**.**系统变量名=值  或者set  global/session  系统变量名=值
自定义变量:
		声明: 
			declare 变量名 类型(default 值);
局部变量:
	作用域:仅仅定义在它的begin-end之间。
	1、创建语法
	create procedure 存储过程名(参数列表)
		begin
			方法体
		end
	注意:如果方法体只有一句sql语句begin-end可以省略,并且方法体里面每句sql语句后面必须加‘;’,其结尾可以用delimiter重新设置。
	语法:
		delimiter 结束标记
	注意:参数列表分三部分   参数模式   参数名    参数类型
	                 eg:    in    stuname   varchar(20)
	参数模式:
		In:形式参数,调用时要传入实际参数
		Out:该参数可以作为返回值
		Inout:既可以作为形参也可以作为返回值
	2、调用语法
	call 存储过程名(实参列表) 结束符号
	eg:
		delimiter $
		create procedure mypl()
		begin
			插入语句
		end $
	调用:call mypl() $
	3、删除存储过程
	语法:
		drop procedure 存储过程名;//一次只能删除一个
	4、查看存储过程信息
	show create procedure 存储过程名;

12.函数

函数:
	含义与优点同存储过程一样。
区别:
	存储过程有0个或多个返回
	函数有且只有一个返回
1、创建语法
	create Function 函数名 (参数列表) Returns 返回类型
	Begin
		函数体
		包括{
				定义变量
				变量赋值
				return  变量
		}
	End
	注意:参数列表包括:参数名称和参数类型。函数体中必须有return。
	使用delimiter 设置结束标志
2、调用语法
	select 函数名(参数列表)
3、查看函数
	show create Function 函数名;
4、删除函数
	drop Function 函数名;

13.控制语句

1、if结构:
	if 条件1 then 语句1;
	else if 条件2 then 语句2;
	......
	else 语句n;
	end if;
2、循环结构:while、loop、repeat
   循环控制:iterate类似于continue   leave类似于break
   *************************************
   while语法:
  	 [标签]
   		while 循环条件 do
   			 循环体
   	    end while
   	 [标签];
  ************************************** 
   loop语法:可以用来模拟简单的死循环
    [标签]
   		loop
   			 循环体
   	    end loop
   	 [标签];
  *************************************** 	 
   repeat语法:类似于do-while
    [标签]
   		repeat
   			 循环体
   		until 结束循环的条件
   	    end repeat
   	 [标签];
  ****************************************
  eg:
  	批量插入+循环控制
  	create procedure test_while(In insertcount Int)
  	Begin
  		Declare i Int default 1;
  		a:
  			while i<=insertcount do
  				Insert into admin(username,password)values(concat('sss',i),'666');
  				If i>=22 then leave a;
  				End If;
  				set i=i+1;
  		End while a;
  	End $
  	call test_while(50)$

14.整理回顾

转义字符 escape 指定符号
安全等于 <=>
asc  升 desc 降 默认
trim去掉前后空格或者指定字符
eg:
	trim('a' From 'aabbaacca') As result //bbaacc
sum、avg、count、amx、min都忽略null
datediff(date1,date2)返回相差天数
str_to_date:字符串->日期   需要指定解析格式
data_format:时期->字符串
LPAD/RPAD  指定字符左/右填充 LPAD/RPAD(待填充串,总长度,填充字符)
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值