Mysql
Mysql:是用于管理文件的一个软件
-服务端软件
-socket服务端
-本地文件操作
-解析指令(sql语句)
-客户端软件(各种各样的,包括mqsql自己,其他语言写的)
-socket客户端
-发送指令
-解析指令(sql语句)
PS:-DBMS 以上所有的是数据库管理系统
-SQL语句
技能 -安装客户端服务端
-连接
-学习sql语句规则:指示服务端做任意操作。
其他类似软件:分为关系型数据库(sqlite)和非关系型数据库(redis)。
mysql安装:平台win10,mysql版本免安装5.7.23.
解压缩包后,bin目录下,有mysqld服务端,mysql客户端可执行文件。
mysqld --initialize-insecure初始化,
当有data文件夹时,就不需要上面的语句。
初始化后,为我们创建了一个root账号,密码为空。
之后执行mysqld就直接启动服务端了。
然后客户端可以 mysql -u root -p连接服务端
优化:因为上面启动服务端后,终端就会被hang住,以至于我们需要重新打开一个终端来启动客户端。
制作MySQL的Windows服务 mysqld --install 都需要管理员权限。
移除MySQL的Windows服务 mysqld --remove
注册成服务之后,再启动mysql就简单了(注意安装服务的目录,需要在mysql安装的目录下。)
net start MySQL 也需要在管理员权限下。
关闭mysql服务
net stop MySQL
关于连接
创建用户:
create user 'castiel'@'192.168.1.%' identified by '132456'; 后面绑定这个用户只能用这个ip地址链接
还有相应的删除用户,修改用户
权限:
还有相应的删除权限,
grand selcet,insert,update on db1.t1 to 'castiel'@'%' 数据库.表
grand all privileges on db1.* to 'castiel'@'%' 除了root的grand权限,其他权限都有。
data
文件夹(数据库)
文件(表)
数据行(行)
数据行
学习sql规则(
1.操作文件夹,(没有修改的一说,只能干掉再创建)
show databases db2;
create database db2 default charset utf8;
drop database db2;
2.操作文件,
show tables;
create table t1(id int,name char(10)) engine=innodb default charset=utf8;创建表时设置默认编码
在创建表的时候,有引擎=innodb 支持事务,原子性操作就是同时动两张表,一个增加一个减少,如果中间出问题了,就回滚到之前状态。 还有myisam参数
create table t1(
列名 类型 null
列名 类型 not null
列名 类型 auto_increment primary key,他两个绑定出现。(自增,) primary key主键作用1,表示约束(不能重复且不能为空)2.加速查找。
id int,
name char(10))
engine=innodb default charset=utf8;
清空表:
delete from t1; 删掉表的内容,但是key键没有重置。
truncate table t1; key键重置了。
删除表:
drop table t1;
3.操作文件中的内容
增加:
insert into t1(id,name)values(1,"castiel") 插入
查看
select * from t1;
删除:
delete from t1 where id<6;
修改:
update t1 set age=18 where age=17;
数据类型:
数字类型:
tinyint
int
bigint
float
double
不精准的小数。
decimal
num decimal(10,5)总共最多几位数,小数点后最多几位
精准的小数。
字符串类型:
char(10) 速度快,长度不够10的时候,会补充到10。
varchar(10) 节省空间,不会补充。
最大255个字符
text
上传文件
文件存硬盘
数据库存路径。
PS:创建数据表时,定长列放在前面。
时间类型
datetime
ENUM 枚举类型,只能用它里面的一个选项。
set 集合,只能用它里面的组合。
外键功能:1.给字段加约束。 2.节省空间。
主键索引
补充主键:
一个表只能有一个主键,一个主键可以由多列组成。
外键的概念
可以多个外键关联,但是前提另一个表的主键由多列组成。
show databases;
use 数据库名称;
show tables;
select * from 表名;
select 列名,列名 from 表名;
posted on 2018-08-07 11:04 castiel_lee 阅读(197) 评论(0) 收藏 举报
浙公网安备 33010602011771号