数据库基础命令

本文详细介绍了SQL数据库的基础命令,包括创建、修改、删除数据库和表,以及数据的插入、更新和删除。还涵盖了查询数据、设置权限、事务处理、约束和存储引擎等核心概念,是SQL初学者的实用教程。

create,创建

alter,修改

drop,删除

insert,插入数据

update,修改数据

delete,删除数据

select,查询数据

grant,设置权限与用户

commit,提交事务

rollback,回滚事务

savepoint,设置保存点

create datebase,创建库

if not exists,可选的,表示对象名称不存在时创建

default charset="字符集",可选的,指定默认的字符集,常用的是utf8

default collate"字符校对规则",可选的,指定字符集校对规则,需要和字符集配对,常用的是utf8_general_ci

create table,创建表

engine=innodb,可选的,指定存储引擎,innodb存储引擎支持事务操作、外键

 

 

primary key 主键

constraint 主键名称 primary key(属性1,属性2,...)

constraint 外键名 foreign key (属性名) references 主表名(属性) on delete cascade on update cascade 外键约束

unique 唯一约束

not null 非空约束

auto_increment 自增长

检查约束语法:属性 数据类型 check(条件),属性的值必须满足指定条件(mysql 8以上版本支持)

默认值语法:属性 数据类型 default 值,放在其他约束之后

复制表结构,不复制数据:create table 表名 like 被复制的表名;

复制表结构与数据:create table 表名 as select * from 被复制的表名;

添加属性:alter table 表名 add 属性 数据类型 约束;

修改数据类型、约束:alter table 表名 modify 属性 数据类型 约束;

添加约束:alter table 表名 add 约束(属性);

修改属性名:alter table 表名 change old_属性名 new_属性名 数据类型 约束;

删除主键:alter table 表名 drop primary key;

删除外键:alter table 表名 drop foreign key 外键名称;

删除属性:alter table 表名 drop 属性名;

第一范式:表中的每一个属性都不可再分(原子性)

第二范式:表已经满足第一范式,在此基础上要求每一个非主属性都完全依赖于主属性(消除部分依赖)

第三范式:表已经满足第二范式,在此基础上要求每一个非主属性不传递依赖于主属性(消除传递依赖)

删除库:drop database 库名;

删除表:drop table 表名;

掌握:insert into 表名(属性1,属性2,......) values(值1,值2,......),(......),...... ;

语法:update 表名 set 属性1=值1,属性2=值2,...... where 条件;

where 条件,可选的,指定修改满足条件的数据。如果省略,表示修改指定属性所有的值

语法:delete from 表名 where 条件;

补充:truncate 表名;,删除表中数据,不能指定条件,直接删除整张表中数据,属于DDL语句,删除后不能使用事务回滚操作

select 属性1,属性2,...... # 表示要查询哪些属性的值 from 表1,表2,...... # 表示从哪些表中查询 where 条件1 ...... # 限定查询返回的数据 group by 属性1,...... # 表示使用哪些属性进行分组 having 条件 ...... # 限定分组结果 order by 属性1,...... # 表示使用哪些属性对查询结果排序 limit start,len; # 表示从查询结果中指定位置开始取指定数量的行

select * from emp;

语法:属性名 as "别名",属性名 "别名"

distinct 去重

=,等于

!=/<>,不等于

>,大于

>=,大于等于

<,小于

<=,小于等于

in,将属性中的每一个值与集合中的每一个元素进行比较,只要匹配任意一元素,则表达式结果为真,这一行数据会被查询返回

between...and...,判断属性中的每一个值是否在闭区间[A,B]范围内,如果在则表达式结果为真,这一行数据会被查询返回

语法:属性 like "匹配规则"

_,匹配任意1个字符

%,匹配若干任意字符

is null ,匹配空值

and,条件1 and 条件2,两个条件同时为真,则整体表达式结果为真;任意1个条件结果为假,则整体表达式结果为假

or,条件1 or 条件2,两个条件同时为假,则整体表达式结果为假;任意1个条件结果为真,则整体表达式结果为真

not,'not 条件',条件结果为假,则整体表达式结果为真;条件结果为真,则整体表达式结果为假

floor(x),返回小于等于x的最大整数

ceiling(x),返回大于等于x的最小整数

mod(x,y),返回x除以y的余数

round(x,p),返回将x精确到第p位的结果(四舍五入)

truncate(x,p),返回将x截取到第p位的结果

now(),返回当前的日期和时间

curdate(),返回当前日期

curtime(),返回当前时间

last_day(date),返回指定日期所在月份的最后1天的日期

date_format(date,fmt),将指定的日期格式化

fmt表示格式,%Y-4位年,%m-2位月,%d-2位日,%H-小时,%i-分钟,%S-秒

date_add(date,interval n f),返回将指定日期加上间隔时间n的结果,f为n的计量单位(year、month、day)

upper(s),将字符串s转换为大写

lower(s),将字符串s转换为小写

length(s),返回字符串s的字节数

char_length(s),返回字符串s的字符数replace(s,old,new),将字符串s中指定的内容替换为新内容

substring(s,start,len),从字符串s指定位置开始返回指定长度的内容

(start,表示开始位置。大于0,表示从字符串左边开始计数;小于0,表示从字符串右边开始计数)

(len,可选的,表示返回内容的长度。如果省略表示从start位置开始所有的内容)

left(s,len),从字符串s的左边返回指定长度的内容

right(s,len),从字符串s的右边返回指定长度的内容

lpad(s,len,new),使用指定内容(new)从左边将字符串s补齐到长度为len(为补齐后新字符串的总长度)

rpad(s,len,new),使用指定内容(new)从右边将字符串s补齐到长度为len(为补齐后新字符串的总长度)

concat(s1,s2,...),将多个字符串拼接成1个新的字符串

instr(s,new),返回指定内容在字符串s中第一次出现的位置。如果s中没有该内容则返回0

ifnull(s,value),如果s为null返回value,否则返回s本身

case 属性 when 值1 then 结果1 # 如果属性值与值1匹配,返回结果1 when 值2 then 结果2 ...... end

case when 条件1 then 结果1 # 如果条件1结果为真,返回结果1 when 条件2 then 结果2 # 如果条件1结果为假,条件2结果为真,返回结果2 ...... end

语法:if(条件,结果1,结果2),如果条件的结果为真,返回结果1,否则返回结果2 inner join

select 表1.属性1,表1.属性2,表2.属性3,...... from 表1 inner join 表2 on 连接条件 where 条件1 ......

where

select 表1.属性1,表1.属性2,表2.属性3,...... from 表1,表2,...... where 连接条件 and 结果限定条件;

左外连接,left join,右边表返回与连接条件完全匹配的数据,左边表返回所有数据(包括与连接条件不匹配的数据)

右外连接,right join,左边表返回与连接条件完全匹配的数据,右边表返回所有数据(包括与连接条件不匹配的数据)

sum(属性),求和

count(),计数

avg(属性),返回指定属性的算术平均值(忽略空值)

max(属性),返回指定属性的最大值

min(属性),返回指定属性的最小值

group by语法: select 属性,聚合函数(),...... from ... group by 属性(select语句中同时出现表中的属性与聚合函数时,必须使用group by进行分组,并且要求select语句中除聚合函数以外的所有属性都必须出现在group by语句中)

having作用:限定分组的结果,必须与group by语句一起使用

order by语法:order by 属性 asc/desc,......

limit语法:limit start,len(start,表示开始的行号(从哪一行开始显示),第1行为0;如果省略表示从第1行开始),(len,表示要显示的行的数量)

子查询说明:条件的值未知,此时需要先通过子查询得到条件中的值,再 将这个值带入主查询使用。子查询必须放在括号中,一般将子查询放在运算符右边。

单行子查询说明:子查询返回的值有且仅有1个

单行比较运算符:=、!=、>、>=、<、<=

多行子查询说明:子查询返回的值有多个(1列多行)

多行比较运算符:in、any、all

多列子查询说明:子查询返回的结果是多行多列,使用in进行运算,(属性1,属性2,...) in(子查询)

while 条件 do # 条件的结果为真循环一直执行,直到条件的结果为假

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值