目录
一、基础知识点
-
数据库的由来:数据库本质上是基于网络通信的应用程序;使用数据库是为了统一标准,方便多人操作数据。
-
数据库的基本概念:
库 对应为文件夹
表 对应为文件
数据 对应为文件中的数据
ps:表中的数据分为表头和字段 其中,表头就是指表的第一行数据,字段分为字段名和字段类型
-
客户端连接服务端完整命令 mysql -h 127.0.0.1 -P 3306 -uroot -p
-
简化使用
在安装完MySQL之后,可以直接从dos窗口使用MySQL,但是每次都需要切换窗口到安装目录bin目录下,较为麻烦,所以将mysqld所在的文件路径添加到系统变量中。
这样每次使用MySQL时仍然需要调起两个窗口,也较为繁琐,所以将mysqld设置为系统服务并让其开机自启。
-
数据库的基本使用代码
show databases; 查看当前数据库
select database(); 查看当前所在库的名字
use d1; 选用d1数据库
mysql -uroot -p 连接服务端的命令简写
二、设置密码/修改密码
""" mysqladmin -uroot -p原密码 password 新密码 改命令直接在终端输入即可 无序进入客户端 mysqladmin -uroot -p123 password 123456 """
三、破解密码
""" 在MySQL中,用户名和密码的功能类似与装饰器 如果在登录时可以绕过装饰器,那么就可以直接进如mysql中更改用户名和密码 """ # 1 先关闭当前mysql服务端 命令行的方式启动(让mysql跳过用户名密码验证功能) mysqld --skip-grant-tables # 2 直接以无密码的方式连接 mysql -uroot -p 直接回车 # 3 修改当前用户的密码 update mysql.user set password=password(123456) where user='root' and host='localhost'; """ 在实际的使用中,都是使用加密的文字存储,更加安全,密码的比对也是根据密文的比对 """ # 4 立刻将修改数据刷到硬盘 flush privileges; # 5 关闭当前服务端 然后以正常校验授权表的形式启动
四、统一编码
-
mysql默认的配置文件
""" my-default.ini ini结尾的一般都是配置文件 程序启动会先加载配置文件中的配置之后才真正的启动 """ [mysqld] # 一旦服务端启动立刻加载下面的配置 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysql] # 一旦客户端启动立刻加载下面的配置 ... [client] # 其他客户端 ... # 需要你自己新建一个my.ini的配置文件 # 验证配置是否真的是自动加载 [mysql] print('hello world') # 修改配置文件后一定要重启服务才能生效 # 统一编码的配置 无需掌握 直接拷贝即可 # 偷懒 将管理员的用户名和密码也添加到配置文件中 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] user="root" password=123456 default-character-set=utf8
五、数据库的增删改查
""" 增 create database d1 (charset='gbk'); 删 drop database d1; 改 alter database d1 charset='utf8'; 查 show databases; show create database d1; """
六、表的增删改查
""" 在操作表(文件)的时候 需要指定所在的库(文件夹) """ # 查看当前所在的库的名字 select database(); # 切换库 use db1; """ 增 create table t1 (name char(11),id int(11)); 删 drop table t1; 查 show tables; show create table t1; describe t1; # 简写为desc t1 改 alter table t1 modify name char(16); """
七、针对数据的增删改查
# 一定要先有库 有表 最后才能操作记录 """ 增 insert into t1 values('teddy',1101); insert into t1 valuse('alen',1102),('bob',1103),('cat',1104); 插入数据数据时可以指定数据的字段,比如: insert into t2(id,name) values(1101,'teddy') 删 delete from t1 where id > 1; delete from t1 where id = "cat"; 查 select * from t1; select name from t1; 改 update t1 set name = "good" where name = 'teddy'; """
八、MySQL的存储引擎
""" innodb MySQL5.5之后的默认存储引擎,数据存储更加安全 myisam 数据存储更快,但是没有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; # 存数据 insert into t1 values(1); insert into t2 values(1); insert into t3 values(1); insert into t4 values(1); """
九、创建表的完整语句
# 语法 create table 表名( 字段名1 类型(宽度) 约束条件, 字段名2 类型(宽度) 约束条件, 字段名3 类型(宽度) 约束条件 ) # 注意 1 在同一张表中字段名不能重复 2 宽度和约束条件是可选的(可写可不写) 而字段名和字段类型是必须的 约束条件写的话 也支持写多个 字段名1 类型(宽度) 约束条件1 约束条件2..., create table t5(id); 报错 3 最后一行不能有逗号 create table t6( id int, name char, ); 报错 # 补充 # 1、 宽度 一般情况下指的是对存储数据的限制 create table t7(name char); 默认宽度是1 insert into t7 values('teddy'); insert into t7 values(null); 关键字NULL 针对不同的版本会出现不同的效果 5.6版本默认没有开启严格模式 规定只能存一个字符你给了多个字符,会自动帮你截取 5.7版本及以上或者开启了严格模式 那么规定只能存几个 就不能超,一旦超出范围立刻报错 Data too long for .... # 2、严格模式到底开不开呢? MySQL5.7之后的版本默认都是开启严格模式的 使用数据库的准则: 能尽量少的让数据库干活就尽量少 不要给数据库增加额外的压力 # 约束条件 null not null不能插入null create table t8(id int,name char not null); # 3、宽度和约束条件到底是什么关系 宽度是用来限制数据的存储 约束条件是在宽度的基础之上增加的额外的约束 # 4、如何查看严格模式 show variables like "%mode"; 注:模糊匹配/查询 关键字 like: %:匹配任意多个字符 _:匹配任意单个字符 # 5、如何修改严格模式 set session 只在当前窗口有效 set global 全局有效 set global sql_mode = 'STRICT_TRANS_TABLES' 修改完成后,重启进入客户端即可
十、基本数据类型
整型
-
分类(区别在于存储的大小/位数)
-
tinyint
-
smallint
-
mediumint
-
int
-
bigint
浮点型
-
分类
# 存储限制 float(255,30) # 总共255位 小数部分占30位 double(255,30) # 总共255位 小数部分占30位 decimal(65,30) # 总共65位 小数部分占30位 # 精确度 | id | id | id | +----------------------------------+----------------------------------+----------------------------------+ | 1.111111164093017600000000000000 | 1.111111111111111200000000000000 | 1.111111111111111111111111111111
字符类型
-
char(浪费空间,但是取用较为简单)
定长,不够空格补全,超过直接报错
# 可以用char_lenth来统计字段的长度 # example:select char_length(name) from t18; # MySQL在存入数据时会将空格存入,但是在取出数据并显示时,会直接将数据中的空格删除显示。 # 修改sql_mode 让MySQL不要做自动删除操作 set global sql_mode = 'STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH';
-
varchar(节省空间,但是取用较为麻烦)
变长,不够有几个存几个,超过直接报错
注:在实际使用时,一般公司会直接注明使用的字段类型和字段名
时间类型
-
date:年月日/2022-8-1
-
datetime:年月日时分秒/2022 8-1 11:11:11
-
time:时分秒/11:11:11
-
year:年/2022
枚举和集合类型
-
枚举:enum(多选一)
gender enum('male','female','others') default='male';
-
集合:set(多选多)
hobby set('read','DBJ','hecha');
约束条件总结:
-
not null
-
zerofill
-
unsigned
部分知识点来源于网络,如有侵权请联系删除!