MySQL数据库安装和管理(sql语句)

一、数据库基本概念

1、数据库

  • 数据
    描述事物的符号记录
    包括数字,文字,图形,图像,等
    以‘记录’形式统一格式进行存储

  • 将不同的记录组织在一起
    用来存储具体的数据
  • 数据库
    表的集合,是存储数据的仓库
    以一定的组织方式存储的相互有关的数据集合
  • 数据库基本概念
    数据库管理系统(DBMS):是实现对数据库资源有效组织、管理和存取的系统软件
  • 数据库系统:是一个人机系统,有硬件、OS、数据库、应用软件、DBMS和用户组成,用户可以通过DBMS或应用程序操作数据库

2、主流数据库介绍

1)关系数据库

  • 实体:也称实例、对应现实世界中可区别于其他对象的“事件”或“事物”
  • 属性:实体具有的某一特性,一个实体有多个属性
  • 联系:实体之间的对应关系称为联系
  • 所有实体和实体之间联系的集合构成一个关系数据库
  • Oracle 、mysql 、SQLserver 、DB2 、access等

2)非关系数据库

  • 非关系型数据库也称NoSQL
  • 存储数据不以关系模型为据点,不需要固定的表格式
  • 非关系型数据库优点:
    数据库可高并发读写
    对海量数据高效率存储和访问
    数据库具有高扩展性和高可用性
    常用数据库:Redis 、MongoDB等

二、MySQL数据库安装

1、MySQL数据库介绍

  • 一款开源关系型数据库
  • Orace旗下产品
  • 遵守GPL协议(开源),可免费使用
  • 特点:
    服务稳定
    开源,成本低
    多线程,多用户
    基于C/S架构
    下载网址:http://www.dev.mysql.com/downloads

2、编译安装

[root@localhost ~]# tar zxvf mysql-boost-5.7.20.tar.gz -C /opt/
[root@localhost ~]# cd /opt/mysql-5.7.20/
[root@localhost mysql-5.7.20]# useradd -s /sbin/nologin mysql
[root@localhost mysql-5.7.20]#yum -y install ncurses ncurses-devel bison cmake
[root@localhost mysql-5.7.20]#
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \   
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \                                    
-DWITH_SYSTEMD=1
[root@localhost mysql-5.7.20]# make
[root@localhost mysql-5.7.20]# make install
[root@localhost mysql-5.7.20]# cd /usr/local/
[root@localhost local]# ll
drwxr-xr-x. 11 root root 151 8  11 09:57 nginx
[root@localhost local]# chown -R mysql:mysql /usr/local/mysql/       //更改属主属组为mysql
[root@localhost local]# ll
drwxr-xr-x. 11 mysql mysql 197 8  11 12:18 mysql
[root@localhost local]# cd /etc/
[root@localhost etc]# vim my.cnf
[client]
port=3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock

[mysql]
port=3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock

[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
character_set_server=utf8
pid-file=/usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
server-id=1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

设置环境变量
[root@localhost etc]# vim /etc/profile
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
export PATH   //声明为全局变量
[root@localhost etc]# source /etc/profile   //加载环境变量
初始化数据库
[root@localhost etc]# cd /usr/local/mysql/
[root@localhost mysql]# ls
bin      COPYING-test  include  man         README       share          usr
COPYING  docs          lib      mysql-test  README-test  support-files
[root@localhost mysql]# ls bin/
mysql_install_db 
mysqld 
[root@localhost mysql]# bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data         //初始化数据库
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
设置mysql密码
mysqladmin -u root -p password "123456"  
mysql -u root -p  登录
mysql> show databases;    查看数据库
mysql> quit  退出

三、MySQL数据库管理

1、查看数据库信息命令

  • show databases; ##查看数据库信息
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| info               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

  • use [数据库名]
mysql> use info;   ##当前位置在info数据库中
Database changed
  • show tables; ##查看表信息
mysql> show tables;
+----------------+
| Tables_in_info |
+----------------+
| info_bak       |
+----------------+
1 row in set (0.00 sec)

  • describe [数据库名.]表名 ##查看表结构
mysql> describe info.info_bak;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(5)       | NO   | PRI | NULL    | auto_increment |
| name    | varchar(50)  | NO   |     | NULL    |                |
| score   | decimal(5,2) | YES  |     | NULL    |                |
| address | varchar(40)  | YES  |     | 未知    |                |
+---------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
  • describe 表名 ##查看表结构
mysql> describe info_bak;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(5)       | NO   | PRI | NULL    | auto_increment |
| name    | varchar(50)  | NO   |     | NULL    |                |
| score   | decimal(5,2) | YES  |     | NULL    |                |
| address | varchar(40)  | YES  |     | 未知    |                |
+---------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

  • select * from; 表名 ##显示表中所有信息
mysql> select * from info_bak;
+----+----------+-------+----------+
| id | name     | score | address  |
+----+----------+-------+----------+
|  1 | zhangsan | 80.00 | 未知     |
|  2 | lisi     | 70.00 | 未知     |
|  3 | lisi     | 70.00 | 未知     |
|  4 | zhaoliu  | 40.00 | 未知     |
|  5 | zhaoliu  | 40.00 | 未知     |
|  6 | tianqi   | 55.00 | shanghai |
|  7 | wangwu   | 77.00 | nanjing  |
+----+----------+-------+----------+
7 rows in set (0.01 sec)

  • flush privilege; 刷新数据库

2、SQL语句概述

1)SQL语言

  • Structured Query Language缩写,即结构化查询语言
  • 关系型数据库的标准语言
  • 用于维护管理数据库
    包括数据查询、数据更新、访问控制、对象管理等功能

2)SQL分类(DDL,DML,DQL,DCL)

DDL:数据定义语言(create创建、drop删除)
  • 可用于创建数据库对象,如库,表,索引等
  • create database 数据库名; ##创建数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| info               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

mysql> create database test1;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| info               |
| mysql              |
| performance_schema |
| sys                |
| test1              |
+--------------------+
6 rows in set (0.00 sec)

  • create table 表名(字段1名称 字段1类型 字段1约束,字段2…)
mysql> use test1;
Database changed
mysql> create table test1_01(id int(3) not null primary key auto_increment,name char(10) not null,score decimal(5,2),address varchar(20) default '未知');
Query OK, 0 rows affected (0.01 sec)

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

注:字段1名称:属性名称,自定义
字段1类型:int(5) 整型 00000-99999
double 浮点型 8字节
decimal(5,2) 有效数字5位,小数点后面保留2位 如:100.00 099.50
float 单精度 浮点
char (10) 固定长度字符串
varchar (20) 可变长度字符串
char 字符
字段1约束:非空约束:内容不允许为空
主键约束:非空且唯一 标识
默认值 :若没有填数字,默认预先设定的值填写
自增特性:auto_increment

  • drop 删除数据库和表
mysql> show tables;   
+----------------+
| Tables_in_info |
+----------------+
| info_bak       |
| test1_01       |
+----------------+
2 rows in set (0.01 sec)
mysql> drop table info.test1_01;   ##删除表
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+----------------+
| Tables_in_info |
+----------------+
| info_bak       |
+----------------+
1 row in set (0.00 sec)
mysql> drop database test1;   ##删除数据库
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| info               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
DML:数据操纵语言
  • insert 插入新数据
语法:insert into 表名(字段1,字段2.....) values(字段1的值,字段2的值,....)
mysql> select * from info_bak;
+----+----------+-------+---------+
| id | name     | score | address |
+----+----------+-------+---------+
|  1 | zhangsan | 80.00 | 未知    |
+----+----------+-------+---------+
1 row in set (0.00 sec)
mysql> insert into info_bak(id,name,score,address) values(2,'lisi',78,'nanjing'),(3,'gwu',99,'shanghai');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
mysql> select * from info_bak;
+----+----------+-------+----------+
| id | name     | score | address  |
+----+----------+-------+----------+
|  1 | zhangsan | 80.00 | 未知     |
|  2 | lisi     | 78.00 | nanjing  |
|  3 | wangwu   | 99.00 | shanghai |
+----+----------+-------+----------+
3 rows in set (0.00 sec)
mysql> create table tmp as select * from info_bak where score > 80;  #将筛选的数据放在新建的tmp新表中
Query OK, 1 row affected (0.02 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> show tables;
+----------------+
| Tables_in_info |
+----------------+
| info_bak       |
| tmp            |
+----------------+
2 rows in set (0.00 sec)
  • update 更新原有数据
语法:update 表名 set 字段名1 = 1[,字段名2=] where 条件表达式;
mysql> select * from info_bak;
+----+----------+-------+----------+
| id | name     | score | address  |
+----+----------+-------+----------+
|  1 | zhangsan | 80.00 | 未知     |
|  2 | lisi     | 78.00 | nanjing  |
|  3 | wangwu   | 99.00 | shanghai |
+----+----------+-------+----------+
3 rows in set (0.00 sec)
mysql> update info_bak set name='zhaoliu' where name='wangwu';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from info_bak;
+----+----------+-------+----------+
| id | name     | score | address  |
+----+----------+-------+----------+
|  1 | zhangsan | 80.00 | 未知     |
|  2 | lisi     | 78.00 | nanjing  |
|  3 | zhaoliu  | 99.00 | shanghai |
+----+----------+-------+----------+
3 rows in set (0.00 sec)
  • delete 删除不需要的数据
delete from 表名 where 条件表达式;   ##删除表中指定数据
delete from 表名;    ##删除所有数据
DQL:数据查询语言
  • select命令
select 字段1,字段2....from 表名;  ##查看指定数据
select * from auth.users;   ##查看所有
DCL:数据控制语言
  • 设置用户权限(用户不存在时,则新建用户)
grant 权限列表 on 数据库名.表名 to 用户名@来源地址 [identified by '密码']
示例:grant select on auth.* to 'tom'@'localhost' identified by '123456'   ##允许tom用户在本地有查看auth数据库中所有表的权限,密码为123456
  • 查看用户权限
show grants for 用户名@来源地址
示例:show grants for ‘tom’@‘localhost’;  ##查看指定用户权限

补充:

select user from mysql.user;   ##查看mysql中的用户
grant select on *.* to 'jerry'@'192.168.130.10' identified by '123456'  ##添加创建用户,并给权限
show grants;查看当前
show grants for 'jerry'@'localhost'  ##查看指定用户权限
  • 撤销用户权限
revoke 权限列表 on 数据库名.表名 from 用户名@来源地址;
示例: revoke all on *.* from 'jerry'@'localhost';  # 撤销权限

3、数据表高级操作

  • 清空表:
delete from tablename;   
truncate table tmp;  #删除数据,表结构还在
drop   删除表
  • 临时表:临时建立的表,用于保存一些临时数据,断开连接表就被删除
mysql>create temporary table 'mytmp' ('id' int(10) not null auto_increment,'name' varchar(32) character set utf8 collate utf8_bin not null,'level' int(10) not null,primary key(id)) engine=innoDB default charset=utf8;

temporary临时表
primary key(id)主键约束,可放在后面定义,也可放在前面
engine=innoDB 引擎
default charset=utf8 默认全局设置字符集

  • 克隆表:
create table tmp as select * from info;
like方法
mysql>create table test like mytmp;  #复制表的结构
mysql>inset into test select * from mytmp;  ##复制数据

show create table方法
mysql>show create mytmp\G
mysql>create table test;
mysql>insert into test select * from mytmp;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值