数据库
数据库由表集合组成,它是以一定的组织方式存储的相互有关的数据集合。
表:记录:行,字段(属性):列,以行+列的形式就组成了表(数据存储在表中)。
关系数据库的表由记录组成,记录由字段组成,字段由字符或数字组成。它可以供各种用户共享,具有最小冗余度和较高的数据独立性,它是统一管理的相关数据的集合。
数据库工作模式
接收应用程序的数据请求和处理请求——》将用户的高级语言转换为低级语言,实现对数据库的操作——》从数据库的操作中接受查询结果——》对查询结果进行处理 (格式转换)将低级语言转换为高级语言——》将处理结果返回给用户
数据库管理
查看数据库信息 show databases
查看数据库中的表信息 show tables
use 数据库名 切换到数据库中
show tables show tables in mysql
显示数据表的结构 (字段 ) describe user;
Field:字段名称
type: 数据类型
Null :是否允许为空
Key :主键
Type:数据类型
Null :是否允许为空
key :主键
Default :默认值
Extra :扩展属性,例如:标志符列 (标识了种子,增量/步长) 1 2
id: 1 3 5 7
常用的数据类型
int:整型,用于定义整数类型的数据
float:单精度浮点4字节32位
double:双精度浮点8字节64位
char:固定长度的字符类型,用于定义字符类型数据。
varchar:可变长度的字符类型
text:文本
image:图片
decimal(5,2):5个有效长度数字,小数点后面有2位,指定长度数组。注:Char如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错。
主键是唯一的,但主键可以由多个字段构成。
相关命令
创建表
进入数据库 mysql -u root -p
查看数据库 show databases;
查看表 show tables;
进入数据库 use 库名
创建数据库 create database 数据库名;
创建表 create table 表名 (字段1 数据类型,字段2 数据类型[,...][,primary key(主键名));
例: create table class (id int not noll,name char(10) not null,score decimal(5,2),passwd char(48) default'', primary key (id));
删除表
drop database 删除数据库
drop table 删除表
清空数据
全部清空 turncate table ky;
选择性清空 delete from ky where level >=45;
创建、修改、更新数据表中的数据记录
创建数据 insert into class valuse(1,'zhangsan',90.5,123);
修改数据 update zzz set passwd=PASSWORD('') where name='zhangsan';update zzz set name='wangxiaoer',passwd=''where id=3;
查看数据 select * from class;
修改表的结构
添加表的字段 alter table 表名 add 字段1 数据类型
修改表的字段 alter 表名 change 旧列名 新列名 数据类型
删除表的字段 alter 表名 drop 字段
查询数据
select * from 表名; 可加where
select 字段1,字段2... from 表名; 可加where
只显示前2行 select * from 表名 limit 2;
显示第2行后的前3行 select * from 表名 limit 2,3;
查看表的结构 show create table ky30
创建临时表
MySQL 的临时表,顾名思义,就是临时建立的表,并不会长期存在,主要用于保存一 些临时数据。临时表有个特性,就是只在当前连接可见,当前连接下可执行增删改查等操作, 当连接被关闭后,临时表就会被 MySQL 删除,相关的资源也会被释放。
示例:
create temporary table xxx (
id int(4) zerofill primary key auto_ increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));
insert into xxx values (1,'zhangsan',123456,'running') ;
select * from test03;
show tables;
quit
select * from test03;
复制,克隆表
create table yyy2 like yyy; 复制,复制yyy表结构生成yyy2表
insert into yyy2 select * from yyy; 备份数据内容create table yyy2 (select * from yyy); 复制test 表数据到test02中
数据库用户授权
如需全部可将数据库名改为(*)。赋予本地权限
grant 权限列表 on 数据库名.表名 to '用户名'@'来源地址' [identified by '密码'];赋予外部连接权限
grant all privileges on 数据库名.* to 'taotao'@'%' identified by '123456';
允许用户lisi在所有终端远程连接mysql,并拥有所有权限。flush privileges; #刷新权限撤销权限
revoke 权限列表 on 数据库.表名 from '用户名'@'来源地址' 查看用户当前权限
show grant for '用户名'@'来源地址'