mysql

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);

原文地址:https://www.cnblogs.com/zhaosijia/p/9555879.html