MySQL总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL总结相关的知识,希望对你有一定的参考价值。
1.数据库定义:
数据的概念:数据是描述事物的符号,这些符号可以是数字,文字,图片,声音,图像等,数据可以是多种形式,都可以经过数字化存入计算机.
计算机里描述一个事物,包含了多种数据类型的信息,抽取事物的典型特征,组成一条记录,
以特定的数据格式定义,
name,age,sex,home_add,school 就组成了基本的数据记录,
数据库(database)DB:
建立在计算机存储设备上的数据仓库,并且是按照一定的格式,
特点:
可以长期存放,可以共享,
较小的冗余度,较高的数据独立性,以扩展性,
数据库管理系统(database management system)DBMS:
有了数据 和库 的概念,如何存储,获取,维护,优化数据就是关键,就要用到数据库管理系统,
流行的数据库有,mysql ,oracle ,sq lite ,access, ms sql server
mysql主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,他现在是甲骨文公司的产品。
oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。
sql server是微软公司的产品,主要应用于大中型企业,如联想、方正等。
mysql就是一个socekt服务端
客户端软件
mysql自带
客户端软件
mysql自带
python模块
2.数据库的分类:
以上都是一个软件,都有两个主要功能:
a.将数据保存到文件或者内存,
b.接受 命令,对文件进行操作,
注意:都不需要自己创建文件和文件夹,都是通过命令来进行文件操作,统称为数据桔管理系统(DBMS)
3.认识sql语言:
sql (structured query language) 结构化查询语言
sql 主要用于存取数据,查询数据,更新数据和管理关系数据库系统,
sql 分为3类:
DDL 语句 数据库定义语言: 命令有,create,drop,alter
DML 语句 数据库的操作语言: 插入数据instert ,删除数据 delect, 更新数据update ,查询数据select
DCL 语句 数据库控制语言: 控制用户访问的权限 grant,,revoke
5.数据库名字的命名规则:
区分大小写,
可以有字母,数字,下划线 ,@, #, $ 组成
名字须唯一
不能使用关键字 ,如create,select
不能单独使用数字
最长128位字符
数据库 database
文件夹 tables;
文件 table;
6.数据库的操作
` 1.查看数据库
show databases; 查看该库的所有数据库
mysql 存放用户权限相关的数据
use mysql 进入mysql数据库>select user from user;查看登录到mysqlde的用户,
创建用户:
create user ‘alex‘@‘*‘(ip) identified by ‘123‘
‘用户名‘ ip地址 密码
授权:
grant all privileges on db1.t1 to ‘alex‘@‘%‘;
all privileges 表示所有权限,包含select(查询),insert(插入),update(更新),
on db1t.t1 表示对文件夹下的t1文件有权限
test 用于测试数据
information_schema - mysql 本身架构相关数据
show create database db1 #查看数据库创建的方式
2.进入数据库
use 数据库名 --进入后无法退回,通过use进行切换
show tables 显示当前库中所有的表
select database();查看当前数据库
3.删除数据库
drop database 数据库名字;
4.修改数据库
alter database db1 charset utf8;
2.创建数据库
create database 数据库名 default charset utf8
7.用户管理
创建用户 create user ‘用户名‘@‘ip地址‘ identified by ‘密码‘;
删除用户 drop user ‘用户名‘@‘IP这地址‘;
修改用户 rename user ‘用户名‘@‘IP地址‘; to ‘新用户‘@‘ ip‘地址;
修改密码 set password for ‘用户名‘@‘ip地址‘ = password(‘新密码‘)
注意:
用户权限相关数据保存在MySQL数据库的user表中,所以也可以直接对其操作(不建议)
8.表的操作
1.创建表 create table 表名(
字段 类型[约束条件],
字段 类型)[character set xxx];
例子:
create table t1(id int ,name char(10)) default charset=utf8;
约束条件:
primary key (非空且唯一);
一个表中只有一个主键,
约束(不能重复不能为空);加速查找
unique 唯一约束
not null 非空约束
engine=innodb #防止双方数据出现错误,可以实现数据回滚, 支持事务,原子性操作
myisam 不支持数据回滚
列子:
create table t3(id int auto_increment,name char(10)) engine=innodb default charset=utf8;
auto_increment 自增
注意:
auto_increment 和primary key一起用,否则报错
一张表中,只能有一个auto_increment和primary key
创建表的标准格式:
create table t1(id int not null auto_increment primary key,name char(10))engine=innodb default charset=utf8;
2.查看表信息
desc 表名 ,查看表结构,包含每个字段的信息,
show columns from 表名 ,查看表结构
show tables ,查看库中所有的表
select * from 表名;,查看表里的所有列,
select name,id from 表名;,查看name列,id列,
show create table 表名; 里面包含了表创建时的各种信息,包含编码格式6
show create table 表名 \G; 竖着看,更方便
3.修改表结构
3.1 增加列(字段)
alter table 表名 add 列名 类型 [约束性条件] [first | after 字段名];
3.2 修改列(类型)
alter table 表名 modify 列名 类型 [约束性条件]
3.3 修改列名
alter table 表名 change 列名 新列名 类型
3.4 删除一列
alter table 表名 drop 列名;
3.5 修改表名
rename table 表名 to 新表名;
3.6 修改表的所有字符集
alter table 表名 character set utf8;
3.7 插入数据
insert into t1(id,name) values(1,‘egon‘);t1是表名
3.8创建文件
4.删除表
drop table t3;
5.清空表,
delete from t3;当再次插入数据是,会从上次的id号继续,表的字段(列名)都还存在
truncate table t3; 删除表,表和记录都删除,直接从id 是1的开始删除,比delete快
9.数据类型:
9.1数字: tinyint
1.int
2.bigint
3.float,都是不精准的数据类型,越长越不精准
4.double,都是不精准的数据类型,越长越不精准
5.decimal 是最精准的数据类型,按字符串类型存的,但还是小数
num decimal(10,5)decimal 有2个参数,第一位是数据的总位数,后面参数代表小数点后的位数
9.2字符串:
1.char(10): 速度快,定义了10位个字符,不够空格填充,最多255个字符
2. varchar(10) :节省空间,定义10位个字符,没有写够,有多少,算多少,省内存,最多255个字符
3.enum(‘x‘,‘xl‘,‘xxl‘);表示只能从后面的数据里取,选项固定,不经常修改的,
create table shirts(
name varchar(40),
size enum(‘x_small‘,‘small‘,large‘,‘x-large‘)
);
insert into shirts(name,size) values(‘aa‘,‘large‘)
4.set(‘a‘,‘b‘.‘c‘)表示可以插入后面数据的任意组合
create table myset(
name varchar(40),
col set(‘a‘,‘b‘,‘c‘));
insert into myset(name ,col) values(‘xxxx‘,‘a,b‘)
insert into myset(name,col) values(‘xxxx‘,‘b,c‘)
10.操作文件中的内容
插入数据:
insert into t1(id,name) values(1,‘alex‘);
删除数据;
delete from t1 where id<6 #where 后面跟条件,指定删除
修改:
update t1 set age=18;
update t1 set age=18 where age=17; 修改age=17 的数据
11.创建表
create table t1(id int primary key auto_increment ,
name varchar(20),not null,
age int,
salary float(10,2))engine=innodb default charset utf8; #
where 条件
< ,>,>=,<=,<>,!=
between 80 and 100
in(10,20,30)
like ‘yuan%‘
多个条件 可以使用逻辑运算符 and or not
排序 order by ASC 升序 默认 /Desc 降序 位于select末尾
group by 列名 ,可以跟having,进行筛选
11,主键, 保证数据的唯一性
12.外键,foreign key
一张表中的数据受限于另外一张表,2张关联,
2t1表中的主键(id) foreign key t2(某列名)的
constraint 约束 fk_1(名字) foreign key
以上是关于MySQL总结的主要内容,如果未能解决你的问题,请参考以下文章