首页 > 数据库 >SQL语句

SQL语句

时间:2023-03-11 16:36:15浏览次数:43  
标签:语句 ... 存储 name SQL 查询 子句 where

1.表结构

//创建表
creat table tb_emp1(
	id int(11);
    name varchar(25);
    deptld int(11);
    salary float;
);

//修改表结构
alter table <表名> [修改选项];
修改选项:
add column <列名> <列类型>
drop column <列名> 
change column <旧列名> <新列名> <新列类型>
alter column <列名> {set default <默认值>|drop default}
rename to <新表名>
add primary key (<字段名>)
drop primary key 
//删除表
drop table [if exists] 表1[,表2,表3....];

//主键约束:主键是表的一个特殊字段,可以唯一标识该表中的每条信息。
//外键约束:外键约束经常与主键约束一起使用,用来确保数据的一致性。
//设置单字段主键且自增长
creat table tb_emp1(
	id int(11) primary key auto_increment;
    name varchar(25);
    deptld int(11);
    salary float;
);
//设置联合主键   例如:成绩表中学号+课程号
creat table tb_emp1(
	id int(11);
    name varchar(25);
    deptld int(11);
    salary float;
    primary key(name,depld)
);
//算数运算符:+ - * / %和mod
//逻辑运算符:not和!,and和&& ,or和||,xor
between and, in, not in
//聚合函数
max,min,count(统计查询结果行数),sum,avg

2.表数据

//查询
select {*|<字段列名>} 
[
    from <表1>,<表1>....
    [
        [where <表达式>
        [group by <group by definition>
        [having <expression> [{<operator> <experssion>....}]]
        [order by <order by definition>]
        [limit [<offset>],] <row count>]
]
order by:按什么样的顺序显示查询出来的数据,可以进行的排序有升序(ASC)和降序(DESC),默认情况下是升序。order by  <字段名> [asc|desc]
distinct:去重,selcet distinct <字段名> from <表名>
as:设置别名,<字段名> as <别名>
条件查询:where 查询条件
查询条件:
        带比较运算符和逻辑运算符的查询条件
        带 between and的查询条件
        带 is null的查询条件
        带 in的查询条件
        带 like的查询条件  like “字符串”;
group by:如何显示查询出来的数据, 并按照指定的字段分组。
     where 和 HAVING 关键字也存在以下几点差异:
		一般情况下,WHERE 用于过滤数据行,而 HAVING 用于过滤分组。
		where 查询条件中不可以使用聚合函数,而 HAVING 查询条件中可以使用聚合函数。
		WHERE 在数据分组前进行过滤,而 HAVING 在数据分组后进行过滤 。
		WHERE 针对数据库文件进行过滤,而 HAVING 针对查询结果进行过滤。也就是说,WHERE 根据数据表中的字段直接进行过滤,而 HAVING 是根据前面已经查询出的字段进行过滤。
		WHERE 查询条件中不可以使用字段别名,而 HAVING 查询条件中可以使用字段别名。  
//多表查询
  select <字段名> from <表1> cross join <表2> [where子句] 交叉连接一般不采用   
  select <字段名> from <表1> inner join <表2> [on子句] 内连接一般采用,inner可省略   on 子句:用来设置内连接的连接条件
  select <字段名> from <表1> left join 或 right join <表2> <on子句>  使用外连接查询时,一定要分清需要查询的结果,是需要显示左表的全部记录还是右表的全部记录,然后选择相应的左连接和右连接。
//子查询
 where <表达式> <操作符> (子查询)操作符可以是比较运算符和 in、not in、 exists、 not exists 等关键字。
        
        
//插入数据
insert into <表名> [ <列名1> [ , … <列名n>] ] VALUES (值1) [… , (值n) ];   数据清单中数据的顺序要和列的顺序相对应。
//修改数据
update <表名> set 字段1=值1 [,...] [where 子句] [order by 子句] [limit 子句]
//删除数据
delete from <表名> [where 子句] [order by 子句] [limit 子句]

3.视图

//创建视图
create view <视图名> as <select 语句> 
//查看视图
desc 视图名
//修改视图
alter view <视图名> as <select 语句>
//删除视图
drop view <视图名1> [ , <视图名2> …]

4.存储过程和触发器

一个存储过程是一个可编程的函数,它在数据库中创建并保存,一般由 SQL 语句和一些特殊的控制结构组成。
//创建存储过程
create procedure <过程名> ( [过程参数[,…] ] ) <过程体>    //过程体以 begin end //
[过程参数[,…] ] 格式
[ in | out | inout ] <参数名> <类型>
create procedure getScore
begin
select student_score from tb
	where st_name=name;
end
//修改存储过程
alter procedure 存储过程名 [ 特征 ... ]
//删除存储过程
drop procedure [ if exists ] <过程名>

存储函数和存储过程一样,都是在数据库中定义一些 SQL 语句的集合。存储函数可以通过 return 语句返回函数值,主要用于计算并返回一个值。而存储过程没有直接返回值,主要用于执行操作。
create function 函数名 ([参数[...]])
returns type
[characteristic ...] SQL 代码
	create function func_student(id INT(11))
		returns VARCHAR(20)
		comment '查询某个学生的姓名'
		begin
		return(select name from tb_student where tb_student.id = id);
		end //
//调用存储过程
call 函数名([参数[...]]);

//定义变量
declare 变量名[,...] 类型 [default 值]
//变量赋值
set 变量=值

个人理解游标就是一个标识,用来标识数据取到了什么地方。

IF语句
if search_condition then statement_list
    [elseif search_condition then statement_list]...
    [else statement_list]
end if

CASE语句
case case_value
    when when_value then statement_list
    [when when_value then statement_list]...
    [else statement_list]
end case

MySQL 的触发器和存储过程一样,都是嵌入到 MySQL 中的一段程序,通过对数据表的相关操作来触发、激活从而实现执行。
//创建触发器
create trigger <触发器名> < before | after >
<insert | update | delete >
on <表名> for each row<触发器主体>
//删除触发器
drop trigger [ if exists ] [数据库名] <触发器名>

标签:语句,...,存储,name,SQL,查询,子句,where
From: https://www.cnblogs.com/Aying216/p/17206343.html

相关文章

  • SQL约束
    1、约束1.1约束在SQL中,约束是规定表中的数据规则。若存在违反约束的行为,行为就会被阻止。它能帮助管理员更好地管理数据库,并且确保数据库中数据的正确性和有效性。例......
  • sqlite 常见命令及操作
    sqlite系统命令sqlitetest.db                         创建test.db文件并进入sqlite3sqlite>.database  ......
  • sqlite3 命令行
    进入sqlite3命令行模式安装好sqlite3之后,在linux命令行中输入sqlite3,进入sqlite3的命令行模式。root@172:/#sqlite3SQLiteversion3.23.12018-04-1017......
  • 10 Best MySQL Client GUI Interface – Free Download
    10BestMySQLClientGUIInterface–FreeDownloadThoseMySQLclientGUIinterfaceiseasysoftwareforwindowstouseforcontrollingdatabaseiswarehoused......
  • SQL中截取字符串方法
    1left(str,length)#从左边开始截取str,length是截取的长度23right(str,length)#从右边开始截取str,length是截取的长度45substring(str,substr,m)#返回字符subs......
  • 迷宫危机“分支语句”
    今日份学习“分支语句”本文简介:该篇文章介绍分支语句,主要讲解其用法和注意事项,让我们使用该语句上有更好的概念(不再犯选择困难症......
  • SQL函数——时间函数
    1、使用NOW()、CURDATE()、CURTIME()获取当前时间在这里我有一个问题想问问大家,你们平时都是怎么样子获取时间的呢?是不是通过手表、手机、电脑等设备了解到的,那么你们......
  • mysql主从数据不同步,重新配置主从同步
    主从数据不一致,重新配置主从同步也是一种解决方法。1.从库停止主从复制stopslave;2.对主库数据库加锁flushtableswithreadlock;3.备份主库数据mysqldump......
  • mysql8.0.6+小版本升级
    概述mysql开源的数据库,发现漏洞及时升级mysql。mysql8.0.6+支持直接替换二进制内部完成升级开干envcentos7.xmysql8.0.6+8.0.6+支持in-place-upgrae升级备份->替......
  • 《SQL与数据库基础》19. 日志
    目录日志错误日志二进制日志日志格式日志查看日志删除查询日志慢查询日志本文以MySQL为例日志错误日志错误日志是MySQL中最重要的日志之一,它记录了当mysql启......