针对表的SQL语句
有表的前提是先有库
什么是表?
表相当于是文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段。
ps:先有库
select database() 查看当前所在的库
use db1; 选择库
1. 查看表
show tables;
show create table t1; 查看表结构
describe t1; 格式化之后的表结构
desc t1;
2. 创建表
create table t1 (id int(11),name varchar(20),age int);
3. 修改表
alter table t1 rename tt1;
4. 删除表
drop table t1;
针对记录的SQL语句
select、insert、update、delete
1. 查看表中的数据
select * from t1;
select id from t1;
selest id , name from t1;
select id, name, age from t1;
2.增加数据
insert into t1 values(1,'kevin', 18); 单条全字段增加数据
insert into t1 values(2, 'tank', 20), (3,'oscar',21), (4, 'jack', 22); 多条全字段增加数据
insert into t1 (id, name) values(5,'jerry'); 非全字段增加数据
3. 修改数据
update 表名 set 字段名='字段值' where 条件
update t1 set name='kevin' where age=18;
update t1 set name='jack', age=20 where id=1;
update t1 set name='tom', age = 21, k=v, k1=v1 where id = 3;
update t1 set name = 'tank' where id= 2 and age=20;
update t1 set name='aaa'; 全表改,一定不能使用
ps:以后再更新语句的时候,一定别忘了检测更新条件
以后千万要有安全意识
4. 删除数据
delete from t1 where id = 1;
delete from t1 where id=1 and name ='';
存储引擎(存储数据的地方)
存储引擎就是存储数据的地方
MySQL中有哪些存储数据的方式:
show engines
总共支持9种存储引擎,我们需要掌握2种
MyISAM :
它是MySQL5.5及以前版本默认的存储引擎,它的存储速度更快,但是数据相对InnoDB不够安全
InnoDB:
它是MySQL5.6及以前版本默认的存储引擎,它的存储速度相对MyISAM更慢了,但是数据相对MyISAM更加安全
MEMORY(了解):
他的数据是在内存中存着的,内存是基于电工作的,所以断电数据丢失,重启服务端也会丢失数据
验证以上三个存储引擎所产生的文件
create table t2(id int) engine=MyISAM;
create table t3(id int) engine=InnoDB;
create table t4(id int) engine=MEMORY;
MyISAM:
产生三个文件
.frm:这个文件村表结构
.MYD: 这个文件存数据 data
.MYI: 这个文件存数据的索引 index >>> 类似是书的目录 >>> 加快查询速度的
InnoDB
产生两个文件
.frm: 这个文件存表结构
.ibd: 这个文件存数据的索引和数据 index>>> 类似是书的目录 >>> 加快查询速度的
MEMORY
产生一个文件
.frm: 这个文件存表结构
数据存在内存中
数据类型(重要)
1. 整型
tinyint smallint mediumint int bigint
不同的类型存储的范围不一样
存储范围比较
tinyint: 1个字节------>8位------>2 **8----> 256----->0-255----->-128-127
smallint:2个字节----->16位---->2 ** 16 ----> 65536----->0-65535---->-32768-32767
int:4个字节------>32位----->2 ** 32----> 21...---->
bigint:8个字节----->64为----->2 ** 64---->
默认情况整形是否带负号
create table t5(id tinyint);
create table t5(id smallint);
create table t5(id int);
create table t5 (id bigint);
insert into t5 values(999);
insert into t5 values(-129);
得出结论:默认情况整型是带负号的
2. 浮点型(小数)
float double decimal
语法格式
float(255, 30); 255表示的是存储的位数,30代表的是小数位数
double(255, 30); 255表示的是存储的位数,30代表的是小数位数
decimal(65, 30); 65表示的是存储的位数,30代表的是小数位数
decimal(8, 2) 表示的最大范围是 999999.99
这三个有什么区别?
create table t6(id float(255,30));
create table t7(id double(255,30));
create table t8(id decimal(65,30));
插入数据
insert into t6 values(1.1111111111111111);
insert into t7 values(1.1111111111111111);
insert into t8 values(1.1111111111111111);
得出结论:精确度不一样
decimal >>>double>>>float
ps : 以后就使用decimal
要求更高精度就只能使用字符串了
3. 字符串
char(4) varchar(4)
这两个都是用来存储字符串使用的
char(4):他是定长,那么就存4位,如果没有超出4位,空格填充到4位,超出4位,报错或者最大存4位
varchar(4):可变长的,不超出4位,有几位存几位,超出4位,报错或者最大存4位
验证
create table t9(id int, name char(4));
create table t10(id inr,name varchar(4));
insert into t9 values(1,'kevin');
insert into t10 values(1, ''kevin);
如果想要报错,需要设置严格模式
如何查看严格模式
1. select @@sql_mode;
2. show variables like '%mode%' 模糊查询,变量中带有mode的
设置严格模式
1. 永久修改:需要改配置文件
2. 临时修改:
set global sql_mode= 'STRICT_TRANS_TABLES, PAD_CHAR_TO_FULL_LENGTH';
研究定长和可变长
insert into t9 values(2, 'k');
insert into t10 values(2, 'k');
验证存储的长度
select char_length(name) from t9;
select char_length(name) from t10;
以后大多数情况下用的都是varchar,如果你的存储数据就是固定的。就用char
4. 日期类型
datetime date time year
年月日 时分秒 年月日 时分秒 年份
create table t14 (id int,reg_time datetime, update_time date, delete_time time, bieth year);
insert into t14 values(1,'2023-10-01 11:11:11', '2023-07-10', '11:11:11', '2023');
5. 枚举类型
enum:多选一(没有填enum后面的就报错)
create table t15 (id int, hobby enum('tangtou', 'xijiao', 'spa', 'hejiu'));
insert into t15 values(1, 'tangtou');
set:多选多
create table t16 (id int, hobby set('tangtou', 'xijiao', 'spa', 'hejiu'));
整型中的数字代表的是什么意思
char(4)
varchar(4) 括号里的数字代表的就是存储的长度
int
tinyint
smallint
整型的存储范围跟括号中的数字没有关系
整型的存储范围完全是跟关键字相关,int, smallint
create table t11(id int(3));
insert into t12 values(99999);
整形中括号中的数字代表的是数据展示的位数
create table t12 (id int(3) zerofill); zerofill:用0填充
insert into t12 values(9);
create table t13 (id int(11) zerofill);
insert into t13 values(9);
创建表的完整语法结构
create table 表名(
字段名1 数据类型 约束条件 约束条件 约束条件,
字段名2 数据类型 约束条件 约束条件 约束条件,
字段名3 数据类型 约束条件 约束条件 约束条件,
字段名4 数据类型 约束条件 约束条件 约束条件,
字段名5 数据类型 约束条件 约束条件 约束条件,
);
create table t17(id int, name varchar(16), age int);
注意事项
1. 字段名和数据类型是必须要写的
2. 约束条件是可选的,有就写,没有就不写
3. 最后一个字段的末尾不能加逗号
标签:insert,python,create,基础,id,int,table,t1,day42 From: https://www.cnblogs.com/zfq132/p/17545197.html