1-2.sql基本语句
库 操作
#增
create database 数据库名;
create database db01;
#删
drop database 数据库名;
drop database db01;
#查
show databases; #查看全部数据库
show create database 数据库名; #查看单个数据库
show create database db01;
#改
alter database 数据库名 charset='字符编码';
alter database db01 charset='utf8';
表 操作
表的基本操作
#切换数据库
use 数据库名;
#查看当前所在库
select database();
#增
create table 表名(字段名 字段类型);
create table 表名(字段名 字段类型),(字段名 字段类型);
#至少要有一个字段名和字段类型多个用逗号隔开
create table t01(id int),(name char);
#删
drop table 表名;
drop table t01;
#查
show tables; #查看当前数据库的所有表;
show create table 表名;#查看建表语句
show create table t1;
describe 表名; #查看表结构 可以缩写成desc
desc t1;
#改
# 1.修改表名称
alter table 表名 rename 新表名;
alter table t1 rename table01;
表结构字段修改
# 1.修改表名称
alter table t1 rename t2;
rename table t1 to t123; # 关键字修改
rename table t2 to t20,
t3 to t30,
t4 to t40;
#2.添加表字段
add
alter table t9 add pwd int;
alter table t9 add hobby varchar(32) after age; #在age字段之后添加
alter table t9 add uid int first; #添加为第一个
# 3.删除表字段
alter table t9 drop name;
# 4.修改字段名和字段类型
modify #modify 只能修改字段类型
alter table t9 modify age varchar(3);
change # change能修改字段名和类型
alter table t9 pwd password int ;
复制表
了解即可
# 查询语句执行的结果也是一张表,可以看成虚拟表
# 复制表结构+记录 (key不会复制: 主键、外键和索引)
create table 新表名 select * from 被复制的表名;
# 只拷贝表结构(不包含键)条件不成立查不到数据
create table 新表名 select * from 被复制的表名 where 1=2;
# 拷贝结构包含各种key
create table 新表名 like 被复制的表名;
记录 操作
#操作记录之前肯定得先有库和表
#增
insert into 表名 values('按照字段的顺序写值逗号隔开');
insert into t2 values (1,'tom'),(2,'jack'),(3,'tony');
# 删
delete from 表名 where 字段名=存在的值; # where筛选条件
delete from t2 where id=2;
#查
select * from 表名;# 查询所有字段数据
select 字段名1,字段名2 from 表名; # 也可以通过库名.表名跨库
#如果字段过多导致展示错乱 还可以使用\G结尾分行展示
select * from t2;
select name from t2;
# 改
update 表名 set 字段名=新值 where 字段名=存在的值
update t2 set name='liming' where id=1;
创建表的完整语法
create table 表名(
字段名1 字段类型(数字) 约束条件,
字段名2 字段类型(数字) 约束条件,
字段名3 字段类型(数字) 约束条件
);
# 注意事项
1.字段名和字段类型是必须的 数字和约束条件是可选
2.约束条件可以有多个
3.最后一个字段结尾不能有逗号(不容易发现)
SQL_MODE
# 1.模糊查询
show variables like '%mode%';
# 2.修改修改
set session
set global
直接修改配置文件
sql_mode = 'strict_trans_tables'
存储引擎
"""
简单的理解为:存储引擎就是处理数据底层逻辑 不同的引擎底层处理方式有所不同
"""
# 如何查看存储引擎信息
show engines;
# 需要掌握的有四个
MyISAM
是MySQL5.5版本之前默认的存储引擎
该引擎存取数据的速度都很快
但是安全性较低 不支持很多额外的功能
InnoDB
是MySQL5.5版本之后默认的存储引擎
该引擎支持事务、行级锁、外键
存取数据的速度没有MyISAM快但是功能和安全性更高
memory
数据全部存储在内存中 速度很快但是断电立刻丢失
blackhole
黑洞 任何放入其中的数据都会消失(类似于垃圾处理站)
# 比较存储引擎之间的差异
'''创建表可以指定存储引擎
create table t1(id int) engine=存储引擎;
'''
create table t2(id int) engine=MyISAM;
create table t3(id int) engine=InnoDB;
create table t4(id int) engine=memory;
create table t5(id int) engine=blackhole;
# 不同存储引擎文件后缀名
MyISAM
三个文件
.frm 表结构
.MYD 表数据
.MYI 表索引
InnoDB
两个文件
.frm 表结构
.ibd 数据与索引
memory
.frm 表结构
blackhole
.frm 表结构