首页 > 数据库技术 > 详细

SQL语句

时间:2019-04-05 20:41:32      阅读:206      评论:0      收藏:0      [点我收藏+]

 

show databases/tables; 查看所有的数据库/数据库中所有的表
create/drop database 数据库名; 创建/删除数据库
DROP DATABASE if exists myfriend; 删myfriend库若myfriend库存在
use 数据库名; 使用这一数据库
desc 表名; 查询表信息
show full fields from 表名; 查询表详细信息
create table 表名

(
列名 列类型 对该列的修饰或约束 对该列的修饰或约束,
列名 列类型 对该列的修饰或约束,
列名 列类型,
INDEX(列名)
) ENGINE=INNODB 或 engine=myisam default charset=utf8;

建表方法1,存储引擎可不写

create table 表名
(
列名 列类型,
列名 列类型,
列名 列类型,
constraint 表名_主键列名_pk primary key(列名1,列名2),
unique key(列名1,列名2),//这是表级别,表示列名1和列名2组合不能重复
[constraint 外键名(表名_外键列名_fk)] foreign key(列名) references 表名(主键列名),//这是表级别
comment ‘注释内容‘
) comment ‘对表的注释内容‘;

建表方法2,单个主键或联合主键,唯一键
create table 新表名 like 旧表名; 使用旧表创建新表
create table 新表名 select * from 旧表名; 复制旧表结构及数据都弄过去,但约束都没了
drop table 表名; 删除表
   
insert into users values(‘bolt‘,‘230107198608211213‘,default); 新增一行,name为bolt,ID为230107198608211213,其它字段默认:
insert into users values(‘bolt‘,‘230107198608211213‘); 新增一行,name为bolt,ID为230107198608211213,其它字段默认:
delete from 表名; 删除表中的所有数据
delete from student where a=b; 删除表中的数据,有筛选条件
update student set grade=2015 where name=‘小明‘; 修改数据
select 字段名 字段名别名 from 表名; 给字段起别名
select * from 表名 limit 该表行索引,要查的记录数; 分页查询
select * from 表名 where 字段1>数值 or 字段2=‘varchar类型用‘‘‘ or 字段2=‘varchar类型用‘‘‘;  
select table_name from information_schema.tables where table_name=‘scusers‘;  
alter table 表名 add column 新字段名 新字段类型 default null auto_increment primary key first; 在第一列添加字段
alter table 表名 add column 新字段名 新字段类型 not null after 字段名(添加在该字段之后); 添加字段(一列)
alter table 表名 drop column 字段名,drop column 字段名; 删除字段(一列)
alter table 表名 MODIFY 字段名 字段新类型 对该字段的新增修饰或约束; 修改一个字段的类型或长度,新增约束或修饰
alter table 表名 change 旧字段名 新字段名 新字段类型; 修改一个字段的名称和类型,(修改一个字段的名称时一定要重新指定该字段的类型)
alter table 表名 alter column 字段名 set default 默认值; 修改一个字段的默认值(若该字段本身存在默认值,先删除之)
alter table 表名 alter column 字段名 drop default; 删除一个字段的默认值
alter table 表名 add constraint 表名_主键列名_pk primary key(列名1,列名2); 建表之后对已有字段添加主键
alter table 表名 drop primary key/constraint 表名_主键列名_pk; 取消(删除)主键(如果该主键有auto_increment,先删除之)
Alter table 子表名 add foreign key(外键字段名) references 父表名(主键字段名); 对已有字段添加外键约束(如报错子表清空即可)
alter table 表名 drop foreign key 外键名; 删除外键
alter table 表名 change 字段名 字段名 int; 删除该字段的auto_increment约束 / 删除该字段的zerofill约束 / 删除该字段的默认约束 / 删除该字段的无符号约束
alter table 表名 change 字段名 字段名 字段类型; 删除该字段的not null约束
alter table 表名 drop INDEX 字段名; 删除该字段的唯一键约束
  一般自增必为主键且数字类型,若非主键加自增,要同时加唯一键或外键约束
alter table users MODIFY cardID int(16) zerofill;  
alter table 表名 auto_increment=1; 重置auto_increment的值
alter table users auto_increment=1000000000000000;  
高级查询  
select a,b,c from 表名1 where a in(select d from 表名2); 子查询

CREATE VIEW v_empdept
as
SELECT empno,ename,job,loc,dname from emp join dept on emp.deptno=dept.deptno;

创建视图(改原表数据->视图也变,视图是虚的,修改视图->原表也变,在视图上最好只select,为了不让用户看见某一列,对select结果创建视图,为了简化查询)

create view v_empsal(dname,minsal,maxsal,avgsal)
as
select d.dname,min(sal),max(sal),avg(sal)
from emp e join dept d
on e.deptno=d.deptno
group by d.dname;

 

drop view 视图名;

删除视图
left join 左连接,结果集既包括连接表的匹配行,也包括左连接表的所有行
right join 右连接,结果集既包括连接表的匹配连接行,也包括右连接表的所有行
full/cross [outer] join 全外连接,不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
select a.a,a.b,a.c,b.c,b.d,b.f from a left out join b ON a.a=b.c;  
create user 新用户id identified by 新用户密码; 新建用户
drop user 用户id; 删除用户
grant 权限名 to 用户id; 授权
revoke 权限名 from 用户id; 撤销权限
   
source D:/insert.sql; 导入数据到数据库
show variables like ‘character%‘; 查看mysql默认编码格式
show variables like ‘%max_connections%‘; 查看最大连接数
net start mysql 启动服务
net stop mysql 关闭服务
set names ‘gbk‘; 从不使用
show engines; 查询所有支持的存储引擎
sp_renamedb ‘旧数据库名‘,‘新数据库名‘; 修改数据库的名称

字段的修饰

null:表示可以为空 / not null:表示该字段不能为空 / default null / default 该字段类型的一个默认值

unsigned:无符号位,一般作用于int

auto_increment:自动增长

字段的约束

primary key:主键约束,唯一性,有序性,则该列不能空且不能重复,每个表最多只允许一个主键(可定义联合主键)

联合主键:这些列的组合不能重复且这些列都不能为空

unique key:唯一键约束,不可重复独立性,则该列的值不能出现重复值,而且唯一键的列,允许有空值,主键不允许出现空值,允许出现多个唯一键

写法:unique

foreign key:外键约束

外键中的级联关系有以下几种情况:

ON DELETE  CASCADE    删除主表中的数据时,从表中的数据随之删除:同步删除

ON UPDATE  CASCADE    更新主表中的数据时,从表中的数据随之更新:同步更新

ON DELETE  SET NULL   删除主表中的数据时,从表中的数据置为空:删除置空

默认删除主表中的数据前需先删除从表中的数据,否则主表数据不会被删除:删除前检测从表

具有外键约束的列的值不能随便给,必须满足外键所引用的主键的取值

一张表中可以定义多个外键

外键列默认可以给null值

按照定义,外键必须引用一个主键或者唯一键,引用的主键一般在另外一张表中,也可以是本表的主键(自引用)

外键所在的表叫做子表、从表

外键所引用的主键所在的表叫做父表、主表

父子表是相对而言的,表a可为表b的子表,但同时也可以是表c的父表

Comment ‘注释内容‘:字段注释描述

ZEROFILL:零填充,会将有效位以外的位用零来显示,比如某字段数据类型为INT(5),插入值为2,将显示00002

字段的修饰和约束的几点注意

not null约束只能在列级别定义,作用在多个列上的约束只能定义在表级别,例如复合主键约束

列级别上不能定义外键约束,并且不能给约束起名字,由MySQL自动命名(not null除外)

表级别上定义的约束可以给约束起名字(CHECK约束除外)

Group by

一张表,一旦分组完成后,查询后只能得到组相关的信息

组相关的信息:(统计信息) count avg sum max min(分组的标准)

在SQLServer中分组时,不能以text,ntext,image类型的字段作为分组依据

在selecte统计函数中的字段,不能和普通的字段放在一起

WHERE条件查询

比较:= > < >= <=

确定范围:between...and... / not between...and...

确定集合:IN/NOT IN

字符匹配:LIKE/NOT LIKE

空值:IS NULL/IS NOT NULL

多重条件:AND/OR

LIKE匹配

_下划线:匹配任意一个字符

%百分号:匹配0个或多个字符

[]:匹配[]中的任意一个字符。如[acgd]表示匹配a c g d中的任何一个,对于连续的,可写成[a-d]

[^]:不匹配[]中的任何一个字符。写成[^acgd]

 

SQL语句

原文:https://www.cnblogs.com/yyjh/p/10659751.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!