mysql开始
1.mysql引言
-电脑(服务器 要求性能比较高)
-文件夹 数据库 (多个)
- user.txt 文件(多个)
id|name|pwd 字段
1,xxx,123 数据(记录)
2,ooo,321
-school.txt
client server
单机程序
mysql软件来管理你的数据库文件
它其实是基于socket客户端和服务端的一个软件
--- mysql服务端
-- socket服务端 (开启)
-- 解析指令
-- 根据指令执行文件操作
--- mysql客户端
-- socket客户端 (连接)
-- 发送指令操作(mysql语句)
-- 解析指令
接下来要做什么事情?
1.下载mysql
2.安装mysql服务端
3.客户端连接服务端
4.学习sql语法规则****
局域网下的程序
user
{
id:1,
name:'alex',
age:18
}
mysql的安装
1.解压目录
2.添加环境变量
系统的环境变量
3.初始化
mysqld --initialize-insecure
4.启动服务端
mysqld 直接启动 这个时候 吼住
5.连接服务端
mysql -uroot -p
查看当前进程的pid号:
tasklist |findstr mysql
杀死进程:
taskkill /F /PID mysql
6.制作windows服务 一定要以管理员身份运行
安装windows服务:mysqld --install
卸载windows服务: mysqld --remove
命令启动服务:net start mysql
命令关闭服务:net stop mysql
查看所有的数据库
show database;
使用数据库
use 数据库的名字
查看所有的表:
show tables;
7.统一字符编码
1.在C:mysql-5.7.23-winx64mysql-5.7.23-winx64当前的目录下 新建一个my.int
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:mysql-5.7.23-winx64mysql-5.7.23-winx64 # 这个目录一定是自己电脑上的安装mysql目录
# 设置mysql数据库的数据的存放目录
datadir=C:mysql-5.7.23-winx64mysql-5.7.23-winx64data # 这个目录一定是自己电脑上的安装mysql数据目录
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
2.net stop mysql
再开启 让my.ini文件配置生效
net start mysql
3.mysql -uroot -p
执行 s; 查看数据库配置
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
8.破解密码
(1)以管理员身份 打开cmd 停掉服务端 net stop mysql
(2)开启服务端 并跳过所有的授权表
mysqld --skip-grant-tables
(3)客户端连接服务端
mysql -uroot -p
(4)修改密码:update mysql.user set authentication_string =password('') where User='root';
(5)刷新权限 flush privileges;
9.初学sql
创建数据库:create database db1;
使用数据库:use db1;
创建表:
create table user(id int,name char(8));
查看表结构:
desc user;
插入一条数据:
insert into user(id,name) values (1,'alex');
查询记录:
select name from user;
初始mysql语句
mysql的基本语法
操作文件夹(库)
增
create database db1 charset utf8;
查
# 查看当前创建的数据库 show create database db1; # 查看所有的数据库 show databases;
改
alter database db1 charset gbk;
删
drop database db1;
操作文件(表)
use db1; #切换文件夹 select database(); #查看当前所在文件夹
增
create table t1(id int,name char);
语法:
create table 表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件] ); #注意: 1. 在同一张表中,字段名是不能相同 2. 宽度和约束条件可选 3. 字段名和类型是必须的
查
#查看当前的这张t1表 show create table t1; # 查看所有的表 show tables; # 查看表的详细信息 desc t1;
改
# modify修改的意思 alter table t1 modify name char(6); # 改变name为大写的NAME alter table t1 change name NAMA char(7);
删
# 删除表 drop table t1;
操作文件内容(记录)
增
# 插入一条数据,规定id,name数据leilei insert t1(id,name) values(1,"mjj01"),(2,"mjj02"),(3,"mjj03");
查
select id from db1.t1; select id,name from db1.t1; select * from db1.t1;
改
update db1.t1 set name='zhangsan'; update db1.t1 set name='alex' where id=2;
删
delete from t1; delete from t1 where id=2;
mysql: 基于socket的一个C/S架构的软件
设置utf8的编码:
my.ini(如果修改了配置,一定要重启mysql服务端)
破解密码:
(1) 先把之前的mysql服务端关闭
(2) 再次开启mysql服务端同时 mysqld --skip-grant
(3) 客户端 连接服务端
(4) 修改密码 update mysql.user .... where user = 'root'
(5) 刷新权限 flush privileges
(6) 查看进程 tasklist |findstr mysql
(7) 杀死进程 taskkill /F /PID 进程号
(8) net start mysql 开启mysql的服务端
基本常用的mysql语句:
数据库的创建
create database db1;
使用数据库
use db1;
创建表:
create table t1(id int,name char(10));
插入数据:
insert into t1(id,name) values (1,'alex'),(2,'wusir');
查询:
select * from t1;
今日内容:
1.存储引擎
innodb
myisam
memory
blackhole
2.数据类型
mysql强类型的语言
整型:
(1)tinyint 默认是有符号的 范围:-128~127
create table t1(x tinyint unsigned); # 0~255
(2)int
验证 显示宽度
zerofill:宽度不够 用0填充
create table t2(x int(10) unsigned zerofill);
insert into t2 values(20);
select * from t2;
x
0000000020
当定义数值的类型 不用指定显示宽度 用它默认的.
除了int等指的显示宽度 ,其它的类型都表示存储宽度
小数:
float(255,30) 255:表示的是总长 30:小数点后位数
单精度 随着小数位数的增多 也不准确
double(255,30)
双精度 随着小数位数的增多 也不准确 但是要比单精度准确
decimal(65,30)
精度 准确的小数
字符:
char: 定长 存储速度快 浪费空间
让char类型显示 字符的长度: SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
varchar: 变长 存储速度慢 节省空间
text : 文本
时间:
datetime **** 年月日时分秒
year
date
time
枚举:
enum
集合:
set
create table user(
id int,
name char(10),
sex enum('male','female','other'),# 多选一
level enum('vip1','svip','vvip'), # 多选一
fav set('抽烟','喝酒','烫头') # 多选多
);
额外函数:now() length() 获取字节的长度 char_length:获取字符的长度
3.完整性约束(字段) 用于保证数据的完整性和一致性
not null (不能为空)与 default null
create table t1(id int not null default 2);
# 如果约束了 not null 并且设置default值 那么插入空值 是默认的值
unique (唯一的)
单列唯一
create table dep(
id int,
name char(8) unique
);
联合唯一
create table dep2(
id int unique,
name char(6) unique
);
create table dep2(
id int,
name char(6),
unique(id),
unique(name)
);
组合唯一
create table dep3(
id int,
name char(6),
unique(id,name)
);
primary (主键)
5.5 版本的以上 至少有一个主键 通常一张表中有一个主键 一般这个主键是id int
# 单列的主键
create table t3(
id int primary key,
name char(6) not null
);
# 多列的主键 ****** 这个地方有坑
create table t4(
id int ,
name char(6),
primary key(id),
primary key(name)
);
#复合主键
create table t5(
id int,
name char(6),
primary key(id,name)
);
# not null +unique 等价于 primary key
create table t4(
id int not null unique,
name char(6) not null
);
auto_increment (自增长)
约束的字段为自动增长,约束的字段必须同时被key约束
create table t6(
id int primary key auto_increment,
name char(10) not null
);
foreign key (外键)
# 1.先创建被关联表(主表)
create table dep(
id int primary key auto_increment,
name varchar(10) not null,
descripe varchar(40) not null
);
# 2.再创建 关联表(从表)
create table emp(
id int primary key auto_increment,
name varchar(10) not null,
age int not null,
dep_id int,
test_id int,
constraint fk_dep foreign key(dep_id) references dep(id)
on delete cascade
on update cascade,
constraint fk_dep foreign key(test_id) references test(id)
on delete cascade
on update cascade,
);
insert into emp values
(1,'zhangsan',18,1),
(2,'lisi',19,1),
(3,'egon',20,2),
(4,'alex',18,2);