数据库基础之01(搭建数据库服务器、连接数据库、建库建表写内容)

1、搭建数据库服务器
什么是数据库?存储数据的仓库

部署一台数据库,提供数据库存储服务?
 
购买服务器 (硬件主机  云主机 )
 
安装操作系统: Unix    Linux   Windows
                                   
                                                       
1-1数据库类型
常用的几种关系型数据库(  RDBMS )
Mysql 、 Oracle 、 SQL server  、DB2  
特点:按照一定的规则存储数据                                   
常用的几种非关系型数据库(  NOSQL)
Redis   Mongodb  Memcached
                                                               
Mysql的特点:
开源且跨平台: unix  linux   windows
支持主流的编程语言:php  java   python  ruby  perl  
可移植性好: 系统只要有C 运行环境即可运行Mysql
其可移植性体现如下:
A服务器
远程传宋Mysql数据库主目录到B服务器
scp  -r  /usr/local/mysql/  b:/usr/local/
 
B服务器上只需安装gcc和gcc-c++软件环境
yum  -y  install gcc   gcc-c++
ls /usr/local/mysql/
 
1-2、数据库服务通常和网站服务一起使用:LAMP   LNMP
 L-----Linux  A-----Apache  N----Nginx   
 M-----Mysql  P-----PHP                                                 
 
如购物网站  游戏网站  视频网站  论坛网站  金融网络
 
1-3、装包、配置、起服务、查看服务信息
软件包的来源? 官网下载  XXX    .  主.       次.               修改次数  
                         软件名      主版本    次版本   偶数为稳定版,奇数为测试版
mysql-5.7.17.tar    
mysql-community-server-5.7.17-1.el7.x86_64.rpm
mysql-community-client-5.7.17-1.el7.x86_64.rpm
 
1-3-1、装包
rpm  -qa  | grep -i mariadb----检查有没有安装mariadb
systemctl  stop  mariadb-----若已安装则先停服务
rpm -e --nodeps mariadb-server-----卸载mariadb-server
rpm -e --nodeps mariadb-libs-------卸载mariadb-libs
rm  -rf  /var/lib/mysql/*------删除/var/lib/mysql/*主目录
rm  -rf /etc/my.cnf------删除主配置文件
tar -xf /root/mysql-5.7.17.tar-----解压mysql-5.7.17.tar软件包组
yum  -y  install  perl-JSON-----安装依赖包
rpm  -Uvh  mysql-community-*.rpm----批量安装解压出来的mysql-community的软件
rpm -qa | grep -i mysql---列出所有已安装的带有mysql名字的软件包
[root@host50 ~]# rpm -qa | grep -i mysql
mysql-community-libs-5.7.17-1.el7.x86_64
mysql-community-embedded-compat-5.7.17-1.el7.x86_64
mysql-community-embedded-devel-5.7.17-1.el7.x86_64
mysql-community-server-5.7.17-1.el7.x86_64
mysql-community-test-5.7.17-1.el7.x86_64
php-mysql-5.4.16-42.el7.x86_64
mysql-community-common-5.7.17-1.el7.x86_64
mysql-community-devel-5.7.17-1.el7.x86_64
mysql-community-libs-compat-5.7.17-1.el7.x86_64
mysql-community-embedded-5.7.17-1.el7.x86_64
mysql-community-client-5.7.17-1.el7.x86_64
mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64
 
1-3-2、修改配置文件 /etc/my.cnf
[mysqld]
#skip_grant_tables------略过权限限制
#skip_networking----数据库只能被本机访问
#secure-file_priv=/mydata---------自定义数据导入导出文件存储的目录
1-3-3、启动服务
   30  systemctl  start  mysqld
   31  systemctl  status  mysqld
   32  ls /var/lib/mysql
   33  systemctl  enable  mysqld
 
1-3-4、查看服务信息
端口号 3306     ss  -utnlp | grep  mysqld
进程 mysqld   ps  -C  mysqld
 
2、把数据存储到数据库服务器上的过程?
1 连接数据库服务器
# grep password /var/log/mysqld.log
 
2018-07-10T02:46:42.233732Z 1 [Note] A temporary password is generated for root@localhost: PjCJW&is,8jV  
注意:第一次登陆的时候需要先用系统自动生成的密码,用该密码登陆后会提示您先改密码,否则什么也做不了
]#mysql  -hlocalhost   -uroot   -p'PjCJW&is,8jV'
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=6;
mysql> alter user  root@"localhost" identified by "123456";
mysql> show  databases;
mysql> quit
 
]#mysql  -hlocalhost   -uroot   -p123456
mysql> show  databases;
3、使用SQL (结构化查询语言)命令 管理数据库,  
3-1、创建库  相当于系统的文件夹(查看  创建  切换  删除)
show databases;-----列出所有库名
create database  库名;----新建库
use  库名;-----进入某一个库
select  database();-----查看当前在哪个库下
show tables;----列出库下的所有表,记得先进库
drop  database  库名;-------删掉哪一个库
 
3-2、数据库名的命名规则:
1.可以使用数字、字母、下划线,但不能纯数字
2.区分大小写,且具有唯一性
3.不可以使用指令关键字、特殊字符
 
3-3、 创建表 ( 相当于系统文件)
***** 表必须在库里创建
(创建表 查看内容  查看表结构   删除表  写入数据)
 
create  table   studb.stuinfo(name   char(15),sex  char(10),age int,tel   char(11) );-----创建表
 
desc  studb.stuinfo;----查看表结构

select  * from studb.stuinfo;-----查看表内容
 
insert into  studb.stuinfo  values("bob","boy",21,"8888888"),("zhaozhibin","boy",19,"66666666");---增加表内容
 
update studb.stuinfo set sex="girl";----改表内容
 
delete from studb.stuinfo;---删除表内容
 
drop table stuinfo;-----删除表
show tables;----列出所有表
4、断开与数据库连接
>quit;
 
5、指定表的字符集 可以存储中文数据
use  studb;
 
create  table  studb.学生表 (姓名  char(10) , 年龄 int) DEFAULT CHARSET=utf8;----表名和字段名默认可以使用中文,但字段内容默认不能使用中文,所以必须加DEFAULT CHARSET=utf8
 
alter  table  studb.学生表  DEFAULT CHARSET=utf8;----通过修改表结构来加上DEFAULT CHARSET=utf8选项
 
show  create  table  学生表;-----展出创建的表结构
 
6、Mysql数据类型
1.数值型:工资、消费金额、身高、体重
2.字符型:电脑品牌、姓名、住址、花名
3.枚举类型:性别、兴趣爱好、特长
4.日期类型:出生日期、上学时间、下班时间

6-1、数值型
整数型
create  table t2(level  tinyint  unsigned);---tinyint小整数,unsigned只保存正数
 
浮点类型   
整数.小数   总宽度
1029.33        6

create table  t3 (pay  float(5,2));----float(5,2)小数位精确两位,总显示宽度为5,该显示宽度不会限制字段赋值的大小,但通过设置显示宽度的大小可以实现字符视觉整齐的效果,比如最大的数所占宽度为10,则设为10,不足位数的会用0补齐。
 
(数值类型)的宽度是显示宽度,不能限制字段赋值的大小字段值的大小由类型决定,仅适用于数值类型
 
insert  into  t3  values(1118.23);
 
6-2、字符类型
char (字符数)-----  定长,字符数最大255,不够指定字符时在右边用空格补齐,字符数超出时无法写入,特点,不省空间,但节省内存
varchar( 字符数)----- 变长,字符数最大到65535,按数据实际大小分配存储空间,字符数超出时无法写入,特点省空间,浪费内存   
 
大文本类型
text/blob------字符数大于65535存储时使用
/root/media/film/xxx.avi
 音频文件   图片   视频文件
 
create  table   t5(name  char(5))
insert into   t5  values  ("bob"),("ab");
 
create  table   t6(name  varchar(5))
insert into   t6  values  ("bob"),("ab");
写入后对比效果
 
create  table   t7  (
gamename char(15), level smallint unsigned , pay  float(7,2) );
 
insert into  t7  values("zbj",250,1880.22);
 
 
6-3、枚举类型 : 让字段的值 在规定的范围内选择
enum(值列表)  单选
set(值列表)  多选
 
create  table   t8  ( name  char(15),sex  enum("boy","girl","no"),likes  set("game","film","eat","sleeps") );
 
insert into   t8  values("bob","man","it,book");
 
搭建MySQL数据库服务器 并设置数据库管理员root用本机登陆密码为123456
 
6-4、日期时间类型:
年  year    YYYY   2018
日期  date   YYYYMMDD    20180711
时间  time   HHMMSS      083000
日期时间    datetime      YYYYMMDDHHMMSS----当未赋值时则为null         
timestamp     20180711093758-----当未赋值时则以当前时间赋值
 
create  table  t1(
name char(15),  姓名
s_year     year,   出生年份
birthday   date,  生日
work       time,   上班时间
meetting   datetime   约会时间
);
desc  t1;
insert into  t1  values("pengyuyan",1990,220000,20181120,20181224203000);
 
MySQL服务时间函数: MySQL服务内置的命令。
 
select  now();--------------  获取系统日期时间
select  year( now()  );------ 获取系统年份
select  year( 20191224 );---- 获取指定时间年份
select  month( now() );-------获取系统月份
select  month( 20191224 );--- 获取指定时间月份
select  day( 20191224 );----- 获取指定时间几号
select  day( now() );-------  获取系统时间几号
select  date( now() );------- 获取系统日期  
select  time( now() );------- 获取系统时间
 
 insert into  t1 values("bob",year(now()),date(now()),time(151223),now());

猜你喜欢

转载自blog.csdn.net/perfect11_1/article/details/81115211
今日推荐