初识-------------MySql-----------------------------
Posted 九级大狂风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识-------------MySql-----------------------------相关的知识,希望对你有一定的参考价值。
mysql(Relational Database Management System)
mysql是一种处理文件操作的一款软件,是关系型的数据库,关系型可以理解为“表格的概念”,一个关系型数据库由一个或多个表格组成。
--表头(header) 每一列的名称;
--列 (row) 具有相同数据类型的数据的集合;
--行 (col) 每一行用来描述个人或物的信息;
--值 (values) 行的具体信息,每个值必须与该列的数据类型相同;
--键 (key) 表中用来识别某个特定的人或物的方法,键的值在当前列中具有唯一性;
服务端软件
socket服务端
本地文件操作
解析sql语句
客户端软件
socket客户端
发送指令
解析sql语句
PS:
DBMS数据库管理系统
SQL语句
其他类似软件:
--关系型数据库:sqllite,db2,oracle,access,sql server,mysql
--非关系型数据库:MongoDB,redis
Windows下的mysql安装,配置
安装
www.mysql.com 官网下载
1,安装windowns服务: mysqld --install
2,初始化data文件:mysqld -- initialize -insecure
初始化完后,会有一个默认的root用户,密码是空
连接mysql服务器: net start mysql
关闭mysql服务器:net stop mysql
卸载mysql服务器:sc delete mysql
使用 mysqladmin 方式:
修改密码: mysqladmin -u root -p password 新密码
set password for ‘用户名‘@‘IP地址‘ = Password(‘新密码‘)
使用mysql
mysql数据类型:
数字:unsigned加上是表示"无符号"
整形
int
有符号:
-2147483648 ~ 2147483647
无符号:
0 ~ 4294967295
tinyint
有符号:
-128 ~127
无符号:
0 ~ 255
bigint
有符号:
-9223372036854775808 ~ 9223372036854775807
无符号:
0 ~ 18446744073709551615
浮点型
float 精度丢失,到了一定长度精度丢失
double 精度丢失,比float大一倍左右才会丢失精度
decimal 精度最高(可指定长度跟小数点位数)
decimal(65,30) 最大值
对于精确数值计算时需要用此类型
decaimal能够存储精确值的原因在于其内部按照字符串存储。
字符串:
char 查找速度快
用于表示固定长度的字符串,最多255字符
varchr 节省空间
不固定长度的字符串,最多255字符
文本:text ,tinytext,mediumtext,longtext
上传大文件:文件存硬盘
路径存数据库
enum 枚举类型
五个列中,只能选择一个
set 集合类型
create table myset(col("a","b","c","d"))
inert into myset (col) values("a",("c")),("d","a");
可以多个组合
二进制(存图片,音乐,视频等):tinyblob, blob,mediumblob
时间类型:
DATE
年月日
TIME
时分秒
DATETIME
年月日时分秒
TIMESTAMP
从1970-01-01 00:00:00开始
创建用户:
--登录:mysql -u 用户名 -p; (-p是密码)
mysql -D 所选的数据库名 -u 用户名 -p
--选择数据库连接:use 数据库名;
--必须是登录的root用户
--连接mysql数据库
create user "用户名"@"IP地址" identifed by "密码";
root1只能在192.168.0.1这个IP上登录
create user "root1"@"192.168.0.1" identifed by "123";
%是代表所有的ip都能登录
create user "root1"@"%" identifed by "123";
删除用户:
drop user "用户名"@"IP地址";
修改用户:
rename user "用户名"@"IP地址" to "新用户"@"IP地址";
授权:
给root1用户在所有的IP都能登录给root1用户 查看,插入, 更新的权限
grant select,insert,update on 数据库名 to "root1"@"%";
给root1用户在所有的IP都能登录,在db这个数据库的所有操作权限
grant all privileges on db to "root1"@"%";
数据库操作
查看:
show databases;
创建:
create database 数据库名 default charset utf8;
default charset utf8指定字符编码
删除:
drop database 数据库名;
表操作
查看:
show tables;
创建:
create table 表名(列 类型 auto_increment primary key,
列 类型 )engine=innodb default charset utf8;
create table 表名(id int auto_increment primary key,
name char(10) not null,
age tinyint unsigned not null)engine=innodb default charset utf8;
解释:
auto_increment 自增,
primary key 约束(不能重复也不能为空)加速查找速度,
两者是在一起用的,给一列数据用,
engine=innodb 指定引擎 支持事物,原子性操作,不指定默认myisam
not null 指定该列的值不能为空,必须要填
null 可为空
unsigned 修饰int类型,表示int是无符号
清空表:
delete from 表名; 删除表里的内容,表还存在,
truncate table 表名; 删除表里的内容,表还存在
删除表:
drop table 表名; 删除整张表
创建后表的操作:
--添加列:
alter table 表名 add 新列名 新列数据类型;
alter table 表名 add 新列名 新列数据类型 alter 插入位置;
--修改列:
修改列名
alter table 表名 change 列名 新列名 新数据类型;
修改列的数据类型
alter table 表名 change 列名 列名 新数据类型;
--删除列:
alter table 表名 drop 列名;
--重命名表:
alter table 表名 rename 新表名;
表内文件操作
增:
插入部分数据
insert into 表名(列名1,列名2....) values (值1,值2....)
插入所有列的数据,表中有几列,就需要添加几个值
insert into 表名 values (值1,值2,值3....);
删:
delete from 表名 where 删除条件;
改:
update 表名 set 列名=新值;
update 表名 set 列名=新值 where 更新条件;
查:
select * from 表名; 查询表内所有信息;
select 列名1,列名2 from 表名; 两列的信息;
select * from 表名 where age>20; 从表中找出age>20的所有信息
> = < >= <= != or and》等等
以上是关于初识-------------MySql-----------------------------的主要内容,如果未能解决你的问题,请参考以下文章