数据库基本命令
1. 对库的增删改查
1. 增加一个库 creatr database db1; # 后面是库的名字 show databases; # 查看所有库 show creatr database db1; # 查看库的结构 alter database db1 charset = 'utf8'; # 修改字符编码 drop database db1; # 删除一个库 use db1; # 切换数据库
2. 对表的增删改查
1. 添加一张表 create table t1(id int,name varchar(16,age int));
添加字段
alter table t1 add 字段名 数据类型 约束条件;
alter table t1 add 字段名 数据类型 约束条件 first; 添加在第一条
alter table t1 add 字段名 数据类型 约束条件 after aaa; # 指定往那个字段后面添加
查 dsec t1; # 查看表具体信息
show create table t1; # 查看表的结构 select * from t1; # *代表是字段 也可以是具体字段 t1 代表的是表名 # 改 modify只能改字段数据类型完整约束,不能改字段名,但是change可 aiter table t1 rename t2; # 修改表名
alter table t1 modify 字段名 数据类型 约束条件; # 只能修改数据类型
alter table t1 change 旧字段名 新字段名 旧字段类型 约束条件;
# change 只能修改字段名 数据类型也必须只能修改同类型的 比如 char(12) 可以改为 char(32),但是不能修改其他类型
比如 char(13) 改为 int 类型,因为原有数据不符和
删 drop table t2; # 删除一张表
alter table t2 drop 字段名; # 删除指定字段
创建表的完整语法
create table 库名.表名(
字段名1 数据类型 约束条件 约束条件 约束条件 约束条件,
字段名2 数据类型 约束条件 约束条件 约束条件 约束条件,
字段名3 数据类型 约束条件 约束条件 约束条件 约束条件,
字段名4 数据类型 约束条件 约束条件 约束条件 约束条件
)
创建表的注意事项
insert into 库名.t1 values('1', 2, 3, 4, 5, 6);
1. 字段名和数据类型必须写的,不能省略
2. 约束条件是可选的,可有可无,而且可有有多个
3. 表结构中最后一个字段不能有逗号
清空表的两种方式
1 delete from t; # 这种方式不会清除id
2 truncate t; # 清空表并且重置id
"""truncate:建议使用truncate,使用这个,万一你清空错了,还有机会恢复"""
mysql它有很多个日志文件,binlog日志-----》可以恢复数据,记录了你所有的SQL语句
3. 记录的增删改查
查 select * from t1; *代表查看全部 也可以是某个字段 t1是表名 select id from t1; 查看具体字段信息 select * from t1 where id=1; # where是筛选条件 查看具体的某条记录 增 insert into t1(id,name) values(1,'huang'); # 添加一条记录 insert into t1(name) values('huang'); # 需要添加那个字段 需要和后面对应 insert into t1 values(3,'json'); # 不指定字段就是全字段添加 改 update t1 set name='lu' where id=4; # 把name字段改为 lu 后面是筛选条件 如果不加筛选条件 代表所有!!!!!!!! update t1 set id='5',name='shun' where id=1; # 修改一条记录的多个信息 update t1 set name='oscar' where name='tank' and age=30; # 增加筛选条件 update t1 set name='oscar' where name='kevin3' or name='kevin4'; 删除 delete from t1 where id=1; delete from t1 where id=2 or id=7; delete from t1; # 这是清空表 # 不加筛选条件默认是所有
4. 配置文件的使用
"""mysql的配置文件是:my-default.ini""" # 修改了配置文件,一定别忘了重启服务端才能生效 """把一下内容加到配置文件中""" [mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] default-character-set=utf8
5. 存储引擎的使用
"""存储引擎就是存储数据的方式!""" MySQL支持多少种存储引擎方式 1. 如何查看存储引擎 show engines; """一共九种存储引擎,重点学习:MyISAM MEMORY InnoDB""" MyISAM: 它是MySQL5.5版本及之前的版本默认的存储引擎、它的读取速度很快相比较与InnoDB,但是它的数据安全性较低,相对于InnoDB存储引擎 """不支持事务、支持的是表锁""" InnoDB: 它是MySQL5.6及之后的版本默认的存储引擎、它的读取速度相对慢一些,但是数据的安全性较高一些 """它支持:事务、行锁、外键""" MEMORY: 它是基于内存存储的,意味着断电数据丢失、重启服务端数据就丢失 """ 对于不同的存储引擎,硬盘中保存的文件个数也是不一样的 MyISAM:3个文件 .frm 存储表结构 .MYD 存储的是表数据 .MYI 存索引(当成是字典的目录,加快查询速度) InnoDB:2个文件 .frm 存储表结构 .ibd 存储数据和索引 MEMORY:1个文件 .frm 存储表结构 """
6 数据类型
1. 整形: 有四种 tinyint smallint int bigint # 不同的数据类型区别就是所存储的范围不一样 tinyint: 它是使用一个字节来保存数据,一个字节代表8位 11111111--->256种情况(0-255) (-128-127) smallint:2个字节, 代表16位, 65536(0-65535) (-32768-32767) int: 4个字节,2**32=42....(-21...- 21...) bigint:8个字节(最大的) 可以存手机号(11) ## 整型默认情况下带不带符号? create table t5 (id tinyint); insert into t5 values(256); 结论是:带符号的,所有的整型默认都是带符号的 减半 # 怎么样去掉符号 create table t6 (id tinyint unsigned); ================================================= 2. 浮点型 有三种 float double decimal price decimal(8,2) # 999.99 # price:1000 float(255, 30) # 总位数是255位、小数点后60位 double(255, 30) # 总位数是255位、小数点后60位 decimal(65, 30) # 总位数是255位、小数点后60位 """他们三个区别是什么呢?""" create table t7 (id float(255, 30)); create table t8 (id double(255, 30)); create table t9 (id decimal(65, 30)); """结论:三者的精确度不一样:decimal >>> double >>> float(精确到7位了)""" # 以后到底是选哪个更好呢 """就我多年的经验来看,大家都选decimal"" ================================================= 3. 字符串类型有两种 varchar char char(4): 定长类型,超出4位,就报错,不够4位,使用空格填充 varchar(4): 可变长类型,超出4位,报错,不够4位的,有几位存几位 abc a # 区别是什么呢? 如果是存固定长度的 适用char 因为更节省内存空间 """默认情况下,没有对char类型填充空格,如果想看填充了空格,需要设置严格模式""" ## 验证是否补充了空格 查看记录长度 select char_length(name) from t12; select char_length(name) from t13; # 设置严格模式 1. 命令行模式:临时修改 set global sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH'; # 不区分大小写 ================================================= 4. 日期类型有四种: date datatime time year 年月日 年月日时分秒 时分秒 年 四种格式显示如下: create table t14 ( id int, reg_time date, reg1_time datetime, reg2_time time, reg3_time year ); insert into t14 values(1, '2023-10-1', '2023-11-11 11:11:11', '11:11:11', 2023); ================================================= 5. 枚举类型: # 多选一 enum create table t15 (id int, hobby enum('read', 'music', 'tangtou', 'xijio')); insert into t15 values(1, 'read'); # 多选多:包含多选一 set create table t16 (id int, hobby set('read', 'music', 'tangtou', 'xijio')); insert into t16 values(2, 'read,music1');