一、数据库
1.数据库的创建 :create database 数据库名(在创建之前要查看数据库中是否已存在,已存在的数据库无法创建)
2.查询所有数据库 :show databases
3.打开数据库 :use 数据库名
二、数据表
1.数据表的创建:
- create table 表名(列名 类型 是否可以为空,列名 类型 是否可以为空......)
- create table 表名(列名 类型 是否可以为空 默认值 自增 主键 外键,列名 类型 是否可以为空 默认值 自增 主键 外键......)
默认值:default 2 默认值为2
自增:auto_increment / auto_increment primary key 自增列的值自动增长,无需设定
自增列必须是索引(含主键),自增可以设置步长和起始值
show session variables like 'auto_inc%';
set session auto_increment_increment=2;
set session auto_increment_offset=10;
shwo global variables like 'auto_inc%';
set global auto_increment_increment=2;
set global auto_increment_offset=10;
主键:唯一,不能为空的特殊索引,如果主键为单一列,值必须唯一,如果是多列组合主键,则组合必须唯一
create table tb1(
nid int not null auto_increment primary key,
num int null
)
或
create table tb1(
nid int not null,
num int not null,
primary key(nid,num)
)
外键:一个特殊的索引,只能是指定内容,外键的reference(参考)必须是另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。
creat table color(
nid int not null primary key,
name char(16) not null
)
create table fruit(
nid int not null primary key,
smt char(32) null ,
color_id int not null,
constraint fk_cc foreign key (color_id) references color(nid)
)
2.删除数据表 :drop table 表名
3.清空数据表:
- delete from 表名
- truncate table 表名
4.修改数据表: alter table 表名。。。
- 添加列:alter table 表名 add 列名 类型
- 删除列:alter table 表名 delete 列名
- 修改列:
alter table 表名 modify column 列名 类型;(列名)
alter table 表名 change 原列名 新列名 类型;(列名,类型)
- 添加主键:alter table 表名 add primary key(列名);
- 删除主键:
alter table 表名 drop primary key;
alter table 表名 modify 列名 int, drop primary key;
- 添加外键:alter table 表名 add constraint 外键名称(形如:FK_从表_主表)foreign key 从表(外键字段)reference 主表 (主键字段);
- 删除外键:alter table 表名 drop foreign key 外键名称
- 修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
- 删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
三、数据库和表内容的操作
1.增
- insert into 表 (列名,列名)values (值,值);
- insert into 表 (列名,列名)values (值,值),(值,值);
- insert into 表 (列名,列名)select (列名,列名)from 表 ;
2.删
- delete form 表
- delete form 表 where id=1 and name=“Alex”
3.改
- update 表 set name =“Alex” where id>1;
4.查
- 普通查询
- select * from 表
- select * from 表 where id > 1
- select id,name,gender as gg from 表 where id > 1
- 条件查询
- 限制查询
- 数据(排序)查询
- select * from 表 order by 列 asc 根据“列”从小到大排序
- select * from 表 order by 列 desc 根据“列”从大到小排序
- select * form 表 order by 列1 desc,列2 asc 根据列1从大到小排序,如果相同则按列2从小到大排序
- 模糊查询
- select * form 表 where name like ‘%ale’; ale开头的所有(多个字符串)
- select * form 表 where name like ‘ale_’; ale开头的所有(1个字符)
- 聚集函数查询
- 分组查询
- select num from 表 group by num
- select id,num from 表 group by id,num
- select id,num from 表 where id>10 group by id,name order by id asc
- select id,num,count(*) ,sum(score),max(score),min(score) from 表 group by id,num
- select num from 表 group by num having max(id)>10
group必须在where之后,order之前
- 多表查询
- 链表
无对应关系则不显示
select A.num, A.name, B.name
from A,B
Where A.nid = B.nid
无对应关系则不显示
select A.num, A.name, B.name
from A inner join B
on A.nid = B.nid
A表所有显示,如果B中无对应关系,则值为null
select A.num, A.name, B.name
from A left join B
on A.nid = B.nid
B表所有显示,如果B中无对应关系,则值为null
select A.num, A.name, B.name
from A right join B
on A.nid = B.nid
- 组合
组合,自动处理重合
select nickname
from A
union
select name
from B
组合,不处理重合
select nickname
from A
union all
select name
from B