mysql
-
基本指令
- set character_set_client = gbk; 暂时修改当前的数据集
-
库操作
- create database 库名; 创建
- show database ; 查看
- show create database 库名; 查看创建库语句
- alter database 库名 default character set 编码方式 collate 编码方式_bin
- drop database if exists 库名;
-
数据类型
- 整型
- int bigint
- 浮点型与定点型
- float double
- decimal(m,d)
- 日期时间
- datetime
- 使用now 来获取当前系统的日期和时间
- 字符串&二进制
- 字符串 : char varchar
- 二进制 : binary varbinary
- 整型
-
表操作
-
create table 表名(
字段1 数据类型 [外间约束],…
)
-
show create table 表名; 查看创建表语句
show create table 表名\G. ; 对齐显示
-
desc 表名 ; 查看字段集合
NULL KEY(是否编码索引) DEFAULT EXTRA(附加信息)
-
alter table 旧表 rename 新表 ; 改名
-
alter table 表名 change 旧字段 新字段 INT; 修改字段名
注意: 数据类型必须与原有数据类型相同
-
alter table 表名 modify 字段 新数据类型 ; 修改数据类型
-
alter table 表名 add 新字段 数据类型 [约束][frist | after 字段]
-
alter table 表名 drop 字段 ; 删除字段
-
alter table 表名 modify 字段1 数据类型 [first | after 字段]; 排列位置
-
drop table 表名 ;删表
-
-
约束
primary key 唯一标识,每个数据表中只有一个
foreign key 外键关联
not null 非空
unique 唯一
auto_increment 自增
-
外键详解
-
创建外键
指定主键:foreign key(字段名)
引用外键:references(外键字段名)
-
事件触发限制
- on delete 和 on update 可设参数 cascade 跟随外键改动
- restrict 限制跟随外键改动
- set null 设置空值
- set default 设置默认值
-
创建时使用外键
create table temp(
id int,
name char(10),
foreign key(id) references 外联表(id)on delete cascade on update cascade
)
-
-
记录
-
插入记录
-
指定字段 insert into 表名(k1,k2…) vlaues (v1,v2…)
-
不指定字段 insert into 表名 vlaues (v1,v2…)
-
添加多条记录
insert into 表名(k1,k2…)
vlaues (v1,v2…),(v1,v2)
-
-
修改记录
update 表名 set 字段名 = 新值 [,…] [where condition];
-
删除记录
delete from 表名 [where condition]
清空:(区别网上查一下,了解即可,truncate 效率更高)
delete from 表名;
truncate table 表名;
-
-
select 语句基本用法
select [all | distinct ] k1 , k2 …| *
from 表名列表
[where condition]
[group by 字段名]
[having condition]
[order by 别名 [asc | desc]]
limit [offset] n;
**distinct: 用于剔除查询结果中重复的数据 **
from:从指定表中查询数据,一张表或多张表
group by: 将查询结果按照指定字段进行分组
order by:排序 asc升序 desc 降序
hvaing: 对分组数据进行指定条件过滤
limit: 偏移量 offset :0表示第一条数据 ; 条数 n:返回查询记录数
目前感觉查询语句不是那么的重要,会简单的where字句查询就行了
-
基本查询
select * from 表名
-
为列区别名
select class as 班级 , now() as 时间 from 表名
-
使用distinct去消重复查询
select distinct class as 班级 from 表名
-
where 子句
select distinct class as 班级 from 表名 where condition
-
模糊查询
% : 任意字符0 个 或多个
_ : 任意字符 1 个
select distinct class as 班级 from 表名 where name like ‘张%’
-
order by子句
select distinct class as 班级 from 表名 where name like ‘张%’ order by score
注意:
- asc(升序默认) desc(降序) - 可以选择多列 - order by 子句必须放在where 子句后面 -
集合函数
count(*): 不能与distinct 连用
sum() any() min() max()
-
group by 子句
使用 group by必须符合两种情况:
- 应用了集合函数 - 未应用集合函数的字段必须包含在group by子句中select sgender as 性别,count(*) as 人数
from studentinfo
group by sgender
group by 通常与having 子句配合使用,使用having 进行二次筛选
where 子句 和 having 子句 区别表现:
- where 子句的设置的查询筛选条件在group by 子句的之前发生作用,并且条件中不能使用集合函数
- having 子句设置筛选条件在group by 子句之后发生作用,并且条件中允许使用集合函数
SQL 执行函数
- where 子句
- group by 子句
- 执行聚合函数
- having 子句
-
多表查询
连接语法格式:
select 列名列表
from 表名1 left | right | inner | full join 表2
on 表名1.列名 比较运算符 表名2.列名
-
内连接 inner join
-
左外连接 left join
-
右外连接 right join
-
外连接 full join
-
-
创建存储过程
- 创建
delimiter //
create procedure test([in 变量名 数据类型])
begin
select * from 表名;
end
//
-
调用
call test();
//
-
创建函数过程
- 创建
create function hello(w char(20) charset utf8)
-> returns char(50)
-> reads sql data
-> begin
-> return concat(‘hello’,w,’!’);
-> end
-> //- 调用
set @a = ‘hellow’;
-> set @b = hello(@a);
-> //select @b
-
事务
start transaction; 开启事物
执行操作语句
commit; 提交这一次事务
rollback; 取消这一次事物
-

1446

被折叠的 条评论
为什么被折叠?



