MySQL基本sql语句01
MySQL基本sql语句
ps:大部分程序的业务逻辑都是增删改查
针对库的增删改查(文件夹)
#增
create database db1 #之前设置过了,默认 是utf8
create database db1 charset='gbk' #额外指定文件格式
#查
show databases; #查所有
show create database db1 #查单个
#改
alter database db1 charset='utf8'
#删
drop database db1
针对表的增删改查(文件)
"""
在操作表(文件)的时候,需要指定所在库(文件夹)
"""
#查看当前所在库
select database();
#切换库
use db1
#增
create table t1(id int,name char(4)); #char可以限制字段4表示一次只能传4个字段
#查
show tables #查看单前库下面所有的表名
show create table t1;
descrip t1; #支持简写 desc t1
#改
alter table t1 modify name char(16); #modify 改
#删
drop table t1;
"""
creat table db1.t1(id int); 也可以用绝对路径的形式操作不同的库里的表
"""
针对数据的增删改查
#增
insert into t1 values(1,'jason');单条数据
insert into t1 values(1,'jsaon'),(2,'egon'); 逗号是多条的意思
#查
select * from t1;#该命令当数据量特别大的时候不建议使用
select id,name from t1;
#改
update t1 set name='DSB' where id > 1 #改从id大于1的地方开始改
#删
delete from t1 where id > 1; #将id大于1的数据都删除
#将表所有的数据清空
delete from t1;
存储引擎
MySQL主要存储引擎
innodb
是MySQL5.5版本之后默认的存储引擎
存储数据更加安全
myisam
是MySQL5.5版本之前默认的存储引擎
速度比innodb快,但是安全更重要
memory
内存引擎(数据全部存放在内存中)断电就消失
blackhole
无论存什么,都立刻消失
"""
#查看所有的数据库存储引擎
show engines;
#不同的存储引擎在存储表的时候的 异同点
create table t1(id int) engine=innodb;
create table t2(id int) engine=myisam;
create table t3(id int) engine=blackhole;
create table t4(id int) engine=memory;
"""
创建表的完整语法
#语法
create table 表名(
字段名1 类型(宽度) 约束条件,
字段名2 类型(宽度) 约束条件 #这里最后一行不能加逗号
);
注意
1、在同一张表中字段名不能重复
2、宽度和约束条件是可选的,字段名和字段类型是必须要写的
约束条件可以写多个
3、最后一行不能加逗号
#宽度
一般情况下是对存储数据的限制
5.6版本下,如果输入字符超过数据宽度(类型里的宽度),数据库会自动截取数据
5.7版本后,则会报错
#约束条件 null,not null
基本数据类型
整型
-
分类
TINYINT ,SMALLINT ,MEDIUMINT ,INT ,BIGINT
-
作用
存储年龄、等级、id、号码。。。
"""
以TINYINT存储 书写时一般用小写tinyint
是否有符号
默认情况下是带符号的
超出会如何
超出限制只存最大可接受值
"""
#约束条件之unsigned 无符号
create table t5(id tinyint unsigned);
#int也是带符号的
#整型默认情况都是带符号的
#针对整型,宽度到底是干嘛的
create table t12(id int(8));
insert into t12 values(123456789);
"""
特例:只有整型括号内里面的数字不是表示限制位数
id int(8)
如果数字没有超出8位,那么默认用空格填充到8位
如果数字超出8位,那么有几位就存几位(前提是遵守最大值)
"""
#用0填充到8位 zerofill
create table t12(id int(8) unsigned zerofill);
总结:针对整型字段括号内无需指定宽度,因为它默认的宽度已经足够显示所有数据了。
严格模式
#如何查看严格模式
show variables like "%mode";
模糊查询
关键字:like
%:匹配任意多个字符
_:匹配任意单个字符
#修改严格模式
set session 只在当前窗口有效
set global 全局有效
set global sql_mode = 'STRICT_TRANS_TABLES';
浮点型
-
分类
FLOAT、DOUBLE、DECIMAL
-
作用
身高、体重。。。
#存储限制
float(255,30) #总共255位,小数部分占30位
double(255,30) #总共255位,小数部分占30位
decimal(65,30) #总共65位,小数部分占30位
#精确度不同
create table t1(id float(255,30)); 小数点后的精确位数
create table t2(id double(255,30));
create table t3(id decimal(65,30));
float<double<decimal
字符类型
-
分类
"""
char
定长
char(4)超过4个字符直接报错,不够4个字符空格补全
varchar
变长
varchar(4)超过4个字符直接报错,不够的话有几个存几个
"""
char_length统计字段的长度
select char_length(name) from t1
char与varchar对比
"""
char
缺点:浪费空间
优点:存取都很简单,直接按照固定字符存取数据即可
存取都是规定的字符数
varchar
优点:节省空间
缺点:取比较麻烦 因为数据长度不确定
"""
时间类型
-
分类
date:年月日 2020-5-4
datetime:年月日时分秒 2020-5-4 11:11:11
time:时分秒
Year:年
create table student(id int,name char(4),born_year year,birth date,study_time time,reg_time datetime);
insert into student values(1,'egon','1880','1880-11-11','11:11:11','2020-11-11 11:11:11');
枚举与集合类型
-
分类
"""
枚举(enumerate) 多选一
集合(set) 多选多
"""
-
具体使用
#枚举字段,后期在存数据的时候只能从枚举里面选择一个存储
#集合可以只写一个,但是不能选没有列举的 -
-
浙公网安备 33010602011771号