鉴于内容比较杂乱,基础内容和简短课题统一发布在这里,繁杂且长的适合单开的再开单篇,后续会整合在这里
mysql语句
crud
sql
#基本添加
#如果不声明field_name前后对应 需要和数据库字段顺序一致(不推荐) []代表可选
insert into table_name [(field_name,...)]values(val,...)
#基本删除
delete from table_name where where_sql
#基本修改
update table_name set field_name=value,... where where_sql
#基本查询
# *表示全部字段
select */field_name,.../函数 from table_name
#模糊查询
#左侧原则 左侧原则能够更大限度使索引生效
where field_name like 'string%';
#排序 desc降序大->小 asc升序默认小->大 where后limit前
order by field_name [desc/asc][,...]
#分页查询 start符合条件的数据开始条数位置 num需要条数
limit start,num
#分组查询
group by field_name
#列别名 表别名 可+as 或直接空格
select field_name as as_name from table_name t_name
#联表查询
#inner join/left join/right join
#inner join 保留两侧全部数据 left/right保留一侧数据为准
select * from tab1 left join tab2 ON where tab1.field1=tab2.field1
#子查询 in/not in 可以嵌套 最大嵌套层数18
select * from tab1 where in (select * from tab2 where ...)
系统操作
sql
#创建数据库 并制定字符集
#在mysql目录下会生成对应文件夹 文件夹下有db.opt文件
create database db_name character set utf8 collate utf8_general_ci;
#查看全部数据库
show databases;
#使用数据库
use db_name;
#删除数据库
drop database db_name;
#显示当前数据库所有表和视图
show tables;
#显示创建表的语句
show create table tab_name;
#查看表结构
describe/desc table_name;
#创建表
#会在对应数据库目录下创建table_name.frm文件
create table table_name (field_name data_type(lenght),...);
#修改表
alter table table_name
ADD field_name data_type;#新增字段 data_type=数据类型
drop field_name;#删除字段
#删除数据表
drop table table_name;
#退出mysql
exit;
#登录命令
mysql -h 主机ip -u 用户名 -p 密码
mysql函数
|-------------|--------------------------------------------------|------------------|---------------------------------------------------------------------|
| 函数名 | 参数 | 返回值 | 注意事项 |
| FIND_IN_SET | str, strlist str:搜索内容字符串 strlist:指定搜索列名 格式 a,b,c | 返回从1开始位置,未匹配到返回0 | 关联表不重复使用,但必须关联,建立关联表冗余,且匹配数据最好是整型如:1,2,3这种 效果类似于字符串分割然后匹配,不适合大数据集搜索 |
| NOW | | | 当前时间 |
| sum | int | | |
| count | int | | |
| max | int | | |
| min | int | | |
| avg | int | | |
mysql数据类型
|---------|---------------------|
| varchar | 最大 255 |
| char | |
| text | 不定长 *无法存储表情 需要改字符集 |
| int | |
| decimal | |
| | |
索引
主键索引
不能重复,不能null,空只能有一个
sql
#添加主键
alter table tab_name add constraint 主键名 primary key(key_field_name);
#删除主键
#有自增时先去除自增
alter table tab_name change key_field_name key_field_name int(11);
alter table tab_name drop primary key;
#创建表时添加主键自增 忽略其他语法
id int(11) auto_increment not null primary key,
外键索引
sql
#添加外键 一张表的外键必须是另外一张表的主键
alter table 外键表 add constraint 外键名 foreign key(外键列名) references 主键表(主键表主键列名);
#删除外键
alter table tab_name drop foreign key 外键名;
普通索引
sql
#创建索引
create index 索引名称 on 表名(列名);
alter table 表名 add index 索引名(列名);
#删除索引 除主键索引无法直接删除 可以删除其他类型的索引
drop index 索引名 on 表名;
alter table 表名 drop index 索引名;
唯一索引
sql
#创建索引
create unique index 索引名 on 表名(列名);
alter table 表名 add unique 索引名(列名);
check约束
sql
#添加
alter table tab_name add constraint 外键名 check(field_name=value or field_name=value);
alter table tab_name add constraint 外键名 check( field_name in(value,...);
非空约束
sql
#修改字段为非空
alter table tab_name change 列名 列名 字段类型 default 默认值 not null;
视图(逻辑表)
sql
#创建视图
create view 视图名 as select_sql;
#查询视图 能正常查询 但不能有改动操作
select * from 视图名 [where_sql];
#修改视图
alter view 视图名 as select_sql;
#删除视图
drop view 视图名;