mysql基础篇

mysql装包
mysql是个tar包,需要用tar解压后用rpm装包tar -xf mysql-5.7.17.tar,如果远程装包需要scp发送过去
解压后rpm装包rpm -Uvh mysql-community-*.rpm 直接rpm升级装包(可避免系统类自代数据库程序冲突)其中server和client包必须要有装的

在rpm装包过程中,如出现需要依赖包,直接按提示yum装包
一般需要一下依赖包 autoconf。perl-JSON。libaio。net-toos
如果起冲突请删掉这个包rm -rf mysql-community-server-minimal-5.7.17

数据库的配置文件一般都是默认放在/etc/my.cnf

 软件包装完后它会自动创建数据库目,这个目录是数据库专属的,客户端的数据要存服务端上 也是存在这个数据库目录里面的 /var/lib/mysql/

起动mysql程序是用systemctl start mysqld ,执行这个名令后它会调用/usr/lib/systemd/
当你第一次起动mysql程序时,mysql会做自动初始化,它会创建一些必要的程序放在这个目录下面
system/mysqld.service 里的起动程序 (可以用status看到起动程序放在那里)所以需要等待几秒钟

设置开机 systemctl enable mysqld

*************************************************************************
进入数据库服务器 (其实它就相当于一个文件夹)  
筛选初始密码 grep -i password /var/log/mysqld.log
使用初始密码登陆   mysql -hlocalhost -uroot -p'筛选出的十位密码'
进去后如下
msyql> 这里面用的是SQL命令的 (结构化查询语言)

****************************************忘记密码或输入密码显示Enter password**********
如果忘记密码可在配置文件vim /etc/my.cnf写 跳过密码
[mysqld]
skip-grant-tables
2. 重启mysqld     3. 命令行进入mysql进行跟改密码
4. 我们查看一下要更改那些项 mysql>select host,user,authentication_string(认证)  from mysql.user;
5. 重新设置密码
mysql> update mysql.user
    -> set
    ->  authentication_string=password("123456")
    -> where
    -> user="root" and host="localhost";
quit 退出到命令行
6. 进入vim /etc/my.cnf
注释跳过密码并写入密码规则(在配置文件写的密码就是永久的了)validate(验证)
[mysqld]
#skip-grant-tables               
validate_password_policy=0    只检验长度,如果=1 那就要检验数字,大小写字么特殊符号等
validate_password_length=6    密码长度为6位
:x
登陆完成mysql -uroot -p'123456'

使用alter user 重设口令
mysql> alter user root @"localhost" identified by "123456"

*******************************设置临时密码信息***************************************
[root@es4 ~]# grep -i password /var/log/mysqld.log
[root@es4 ~]# mysql -uroot -p'Q!dPJKYTw4wO'  通过初始密码进入数据库
mysql> set global validate_password_policy=0;     只要长度(这两条是临时的,永久需要在配置文件里改写)
mysql> set global validate_password_length=6;     只要6位数密码(global全局变量)

mysql> alter user root @"localhost" identified by "123456"; 使用alter user 重设口令
Query OK, 0 rows affected (0.00 sec)

《附加》 *为什么数据库目录是/var/lib/mysql*
配置文件/etc/my.cnf 里的datadir指定的(你也可以修改)

**************************************************************************************
•          库的基本操作
– Show databases; // 显示已有的库
// 切换库
– Use 库名 ;
– Select database(); // 显示当前所在的库
– Create database 库名 ; // 创建新库
// 显示已有的表
– Show tables;
– Drop database 库名; // 删除库
***************************************************************************************
DDL操作   
所有表的信息都放在/var/lib/mysql下

mysql> create table t1(
    -> name char(15),
    -> class char(7)
    -> );
Query OK, 0 rows affected (0.48 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| t1            |
+---------------+
1 row in set (0.00 sec)


mysql> create table t1(               创建t1表
    -> name char(15),                 字符类型用char
    -> class char(7)
    -> );
Query OK, 0 rows affected (0.48 sec)

mysql> show tables;                    查看表
+---------------+
| Tables_in_db1 |
+---------------+
| t1            |
+---------------+
1 row in set (0.00 sec)

mysql> desc t1;                 查看t1表结构(有那些列)
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(15) | YES  |     | NULL    |       |
| class | char(7)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> select * from t1;              查看表记录

*****************************************************************************
表的操作命令 (增,删,改,查)
1. 往表里写信息
Insert into 表名 values( 值列表 );// 插入表记录

mysql> insert into t1 values(
    -> "cuizhiwei","nsd1803"),("bob","nsd1803");
Query OK, 2 rows affected (0.06 sec)
查看
mysql> select * from t1;
+-----------+---------+
| name      | class   |
+-----------+---------+
| cuizhiwei | nsd1803 |
| bob       | nsd1803 |
+-----------+---------+

2. 改表某一列
Update 表名 set 字段 = 值 ; // 修改表记录
         更新  表t1  设置 class列 等于 nsd1809
mysql> update t1 set class="nsd1809";
Query OK, 2 rows affected (0.06 sec)

3. 删除表所记录的信息
Delete from 表名 ; // 删除表记录
mysql> delete from t1;
Query OK, 2 rows affected (0.06 sec)
删除后表结构还是在的
mysql> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(15) | YES  |     | NULL    |       |
| class | char(7)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+

4.删除表
mysql> drop table t1;   这下用show tables;也看不到这个t1表了
Query OK, 0 rows affected (0.19 sec)

5. 查看当前在那个数据库下
mysql> select database();
+------------+
| database() |
+------------+
| db1        |           在db1 数据库下
+------------+

***************************************************************************************
让表支持中文信息写入

show create table t1;    查看表用了那些命令创建(可以找到字符集DEFAULT CHARSET=)
DEFAULT CHARSET=utf8 改成这个字符集,并在创建表的时候加在分号前面,即可让表支持中文写入。
mysql> create table 学生信息表2(
    -> 姓名 char(10),
    -> 班级 char(7)
    -> ) DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.27 sec)
查看select * from 学生信息表2;

***********************************信息种类类型************************************
数值有分 整型(正整数负整数),浮点型
存游戏等级数值类型可以用MEDIUMINT
存身高等精确信息用数值类型的浮点型

如果要正整数,要在数值类型后面加unsigned,如下
create table db1.t3(
等级  tinyint unsigned)DEFAULT CHARSET=utf8;
然后你发现写入信息只能用正整数写入 insert into t3 values(256);


三、mysql数据类型
3.1  数值类型   (成绩  年龄   工资  )
每种类型的存储数据的范围都是固定
整数类型 (只能存储整数)
微小整型    小整型         中整型                   大整型    极大整型
tinyint      smallint      MEDIUMINT        INT        bigint
*****unsigned    使用数值类型有符号的范围。

浮点型 (存储小数)
float(M,N)     
double(M,N)

M  设置总位数
N   设置小数位位数

正数.小数          总位数   整数位    小数位
18088.88            7           5             2                           

3.2  字符类型   (商品名称   籍贯   姓名   生产厂家)
char  (255)   固定长度字符类型
varchar (65532)   变长字符类型

大文本类型 (音频文件 视频文件  图片文件)
blob
text

3.3 日期时间类型
(注册时间    约会时间   开会时间   入职时间   生日)

年       year   YYYY                 2018
日期   date   YYYYMMDD     20180423
时间   time   HHMMSS          161958
日期时间 datetime/timestamp   
               YYYYMMDDHHMMSS     20180423161958

获取日期时间给对应的日期时间类型的字段赋值
获取日期时间函数
now() 获取当期系统的时间
year(日期时间)获取指定时间中的年
month(日期时间)获取指定时间中的月
date(日期时间)获取指定时间中的日期
day(日期时间)获取指定时间中的号(天)
time(日期时间)获取指定时间中的时间

可以使用2位数字给year类型的字段赋值,规律如下:
01-69   20XX
70-99   19XX

datetime与timestamp 的区别?

3.4 枚举类型(插入记录 时 记录的值 在列举的范围内选择)
                      性别    爱好    专业
从给定值集合中选择单个值, ENUM
– 定义格式: enum( 值 1, 值 2, 值 N)
• 从给定值集合中选择一个或多个值, SET
– 定义格式: set( 值 1, 值 2, 值 N


enum(值列表)       单选
set(值列表)            多选                  

******************************************************************************
三 , SQL命令操作                                                                     :
******************************************************************************
、mysql数据类型
3.1  数值类型   (成绩  年龄   工资  )
每种类型的存储数据的范围都是固定
整数类型 (只能存储整数)
create  database  studb;
use   studb;
create  table   t1(level  smallint,age  tinyint);
insert into  t1  values(1024,19),(9,21);

insert into  t1  values(21.45,9.87);
select   * from  t1;

create  table   t2(
level   int     unsigned,
age   tinyint   unsigned
);

desc   t2;
insert into  t2  values(-201,  -1);
insert into  t2  values(201,  0);
select  * from t2;

create  table   t3(
pay   float(5,2)  
);
xxx.xx
999.99
      0.00
-999.99

insert  into  t3  values(124);
insert  into  t3  values(1.24);
insert  into  t3  values(-999.99);
insert  into  t3  values(1000);
select  *  from  t3;


create  table   t4(
pay   double(7,2)  
);
xxxxx.xx
99999.99
-99999.99


create  table   t5(
name    char(5),
addrhome   char(30),
email   varchar(25)
);

insert   into  t5  values

("bob","beijing","bob@163.com");

select  * from  t5;

-----------------------------------------------------时间函数------------------------------------------------------------------
create  table  t6(
name   char(15),
age      tinyint   unsigned,
pay      float(7,2),
email   varchar(30),
birthday    date,
up_time     time,
start_year  year,
party          datetime
);

desc   t6;

insert into  t6  values

("lanyiqun",18,26800,"lyq@tedu.cn",20181001,083000,

1990,20180501220000);

select   *  from  t6;

mysql> select  now();
mysql> select  year(  now() );
mysql> select  year( 20191120 );
mysql> select  month(  now() );
mysql> select  day(  now() );
mysql> select  date(  now() );
mysql> select  time(  now() );

insert  into  t6  values( "lucy", 21 , 18800,

"lucy@tedu.cn" , date( now() ), time(now()) ,  year

(20111218) , now()  );

insert  into  t6(name,start_year)  values("tom",69);

+++++++++++++++++++++
create  table  t7  (
meetting   datetime,
party          timestamp
);
desc  t7;
insert into  t7  values( now() , now() );
insert into  t7(party)  values(20161123184518);
insert into  t7(meetting )   values(20201123153000);
select  * from t7;
+++++++++++++++++++
create  table  t8(
name  char(15),
sex      enum("boy","girl","no"),
likes    set("woman","game","money","flim","eat")
);

desc   t8;

insert into t8  values

("guoxuehao","boy","game,flim,eat");

insert into t8  values("xierongyue",  3  ,"money,eat");

select   * from  t8;

 

zerofill 用0补位
mysql> create table t12(
    -> name char(5),
    -> level int(3) zerofill,
    -> money int(5) zerofill
    -> );
Query OK, 0 rows affected (0.26 sec)


mysql> desc t12;
+-------+--------------------------+------+-----+---------+-------+
| Field | Type                     | Null | Key | Default | Extra |
+-------+--------------------------+------+-----+---------+-------+
| name  | char(5)                  | YES  |     | NULL    |       |
| level | int(3) unsigned zerofill | YES  |     | NULL    |       |
| money | int(5) unsigned zerofill | YES  |     | NULL    |       |
+-------+--------------------------+------+-----+---------+-------+

值不允许为空(not null)
mysql> create table t13(level int(3) zerofill not null);
Query OK, 0 rows affected (0.27 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值