SQL常用语句

  • 格式:doc
  • 大小:46.00 KB
  • 文档页数:9

9、SQL常用语句.txt
创建用户:
create user 用户名identified by ‘密码’;
授权:
grant 权限on 表名.* to 用户名;
删除用户
drop user 用户名;
start transaction 开启事务(所有对数据表增加、修改、删除操作临时表进行)rollback 回滚事务(取消刚刚操作)
commit 提交事务(确认刚才操作)
一、对数据库CURD (DDL数据定义语言)
1、创建数据库
create database 数据库名称;
2、创建数据库,并指定字符集
create database 数据库名称character set 字符集;
3、创建数据库,指定字符集,并设置校对规则
create database 数据库名称character set 字符集collate 校对规则;
4、查看所有数据库
show databases;
5、查看数据库创建语句,与当前编码集
show create database 数据库名;
6、查看当前正使用的数据库
select database();
7、修改数据库编码
alter database 数据库名称character set 编码集;
8、切换数据库、设置当前使用的数据库
use 数据库名称;
9、删除数据库
drop database 数据库名称;
二、对数据表CURD (DDL数据定义语言)
字符串:varchar、char(0-255)
大数据类型:blob、text
数值型:tinyint、smallint、int、bigint、double 逻辑型:bit
日期型:data、time、datetime、timestamp
1、创建数据表,指定字符集,并设置校对规则create table 表名(
列名类型(长度),
列名类型(长度),
列名类型(长度),
)character set 字符集collate 校对规则;
2、查看表结构
desc 表名;
3、查看数据表的创建语句
show create table 数据表;
4、查看当前数据库的所有表
show tables;
5、字段约束
主键约束(唯一标识一条记录) primary key
自动增长auto_increment
唯一约束(该字段内容不允许重复) unique
非空约束(值不能为空) not null
6、数据表修改,使用alter table语句添加、修改或删除列语法
7、向已有数据表中添加一列
alter table 表名add 列名类型(长度) 约束;
8、改变已有数据表一列类型、长度
alter table 表名modify 列名类型(长度) 约束;
9、改变已有数据表一列的名称
alter table 表名change 旧列名新列名类型(长度) 约束;
10、删除已有一列
alter table 表名drop 列名;
11、修改表名
rename table 旧表名to新表名;
12、修改表的字符集
alter table 表名character set 字符集;
13、数据表删除
drop table 表名;
三、对数据表中数据记录(DML数据操纵语言,insert、update、delete)
1、数据表中数据记录的插入,在插入数据时,字符串需添加单引号''
insert into 表名(列名,列名,...) values(值,值,...);
2、查看数据库相关编码集
show variables like 'character%';
3、数据表记录修改操作
update 表名set 列名=值,列名=值where 条件语句
4、数据表记录删除操作
delete from 表名where 条件语句;
5、删除一个表中的所有记录,不可恢复
truncate 表名;
6、数据记录的查询,distinct剔除重复数据,S -D- F - W - G - H - O
select *|制定列名,列名from 表名where 条件语句;
7、数据记录查询时进行运算
select 列名运算表达式from 表名where 条件语句;
8、数据记录查询后,使用列名的列别名进行显示(as常省略)
select 列名as 列列名from 表名where 条件语句;
9、select比较、逻辑运算(在where子句中经常使用的运算符)
> 大于< 小于<= 小于等于>= 大于等于<> 不等于=等于between ...and.. 显示在某一区间的值(先写小的后写大的)
...and... 显示在某一区间的值
in(set) 显示在in列表中的值(在几个固定值中取值) like'字符%' like'字符_' 模糊查询的两种方式
is null 判断一列是否为空
is not null 判断一列是否都满足不为空
and 多个条件同时成立(and的优先级高于or)
or 多个条件任一成立
not 不成立
10、对select查询结果通过order by 语句进行排序(默认是升序)
select *from 表名where 条件语句order by 列名asc|desc, 列名asc|desc...;
用DESC 表示按倒序排序(即:从大到小排序)
用ACS 表示按正序排序(即:从小到大排序)
11、聚集函数(结合查询分组进行数据统计)
count() 返回某一列,行的总数
sum(列名) 返回满足where条件的行的和
avg(列名) 返回满足where条件的一列的平均值
max和min 对一列数据,计算最大值和最小值select count(列名)|count(*) from 表名;
select sum(列名),sun(列名) from 数据表;
select avg(列名) from 数据表;
select max(列名)|min(列名) from 表名;
12、select分组查询(分组目的:统计,分组前提:重复数据)
select 列名,列名from 表名group by 列名having 分组查询条件;
四、数据库的备份和恢复
cmd> mysqldump -u 用户名-p 数据库名> 文件名.sql
cmd> mysql -u 用户名p 数据库名< 文件名.sql
source 文件名.sql (在数据库内部使用)
五、外键约束
1、为制定表添加一个外键约束
alter table 表名add foreign key (外表_id)references 外表(id);
六、数据库完整性约束
主键约束primary key : 用来指定数据表数据记录的唯一标识
唯一约束unique : 该字段取值唯一
非空约束not null ; 该字段值不能为null
外键约束foreign key : 当两个数据表存在关联时,添加外键约束,外键约束引用另一张表主键条件约束check : mysql不支持Oracle支持check age<100 ; 向数据表存入age值,必须小于100
七、多表设计
数据表与数据表之前存在三种关系:在实体之间关系,多对多、多对一、一对一
多对多关系,必须引入第三张数据表,同时引入另两张实体表主键作为外键。

一对多关系,在多的一方添加另一方主键作为其外键。

一对一关系,可以在任何一方添加另一方主键作为外键。

八、笛卡尔积
当两个数据表进行关联查询时,用第一张数据表每一条记录去匹配第二张数据表每一条记录。

内连接:将两张表相同意义字段连接起来
select * from a inner join b on a.id=b.id;
select * from a,b where a.id=b.id;
外连接:左外连接、右外连接、全外连接
左外连接:用第一张表每条记录去匹配第二张表对应记录,无论是否找到匹配信息,都显示第一张表匹配结果
select * from a left outer join b on a.id=b.id;
右外连接:从第二张表找第一张表匹配记录,无论是否找到,第二张表所有记录都显示
select * from a right outer join b on a.id=b.id;
全外连接:左外连接与右外连接结果和,排除重复数据
select * from a full outer join b on a.id=b.id;
select * from a left outer join b on a.id=b.id union select * from a right outer join b on a.id=b.id;
九、关联子查询
N/EXISTS 当前查询记录在子查询结果中存在
十、ANY、SOME、ALL
SOME()、ANY()作用相同,
any(1,2,3) 大于任何一个都可以,等价于>min
ALL(),
all(1,2,3) 必须同时大于三个值,等价于>max
十一、结果集操作
使用union将两个查询结果合并,union 将排重重复数据,union all将不会排重重复数据。