mysql基本使用

如果要删除mariadb,一定要这样删除!!!(先停服务,卸载2个程序,再删除2个相关文档)

停服务
# systemctl stop mariadb

卸载2个程序
# rpm -e --nodeps mariadb-server --nodeps就是安装时不检查依赖关系
# rpm -e --nodeps mariadb

删除2个相关文档
# rm -rf /etc/my.cnf
# rm -rf /var/lib/mysql/* 默认存储数据的目录
######################################################################
安装mysql

解包
# tar -xvf mysql-5.7.17.tar
# ls *.rpm 一共11个rpm包!

安装依赖包
# yum -y install perl-JSON
# rpm -Uvh mysql-community-*.rpm community(社区)

查看并删除,已安装的相关依赖包
一共11个程序!(MySQL的client, server, common, libs, devel, embedded, minimal, test这几类rpm包)

# rpm -qa | grep -i mysql (-qa查看系统安装的所有rpm包。-i忽略大小写)
mysql-community-client-5.7.17-1.el7.x86_64
mysql-community-common-5.7.17-1.el7.x86_64 common常见的,普通的,公共的
mysql-community-devel-5.7.17-1.el7.x86_64
mysql-community-embedded-5.7.17-1.el7.x86_64 embedded嵌入的,内含的
mysql-community-embedded-compat-5.7.17-1.el7.x86_64
mysql-community-embedded-devel-5.7.17-1.el7.x86_64
mysql-community-libs-compat-5.7.17-1.el7.x86_64 compat兼容性
mysql-community-libs-5.7.17-1.el7.x86_64
mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64 minimal最小的。debuginfo调试信息
mysql-community-server-5.7.17-1.el7.x86_64
mysql-community-test-5.7.17-1.el7.x86_64


# ls *.rpm 一共11个rpm包!
mysql-community-client-5.7.17-1.el7.x86_64.rpm
mysql-community-common-5.7.17-1.el7.x86_64.rpm
mysql-community-devel-5.7.17-1.el7.x86_64.rpm
mysql-community-embedded-5.7.17-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.17-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.17-1.el7.x86_64.rpm
mysql-community-libs-5.7.17-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64.rpm
mysql-community-server-5.7.17-1.el7.x86_64.rpm
mysql-community-test-5.7.17-1.el7.x86_64.rpm

# rm -rf *.rpm
######################################################################
启动mysql,并查看相关信息

重启、开机自启、查看状态
# systemctl start mysqld
# systemctl enable mysqld
# systemctl status mysqld

# netstat -tunlp | grep :3306
# ps -C mysqld -C是通过名字或命令搜索进程
或者# ps aux | grep -i mysqld aux查看此进程的详细信息

查看默认数据库存储目录和配置文件
# ls /var/lib/mysql
# ls /etc/my.cnf

查看系统同名的(用户名和组)
# grep mysql /etc/passwd
# grep mysql /etc/group

查看默认数据库存储目录的(所有者和所属组)信息
# ls -l /var/lib/mysql #所有者和所属组都是mysql
# ls -ld /var/lib/mysql #所有者和所属组都是mysql
######################################################################
mysql -h数据库服务器IP地址或主机名 -u数据库里的用户名 -p密码

mysql -hlocalhost -uroot -p密码

初始登陆密码放在日志文件 /var/log/mysqld.log里面
# ls /var/log/mysqld.log
# grep password /var/log/mysqld.log
2018-11-16T02:24:41.343814Z 1 [Note] A temporary password is generated for root@localhost: RU(7s-nfPe5M
#冒号后面就是初始密码,不包括空格
# mysql -hlocalhost -uroot -p'RU(7s-nfPe5M'
######################################################################
登陆到数据库后是这样的页面
... ...
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
mysql> \h # \h可以看到各个命令
######################################################################
常见错误:

mysql> show databases; #用初始密码登陆后,是无法看到库的信息的。因为它认为不安全,必须改了root密码后,才能看到。
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

# mysql #无密码登陆被拒绝
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

# mysql -uroot -p123456 #在命令行用明文输入密码,它会认为不安全,所以报错
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

翻译:MySQL:[警告]在命令行界面上使用密码可能是不安全的。
错误1045(28000):对用户“root”@本地主机拒绝访问(使用密码:是)
######################################################################
# mysql -uroot -p 只能通过交互的方式输入密码,这样不明文显示,比较安全
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.17 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


翻译如下:
欢迎访问MySQL监控器。命令结束;或\g。
您的MySQL连接ID为6。
服务器版本:5.7.17MySQL社区服务器(GPL)

版权(C)2000, 2016,Oracle和/或其附属公司。版权所有。

甲骨文是甲骨文公司和/或其注册商标。
附属公司。其他名称可以是其各自的商标。
业主。

键入“帮助”或“h”以寻求帮助。键入“C”以清除当前输入语句。

MySQL >


英文单词:monitor(监控器),affiliate(附属公司),reserved(保留的),registered(注册的),trademark(商标),Corporation(公司),
respective(各自的),current(现在的),statement(陈述,声明)
######################################################################
mysql> help;

For information about MySQL products and services, visit:
http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:
http://dev.mysql.com/
To buy MySQL Enterprise support, training, or other products, visit:
https://shop.mysql.com/

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
? (\?) Synonym for `help'.
clear (\c) Clear the current input statement.
connect (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit (\e) Edit command with $EDITOR.
ego (\G) Send command to mysql server, display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql server.
help (\h) Display this help.
nopager (\n) Disable pager, print to stdout.
notee (\t) Don't write into outfile.
pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute an SQL script file. Takes a file name as an argument.
status (\s) Get status information from the server.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
use (\u) Use another database. Takes database name as argument.
charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.

For server side help, type 'help contents'


翻译如下:
MySQL >帮助;

有关MySQL产品和服务的信息,请访问:
HTTP://www. Myq.L.COM/
对于开发人员信息,包括MySQL参考手册,请访问:
HTTP://DEV.MyQu.L.COM/
购买MySQL企业支持、培训或其他产品,请访问:
HTTPS://Suff.MySqL.COM/

所有MySQL命令列表:
请注意,所有文本命令必须首先在线,并结束与';
? (\?) 查看帮助。跟\h,或者help的作用一样。
清除(\c)清除当前输入的语句。
连接(\r)重新连接到服务器。可选的参数是DB和主机。重新连接,通常用于被剔除或异常断开后重新连接。
定界符(\d)SQL语句定界符。设置命令终止符,缺省为;,比如我们可以设定为/来表示语句结束。
编辑 (\e) 用$EDITOR编辑(e)编辑命令。编辑缓冲区的上一条SQL语句到文件,缺省调用vi,文件会放在/tmp路径下。
自我(\G)向MySQL服务器发送命令,垂直显示结果。控制结果显示为垂直显示。
退出(\q)退出mysql。与退出相同。
转到(\g)发送命令到MySQL服务器。
帮助(\h)显示此帮助。
nopager(\n)关闭页设置,打印到标准输出。
notee(\t) 不写入外部文件。关闭输出到文件。
pager(\P)设置pager方式,可以设置为调用more,less等等,主要是用于分页显示。
打印(\p)打印当前命令。
提示 (\R)改变mysql的提示符。
退出(\q)退出mysql。
rehash(\#)自动补齐相关对象名字。
源代码 (\.) 执行SQL脚本文件。将文件名作为参数。
状态 (\s) 从服务器获取状态信息。
系统 (\!) 执行系统命令。
TEE (\T) 设置输出文件,操作结果输出到文件。
使用(\u)指定数据库。将数据库名称作为参数。
字符集 (\C) 指定字符集
警告 (\W)在每个语句之后显示警告信息。
无警告(\w)在每个语句之后不显示警告信息。

获得服务器端的相关帮助信息,键入“帮助内容”
######################################################################
mysql> alter user root@"localhost“ identified by "123qqq...A"。
"> ;
"> ^C

如果打错了要摁ctrl+c停止!!!
或者\c 可以停止当前的命令!!!
------------------------------
mysql> alter user root@"localhost" identified by "123qqq...A"; #更改密码为123qqq...A
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

[root@mysql50 mysql]# mysql -hlocalhost -uroot -p'123qqq...A'
mysql> show databases;
--------------------------------
在IP地址是192.168.4.51的主机上运行mysql服务
数据库管理员root本机登陆密码是123qqq...A
--------------------------------------------
数据库服务的基本使用:
1,修改密码策略:
# mysql -hlocalhost -uroot -p'123qqq...A'
mysql> show variables like "%password%";
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=6;
mysql> alter user root@"localhost" identified by "123456";

# vim /etc/my.cnf
... ...
[mysqld]
validate_password_policy=0 #在[mysqld] 下面添加这2行
validate_password_length=6 #在[mysqld] 下面添加这2行
... ...


# systemctl start mysqld
# mysql -hlocalhost -uroot -p123456
mysql> show databases;
----------------------------------------------------------------
2,把数据存储到数据库服务器上的过程:
专业术语:DB DBMS DBS

# ls /var/lib/mysql #这是存放所有库和表的默认位置

# pwd
/var/lib/mysql/mysql

# ls event*
event.frm event.MYD event.MYI

变量和密码区分大小写!!! 其他不区分。

函数 database()
select database(); #可以看到当前所在的库
------------------------------------------------------
mysql> use mysql

mysql> select database(); #可以看到当前所在的库
+------------+
| database() |
+------------+
| mysql |
+------------+
-------------------------------------------------------------------
查看已有的表
create database studb;
use studb;
show tables;

建表
create table studb1.stuinfo( name char(10),age int );
use studb1;
show tables;

查看表结构
desc studb1.stuinfo;
use studb1;
show tables;
desc stuinfo;
desc mysql.user;

记录管理命令:
查看所有表记录:
select * from studb1.stuinfo;

插入表记录
insert into studb.stuinfo values("bob",21),("tom",23);

修改表记录
update studb.stuinfo set age=19 where name="bob";
update studb.stuinfo set age=18;
select * from studb1.stuinfo;

删除所有表记录
delete from studb.stuinfo where name="tom";
delete from studb.stuinfo;
select * from studb1.stuinfo;

删除表
drop table studb.stuinfo;
不要删除数据库的那4个原来就有的库和里面的文件
-------------------------------------------------------------------
数据库服务器<-----库<------表<------记录<------列

要想在表里面写中文
要设置表使用的字符集 gb2312 / utf8


mysql> show create table t1;

页面显示
+-------+----------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+----------------------------------------------------------------------------------------+
| t1 | CREATE TABLE `t1` (
`id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+----------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


mysql> create table 学生表( 姓名 char(3), 年龄 int )
-> DEFAULT CHARSET=utf8; #支持汉字的字符集utf8


mysql> insert into 学生表 values ("张三丰",19);


mysql> select * from 学生表;
+-----------+--------+
| 姓名 | 年龄 |
+-----------+--------+
| 张三丰 | 19 |
+-----------+--------+
------------------------------------------------------
数据类型:

数值类型:
整型 9 -19
浮点型 12.88 -12.77 #有小数点的数
单精度 float
双精度 doubleq`a1


xxxxx.xx
gz float(7,2) #7代表整数位和小数位一共有7个数,2代表小数位共有2个


mysql> create table t1(
-> age tinyint unsigned,
-> pay float(7,2)
-> );

insert into t1 values(15,28000);

select * from t1;
----------------------------------------------------------------------
mysql> create table t3 (level tinyint );

 


name char(255) #存储速度char更快。

name varchar(65532) #长度不一样的可以使用varchar,但是要用少一些,要不会影响性能,速度慢


没有指定多少字符的时候,默认1个字符。
----------------------------------------------------------------------
> create table t4(
-> name char(3),
-> home varchar(9),
-> mail varchar(30)
-> );


mysql> insert into t4 values(
-> "bob",
-> "shenzhen",
-> "bob@163.com"
-> );

mysql> select * from t4;
------------------------------------------------------------------------
年 year yyyy 2018 默认用4位数表示
时间(时分秒) time hhmmss 164330 040000(凌晨4点整) 小时24小时制,00代表半夜12点。秒最多59
日期(年月日) date yyyymmdd 20181131
日期时间(年月日时分秒) timestamp 和 datetime
yyyymmddhhmmss
20181116164930


mysql> create table t6(
-> name char(10),
-> birthday date,
-> start year,
-> upwork time,
-> party datetime
-> );


mysql>desc t6;
+----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| name | char(10) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| start | year(4) | YES | | NULL | |
| upwork | time | YES | | NULL | |
| party | datetime | YES | | NULL | |
+----------+----------+------+-----+---------+-------+


mysql>insert into t6 values("bob",20181120,2000,083000,20181128203000);


mysql> select * from t6;
+------+------------+-------+----------+---------------------+
| name | birthday | start | upwork | party |
+------+------------+-------+----------+---------------------+
| bob | 2018-11-20 | 2000 | 08:30:00 | 2018-11-28 20:30:00 |
+------+------------+-------+----------+---------------------+
########################################################################
使用时间函数获取时间给 字段赋值

mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2018-11-16 17:46:08 |
+---------------------+

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

mysql> select curdate();
+------------+
| curdate() |
+------------+
| 2018-11-16 |
+------------+
1 row in set (0.00 sec)

mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 17:49:20 |
+-----------+

 

mysql> insert into t6 values(
-> "jerry",
-> date(now()),
-> year(20171112165020),
-> time(now()),
-> now()
-> );


mysql> select * from t6;
+-------+------------+-------+----------+---------------------+
| name | birthday | start | upwork | party |
+-------+------------+-------+----------+---------------------+
| bob | 2018-11-20 | 2000 | 08:30:00 | 2018-11-28 20:30:00 |
| jerry | 2018-11-16 | 2017 | 17:28:48 | 2018-11-16 17:28:48 |
+-------+------------+-------+----------+---------------------+

---------------------------------------------------------------------------------------------------------------------
mysql> use db2;
mysql> create table t1(start year);

mysql> desc t1;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| start | year(4) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+

mysql> insert into t1 values(79);
mysql> insert into t1 values(21);
mysql> insert into t1 values(00);

mysql> select * from t1;
+-------+
| start |
+-------+
| 1979 |
| 2021 |
| 0000 |
+-------+


mysql> create table t2 (meeting datetime,party timestamp);

mysql> desc t2;
+---------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-----------+------+-----+-------------------+-----------------------------+
| meeting | datetime | YES | | NULL | |
| party | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+---------+-----------+------+-----+-------------------+-----------------------------+


mysql> insert into t2(meeting) values(20181112153012);
mysql> select * from t2;
+---------------------+---------------------+
| meeting | party |
+---------------------+---------------------+
| 2018-11-12 15:30:12 | 2018-11-17 09:36:31 |
+---------------------+---------------------+


mysql> insert into t2(party) values(20201212151617);
mysql> select * from t2;
+---------------------+---------------------+
| meeting | party |
+---------------------+---------------------+
| 2018-11-12 15:30:12 | 2018-11-17 09:36:31 |
| NULL | 2020-12-12 15:16:17 |
+---------------------+---------------------+

mysql> insert into t2 values(20121212121212,20300505202020);
mysql> select * from t2;
+---------------------+---------------------+
| meeting | party |
+---------------------+---------------------+
| 2018-11-12 15:30:12 | 2018-11-17 09:36:31 |
| NULL | 2020-12-12 15:16:17 |
| 2012-12-12 12:12:12 | 2030-05-05 20:20:20 |
+---------------------+---------------------+
########################################################################
mysql> create table t7(
-> name char(10),
-> likes set("eat","sleep","game","file"),
-> sex enum("boy","girl","no")
-> );


mysql> insert into t7 values(
-> "bob",
-> "eat,sleep",
-> "boy"
-> );


mysql> select * from t7;
+------+-----------+------+
| name | likes | sex |
+------+-----------+------+
| bob | eat,sleep | boy |
+------+-----------+------+
#######################################################################
创建前任信息表 db2库 建persondog表
自定义字段个数 类型 存储前任信息

mysql> use db2
mysql> select database();
mysql> create table persondog(姓名 char(3),年龄 char(2),地址 varchar(30),邮箱 varchar(30)) DEFAULT CHARSET=utf8;

mysql> desc persondog;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| 姓名 | char(3) | YES | | NULL | |
| 年龄 | char(2) | YES | | NULL | |
| 地址 | varchar(30) | YES | | NULL | |
| 邮箱 | varchar(30) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+


mysql> insert into persondog values("唐里斯",30,"深圳市","tang@163.com");
mysql> insert into persondog values("方哈森",29,"北京市","sen@qq.com");
mysql> insert into persondog values("陈卡卡",31,"杭州市","kaka@sina.com");
mysql> insert into persondog values("类思安",30,"上海市","an@163.com");

mysql> insert into persondog values(
-> "哈利森",
-> 31,
-> "常宁市",
-> "haha@sina.com"
-> );


mysql> select * from persondog;
+-----------+--------+-----------+---------------+
| 姓名 | 年龄 | 地址 | 邮箱 |
+-----------+--------+-----------+---------------+
| 唐里斯 | 30 | 深圳市 | tang@163.com |
| 方哈森 | 29 | 北京市 | sen@qq.com |
| 陈卡卡 | 31 | 杭州市 | kaka@sina.com |
| 类思安 | 30 | 上海市 | an@163.com |
| 哈利森 | 31 | 常宁市 | haha@sina.com |
+-----------+--------+-----------+---------------+
5 rows in set (0.00 sec)
#############################################################################
打建MySQL数据库服务器:装备,配置,起服务。
服务基本使用:把数据存储到数据库服务器上的过程
库/表的管理命令
记录管理:insert update delete select

数据类型:字符,数值,日期时间,枚举
int 有/无符号 char varchar unsigned 时间函数 set enum
字段的值是汉字 DEFAULT CHARSET=utf8

tinyint 1字节 11111111 255
int 4字节 32个二进制1
----------------------------------------------------------------------------------------------
创建新数据库失败
mysql> create database db1;
ERROR 1007 (HY000): Can't create database 'db1'; database exists
mysql> create database db3;

 

posted @ 2019-04-29 00:54  安于夏  阅读(224)  评论(0编辑  收藏  举报