什么是数据库?
存储数据的仓库
MySQL
MySQL就是帮我来操作文件的
MySQL :是用于管理文件的一个软件(包括两个软件)
- 服务端的软件
-socket服务端
-本地文件操作
-解析指令 【SQL语句】
- 客户端软件
-socket客户端
-发送指令
-解析指令 【SQL语句】
文件夹【数据库】
文件【表】
数据行【行】
数据行
连接:
show databases; # 列出所有数据库
use 数据库名称; 切换数据库
show tables; 查看数据库里的所有文件
select * from 表名; 去哪个表里查看表下面所有的列
select name from 表名; # *号 代表表下面的列 可以根据列来查看不同的信息
select name,age from 表名; # 既看name列,又看age列。
默认:用户 root
创建用户:
create user 'lizy'@'192.168.1.1' identified by '123123'; 密码
create user 'lizy'@'%'identified by '123123';
授权:
给谁授权 权限是什么
grant select(查找权限)
grant select,insert,update on db1.t1 to 'lizy'@'%';
(意思是:可以在任何电脑上对'lizy'@'%' 里的数据里的t1表进行增删改查)
revoke select on db1.tb1 from '用户名'@'IP' # 删除授权
1 3.学习SQL语句规则
2
3 操作文件夹
4 create database db2 default charset utf8;
5 show databases;
6 drop database db2; # 删除数据库
7
8 操作文件
9 show tables;
10 create table t1(id int,name char(10)) default charset=utf8; # char 表示字符串类型
11 create table t1(id int,name char(10)) engine=innodb default charset=utf8;
12 create table t2(id int auto_increment primary key,name char(10))engine=innodb
default charset=utf8;
13 t1表的名称 id 是表的列名 类型是int类
14 # 在MySQL里只有engine=innodb的时候,才支持回滚(假设在银行转账,突然断电了,
钱转出去了,但是对方没有收到,
钱就不知道去哪里了。
有了engine=inndb 就可以让转账失败的钱回到原账户)。
15 #(引擎)
16
17
18 create table t1(
19 列名 类型 null, # 可以为空
20 列名 类型 not null, # 不可以为空
21 列名 类型 not null default 1, # 不能为空,且默认值为1
22 列名 类型 not null auto_increment, # 这一列会自增
23 列名 类型 not null auto_increment primary key,
24 id int,
25 name char(10)
26 )engine=innodb default charset=utf8;
27
28 # innodb 支持事务,原子性操作
29 # auto_increment 表示:自增
30 # primary key 表示 一是约束(不能重复且不能为空);二是加速查找
31 # 注意:一个表里只能有一个自增列 并且也只能有一个主键
32 如果是auto_increment 那么它必须是主键
33 # not null:是否为空
34
35 #数据类型:
36 # 数字:
37 tinyint
38 int
39 bigint
40
41 FLOAT
42 DOUBLE
43 # 不太精准的小数
44 decimal
45 # 这个也是小数,但是永远都是精准的 # 推荐用这个decimal
46
47 #字符串:
48 char(10) # 会多占内存 # 优点:速度快
49 varchar(10) # 输入多少就占多少内存 #优点:节省空间
50 # 都要加上一个长度
51 # PS:创建数据表 定长列往前放
52
53 # text:存的更多
54
55 # 上传文件:
56 # 文件存硬盘
57 # 数据库存路径
58
59 # 时间类型:
60 DATE
61 YYYY-MM-DD(1000-01-01/9999-12-31)
62
63 TIME
64 HH:MM:SS(时:分:秒)
65
66 YEAR
67 YYYY(1901/2155)
68
69 DATETIME
70 YYYY-MM-DD HH:MM:SS
71
72 TIMESTAMP
73 YYYYMMDD HHMMSS
74
75
76 create table t1(
77 id int not null auto_increment primary key,
78 num decimal(10,5), # 10表示总位数,就是
小数点儿前和后。 5表示小数点后的位数。
79 name char(10)
80 )engine=innodb default charset=utf8;
81
82
83 # 清空表:
84 delete from t1; # 使用它 会清空表 但是序号会从清空之前
#的序号开始计算,例如:清空前是4,那么插入新数据后,就是从5开始。
85 truncate table t1; # 清空列表后 新插入数据
#序号从1 开始(速度比delete快)
86 # 删除表:
87 drop table t1;
88
89# 操作文件中的内容
90 # 插入数据
91 insert into t1(id,name) values(1,'alex');
92
93 # 删除:
94 delete from t1 where id < 6 #(删除条件id小于六的)
95
96 # 修改:
97 update t1 set age=18;# (年龄那一列都会变成18)
98 update t1 set age=18 where age=17; #(找到年龄是17的改成18)
99
100 # 查看数据:
101 select * from t1;
102
103
104 # 外键:
105 # 原来只有一张表A,因为原因又创建另一张表B,B表里的id是A里的一个属性
106
107 create table userinfo(
108 uid bigint auto_increment primary key,
109 name varchar(32),
110 department_id int,
111 constraint fk_user_depar foreign key (department_id) references department(id)
# 外键约束
112 )engine=innodb default charset=utf8;
113 # constraint 约束 fk_user_depar:外键的名称 references:关联
114
115 create table department(
116 id bigint auto_increment primary key,
117 title char(15)
118 )engine=innodb default charset=utf8;
119
120
121
# 注:本文是根据老男孩课程内容整理而成的,本文仅供个人笔记使用,如果有侵犯,请联系我,我立即撤销。