Linux的从零开始(第十一天)

创建数据库及数据库表

数据库分类

按照早期的数据库理论,比较流行的数据库模型有三种,分别为 层次式数据库 网络式数据库、关系型数据库 (前两者已经基本消失)。 而当今的互联网中,最常用的数据库模型主要是两种即 关系型数据库 非关系型数据库

MySQL使用

MySql的安装与访问(请查看上一天)

1.启动mysql服务器

启动 mysql:
输入: net start mysql 服务名 ( 例如 :mysql57,mysql80)
停止 mysql:
输入 : net stop mysql 服务名 ( 例如 :mysql57,mysql80)

 2.连接mysql服务器

mysql -u 用户名 -p 密码
例如 :
mysql -uroot -p123456

 3.基于客户端工具连接MySql

Navicate连接mysql

 创建用户和授权

创建用户

create user '用户名'@'主机地址' identified by '密码'
create user 'myuser'@'localhost' identified by '123456'
新用户登录
mysql -u tiger -p 
Enter password: ******

授权

权限种类:select, update, insert, delete ,alter(修改数据库的结构信息的) , drop,all(所有权限)

 

#mysql5 授权
grant 权限种类 on 数据库名.表名 to '用户名'@'主机地址' identified by '密码' 
#mysql8 授权
grant 权限种类 on 数据库名.表名 to '用户名'@'主机地址' with grant option; 
实例: 
#mysql5 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456' WIT
#mysql8
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

flush privileges; 修改后执行此句命令,刷新权限。
# 让别人使用指定账号能访问自己的数据库
cmd 命令框登录进入 mysql 之后;
1. 先执行
use mysql;
2. 再执行
update user set host = '%' where user = ' 用户名 ' and host=' 主机地址 ';// 执行此句
3. 执行刷新语句 刷新权限
flush privileges;
  # 要查看数据库的账号信息可以执行如下 sql
select host,user from user;

 数据库的操作

数据库的常用操作

show databases; 显示当前连接下的所有数据库;
use 数据库名;使用数据库
show tables; 显示该数据库下的所有表
desc 表名 ; 显示表结构
# 查看表结构 
desc goods
# 查看建表代码
show create TABLE goods

创建数据库

CREATE DATABASE [IF NOT EXISTS] <数据库名>

[[ DEFAULT ] CHARACTER SET < 字符集名 >

[[DEFAULT] COLLATE <校对规则名>];

实例:

CREATE DATABASE IF NOT EXISTS test_db_char
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_general_ci;
# 简写
create database test_db;
建表语句
CREATE TABLE [IF NOT EXISTS] ` 表名 `(
` 列名 1` 类型 [ 约束 ],
` 列名 2` 类型 [ 约束 ],
...
` 列名 n` 类型 [ 约束 ]
)[ENGINE= 存储引擎 DEFAULT CHARSET= 字符编码 ];

 #创建表

create table testtab(id int,name varchar(10),sex char(1));
# 查询表
select * from 表名 ;

 查看当前mysql默认引擎:

show variables like '%engine%';

 查看mysql支持哪些引擎:

show engines;
修改默认存储引擎
如果修改本次会话的默认存储引擎(重启后失效),只对本会话有效,其他会话无效:

 set default_storage_engine=innodb;

 修改全局会话默认存储引擎(重启后失效),对所有会话有效

 set global default_storage_engine=innodb;

 导入和导出(备份)

 导出(备份):该命令是直接在cmd窗口命令行执行,不要进入到mysql。

 mysqldump -uroot -p --databases 数据库命名 [表名,...]>路径

 导入(还原):

mysql -uroot -p [ 数据库名 ]< 路径

数据类型

 整型

原则:就小不就大
常用:int ,默认4 个字节的大小,无需指定大小
MySQL数据类型
含义(有符号)
tinyint(m)
1个字节 范围(-128~127)
smallint(m)
2个字节 范围(-32768~32767)
mediumint(m)
3个字节 范围(-8388608~8388607)
int(m) 用它
4个字节 范围(-2147483648~2147483647)
bigint(m)
8个字节 范围(+-9.22*10的18次方)

浮点型(float 和 double):

 float(7,2) : 12345.45

MySQL数据类型
含义
float(m,d)
单精度浮点型 8位精度(4字节) m总个数,d小数位
double(m,d)
双精度浮点型 16位精度(8字节) m总个数,d小数位

 定点数

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
decimal(m,d) 参数 m<65 是总个数,d<30 且 d<m 是小数位。

 字符串(char,varchar,text)

 单引号括起来的内容

MySQL数据类型
含义
char(n)
固定长度,最多255个字符
varchar(n) 使用
可变长度,最多65535个字符
tinytext
可变长度,最多255个字符
text
可变长度,最多65535个字符
mediumtext
可变长度,最多2的24次方-1个字符
longtext
可变长度,最多2的32次方-1个字符

 

日期时间类型

MySQL数据类型
范围
含义
date
1000-01-01/9999-12-31
日期 '2008-12-2'
time
'-838:59:59'/'838:59:59'
时间'12:25:36'
datetime
1000-01-0100:00:00/9999-12-3123:59:59
日期时间
'2008-12-2
22:06:44'
timestamp
1970-01-01 00:00:00/2038 结束时间是第
2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼
治时间 2038年1月19日 凌晨 03:14:07
时间戳

二进制类型:binary ... (文件,图片)

文件上传,图片——转换成流——存到数据库中
一般:文件存到文件服务器。数据库中存储文件的地址路径

数据约束

约束:
1.实体完整性约束:保证数据记录的唯一性
  a.主键约束(该列不能为空并且是唯一的)   primary key
  b.自增约束  由数据库自动生成编号序列 auto_increment (整形主键)
  c.唯一键约束 unique

2.域完整性约束:限定数据范围
  a.非空约束 not null b.默认值约束 default  c.外键约束 foreign key

3.引用完整性约束:两表数据有引用关系,保证引用的有效性
     a.外键约束 foreign key

4.用户自定义完整性:通过特定的程序规则实现

drop table student

#主表
create table classInfo
(
	clsId int primary key auto_increment,
	clsName varchar(20)
)

select * from classInfo;

insert into classInfo
(clsName)
values
('AAA01'),
('AAA02')

#从表
create table student
(
	id int primary key auto_increment,
	name varchar(20) not null,
	sex char(1),
	phone varchar(20) unique, #唯一约束
	province varchar(20) default '河南', #默认值约束
	bjId int, 
	foreign key (bjId) #指定当前表中的bjId作为外键
  references classInfo(clsId) #指定当前表外键要关联另外一个表的哪个列
	
)
#查看表结构
desc student

#默认值约束
insert into student
(id,name,sex,phone)
values
(1,'张三','男','123123123')

#唯一约束
insert into student
(name,sex,phone)
values
('张三','男','123123124')

#外键约束
insert into student
(name,sex,phone,bjId)
values
('张三','男','123123125',1)

select * from student

select * from classInfo;
select * from student;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值