Mysql----常用SQL语法

什么是SQL

结构化查询语言(Structured Query Language),简称SQL。它是专门用来访问数据库的标准编程语言。它可以用于存储数据,查询数据,更新数据以及管理关系型数据库等操作。同时,数据库脚本文件的扩展名也是sql。可以通过DBMS对数据库进行定义数据、操纵数据、查询数据、数据控制等

SQL语言可以分成五个部分,分别为DDL、DML、TCL、DCL、DQL

  1. 数据定义语言(DDL):Data Definition Language
    用于建立,删除,修改数据库对象的语言。包含如下关键字:
create:用于创建表或者其他对象的结构
drop:用于删除表或者其他对象的结构
alter:用于修改表或者其他对象的结构
truncate:用于清空表数据,保留表结构
  1. 数据操纵语言(DML):Data Manipulation Language
    用于改变数据表的数据。通常与事务控制语言一起使用,要经过事务控制语言的提交操作,才会真正的将数据持久到数据库中。包含如下关键字:
insert:将数据插入到数据表
update:更新数据表中已存在的数据
delete:删除数据表中的数据
  1. 数据查询语言(DQL):Data Query Language
    用于查询数据表中的数据。或者用于科学计算。关键字如下:
select:选择要显示的数据
  1. 数据控制语言(DCL):Data Control Language
    用于执行关于权限的授予和撤销操作。关键字如下:
create user:创建用户
drop user :删除用户
grant:授权。用于给用户或者角色授予权限
revoke:撤销。用于回收用户或者角色的权限
  1. 事务控制语言(TCL):Transaction Control Language
    用于保证数据的完整性和一致性。
    有时候我们的一个需求(一个任务),可能会涉及到多个DML(增删改)操作。那么这一系列操作, 我们要看成一个整体,不可切割。如在一个员工系统中,某员工A的数据可能会存在多个表中,如基本信息表,业务信息表,邮箱信息表等。当我们想删除此人的所有信息时,除了删除这个人的基本信息外,还应该删除与此人有关的其他所有信息,如邮箱,地址等等。这样的操作会涉及到多个DML语句。那么从开始执行到真正结束,就会构成一个事务(Transaction)。对于事务,我们要保证事务的完整性,不能分割。事务要么成功, 要么撤回(回到执行前),不能执行一部分就终止。
    只有数据表正在进行DML操作时,才会涉及到事务。
    关键字如下:
commit:提交,确任。将已经进行的DML操作的数据持久化
rollback:回滚,回退。用于取消已经进行的DML操作
savepoint:保存点。可以将当前的DML操作回退到指定的保存点,便于取消部分改变
事务的四个特性
(1) 原子性(Atomicity): 即事务要么成功,要么撤回,不可切割。
(2) 一致性(Consistency):事务开始前和结束后,要保证数据的一致性。如转账案例,转账前账号A和账号B的钱的总数为10000。转账后账号A和账号B的钱的总数应该还是10000;
(3) 隔离性(Isolation):当涉及到多用户操作同一张表时,数据库为会每一个用户开启一个事务。那么当其中一个事务正在进行时,其他事务应该处于等待状态。保证事务之间不会受影响。
(4) 持久性(Durability): 当一个事务被提交后,我们要保证数据库里的数据是永久改变的。即使数据库崩溃了,我们也要保证事务的完整性。

常用的SQL语法

  1. 数据定义语言(DDL)的操作语法
1)创建表结构
create table tName(colName1 type1,...,colNameN typeN) [engine=innodb][default character set cName][collate utf8_general_ci]);2)显示表结构
desc tName;show columns from tName;3)添加表字段(关键字:add)
alter table tName add colName Type;4)删除表字段(关键字:add)
alter table tName drop colName;5)修改表字段名称/类型(关键字:change/modify)
alter table tName change colName newcolName newType;
alter table tName modify colName newType;6)修改表名(关键字:rename)
alter table oldtName rename newtName;7)清空表数据,保留表结构(关键字:truncate)
truncate table tName;8)删除表结构(关键字:drop)
drop table tName;9)复制表结构(关键字:like)
create table newtName like oldtName;
  1. 数据操纵语言(DML)的操作语法
(1)插入数据到表中(关键字:insert into)
insert into tName(colName1, ... ,colNameN) values (value1, ... ,valueN);
insert into tName values (value1, ... ,valueN);  按照建表字段顺序对应赋值

(2)修改表中数据(关键字:update...set)
update tName set colName1=value1, ... ,colNameN=valueN [ where 条件 ] ;

(3)删除表中数据(关键字:delete)
delete from tName [ where 条件 ];

  1. 数据查询语言(DQL)的操作语法``
(1)查询表中数据(部分字段显示)
select colName1,......,colNameN from tName [where 子句] [ group by 子句] [ having 子句] [order by子句];

(2)查询表中数据(所有字段显示)
select * from tName;
*:通配符,表示所有字段

六个子句的执行顺序
   1.from子句
   2.where子句
   3.group by子句
   4.having子句
   5.select子句
   6.order by子句

where子句
作用:在对表进行操作时,起到条件约束限制的作用
   (1)关系运算符
      >,>=,<,<=,=,!=,<>
   (2)连接符
      and,or,
   (3)范围查询
      [not]  between field1 and field2
      范围内:  [field1,field2] 闭区间
      between .. and .. 相当于连接符的and
      not between..and..相当于连接符的or
   (4)集合
      [not] in (集合元素)
      in (集合元素) 相当于连接符的or
      not in (集合元素) 相当于连接符的and

      all/any
      >all(集合元素):大于集合中最大的即可     
      <all(集合元素):小于集合中最小的即可
      >any(集合元素):大于集合中最小的即可
      <any(集合元素):小于集合中最大的即可
      注意:
      mysql不支持all/any后直接写集合元素
             支持all/any后写子查询查询出来的集合。
    (5)模糊查询:like
      通配符:
      %:匹配0个或0个以上的任意字符
      _:匹配1个任意字符
      语法:
      fieldName like '%s%'
	  fieldName like '_s%'
	  fieldName like '_s_a%'

order by子句
   作用:对需要所显示出来的字段数据进行排序
   关键字:ASC表示升序,DESC表示降序。
          默认不写时为升序。
   语法:
   order by field1 asc|desc[,field2 asc|desc][...]

group by子句
   作用:在查询时,将表中的数据按照相应的字段,根据值的不同,来划分成不同的小组。
   在做分组查询时,一般都会涉及到相应的分组函数(也叫聚合函数),而所有聚合函数都会忽略null,不进行统计。
   
   count(colName):统计指定字段的字段值的记录总数,null值会被忽略。
   max(colName):返回指定字段的字段值中的最大值,null值会被忽略。
   min(colName):返回指定字段的字段值中的最小值,null值会被忽略。
   sum(colName):返回指定字段的字段值的和,null值会被忽略。
   avg(colName):返回指定字段的字段值的平均值,null值会被忽略。
   
   注意:
   在使用avg()函数时,其忽略空值记录。
   如果根据需求要将null值记录计算在内,我们可以使用这个函数:ifnull(colName,value),
   它的作用是如果指定的colName对应的值有null,我们就使用value,否则使用其本身

  1. 数据控制语言(DCL)的操作语法
(1)创建用户
create user username@ip identified by newPassword;

(2)修改密码
alter user username@ip identified by newPassword;

(3)显示用户的权限
show grants for username@ip;

(4)授权语句
grant 权限1,权限2, ... on databaseName.* to username@ip;
DDL权限: createalterdroptruncatecreate view
DML权限: insertdeleteupdate       
DQL权限: select

(5)撤销权限
revoke 权限1,权限2, ... on databaseName.* from username@ip;

(6)删除用户
drop user username;

(7)权限立即生效语句
flush privileges;

  1. 事务控制语言(TCL)的操作语法
(1)commit:用于提交,表示事务成功结束。用于确认数据的更改,持久化。
(2)rollback:用于回滚,回退到事务开始前。取消所有的DML操作。
(3)savepoint: 设置事务的保存点,可以回退到指定的保存点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值