mysql8安装基础操作(一)

一、下载mysql8.0

1.查看系统glibc版本

这里可以看到glibc版本为2.17,所以下载mysql8.0的版本时候尽量和glibc版本对应

[root@node2 ~]# rpm -qa |grep -w glibc
glibc-2.17-222.el7.x86_64
glibc-devel-2.17-222.el7.x86_64
glibc-common-2.17-222.el7.x86_64
glibc-headers-2.17-222.el7.x86_64

2.下载包

官网地址

shell 复制代码
https://downloads.mysql.com/archives/community/

如下图:

具体下载地址如下:

shell 复制代码
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.36-linux-glibc2.17-x86_64.tar.xz

3.安装

shell 复制代码
[root@node2 ~]# tar xf mysql-8.0.36-linux-glibc2.17-x86_64.tar.xz 
[root@node2 ~]# mv mysql-8.0.36-linux-glibc2.17-x86_64 /usr/local/mysql8

创建数据目录
[root@node2 ~]# mkdir -p /data/mysql/data
[root@node2 ~]# mkdir -p /data/mysql/tmp

创建用户、修改文件权限
[root@node2 ~]# useradd mysql
[root@node2 ~]# chown -R mysql:mysql /usr/local/mysql8
[root@node2 ~]# chown -R mysql:mysql /data/mysql

4.配置my.cnf

这里是最简单的配置,能够启动即可

shell 复制代码
vim /etc/my.cnf
[client]
port = 3306
socket = /data/mysql/tmp/mysql.sock

[mysql]
no-auto-rehash

[mysqld]
user    = mysql
port    = 3306
basedir = /usr/local/mysql8
datadir = /data/mysql/data
socket  = /data/mysql/tmp/mysql.sock
mysqlx_socket = /data/mysql/tmp/mysqlx.sock
pid-file = /data/mysql/tmp/mysql.pid
character-set-server = utf8mb4
skip_name_resolve = 1

5.初始化数据库

shell 复制代码
cd /usr/local/mysql8/bin/
./mysqld --initialize-insecure  --user=mysql --basedir=/usr/local/mysql8/ --datadir=/data/mysql/data/

6.启动数据库

shell 复制代码
cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
/etc/init.d/mysqld start

重启命令如下
service mysqld restart

7.开机启动

mysql 复制代码
# 这样操作能成功,是因为启动脚本中有chkconfig的配置
chkconfig --add mysqld

二、database基本操作

1.mysql中的注释

在mysql中注释使用 #

2.查看所有数据库

mysql 复制代码
mysql> show databases;

3.切换数据库

mysql 复制代码
mysql> use sys;
Database changed

4.查看所有表

mysql 复制代码
mysql> show tables;

5.创建数据库

mysql 复制代码
mysql> create database mydb;
Query OK, 1 row affected (0.01 sec)

6.删除数据库

mysql 复制代码
mysql> drop database mydb;
Query OK, 0 rows affected (0.01 sec)

三、表的基本操作

1.数据类型

只写一些常见的数据类型

数据类型 大小 用途
int 4 bytes(4个字节) 普通大小整数
bigint 8 bytes(8个字节) 大整数
char 0-255 bytes 定长字符串
varchar 0-65535 bytes 变长字符串
date YY-MM-DD 日期
datetime YY-MM-DD HH:MM:SS 日期和时间
timestamp 时间戳

2.创建表

语法格式:

其中[] 中的内容可以写,也可以不写。

但是要注意:varchar类型的宽度必须指定

mysql 复制代码
create table 表名(
	字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],
	字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],
	字段名3 类型[(宽度)] [约束条件] [comment '字段说明'],
)[表的一些设置参数]

例子:

mysql 复制代码
mysql> create table student(id int,name varchar(20),age int,gender varchar(20),birthday date);

3.表结构相关操作

3.1 查看表的创建语句

mysql 复制代码
mysql> show create table student;

3.2 查看表结构

mysql 复制代码
mysql> desc student;

3.3 删除表

mysql 复制代码
mysql> drop table student;
Query OK, 0 rows affected (0.01 sec)

3.4 添加字段

语法:

mysql 复制代码
alter table 表名 add 列名 类型(长度) [约束];

例子:为student表添加about字段

mysql 复制代码
mysql> alter table student add about varchar(20);

3.5 修改字段名

语法

mysql 复制代码
alter table 表名 change 旧列名 新列名 类型(长度) [约束];

实例: 将about字段名改为news

mysql 复制代码
alter table student change about news varchar(20);

3.6 删除列

语法:

mysql 复制代码
alter table 表名 drop 列名;

例子:删除news字段

mysql 复制代码
mysql> 
mysql> alter table student drop news;

3.7 修改表名

语法:

mysql 复制代码
rename table 原表名 to 新表名;

例子: 将student表改为stu;

sql 复制代码
mysql> rename table student to stu;

4.insert语句

4.1 语法

语法1:根据字段名插入数据

mysql 复制代码
insert into 表(字段名1,字段名2,字段名3......) values(值1,值2,值3......);

语法2:向所有列插入数据

mysql 复制代码
insert into 表 values(值1,值2,值3......);

4.2 插入实例

全部插入为空值

mysql 复制代码
insert into student values();

插入具体值

mysql 复制代码
mysql> insert into student values(1,'zhangsan',20,'boy','2020-01-01');

5.update语句

语法:

mysql 复制代码
修改所有的列
update 表名 set 字段名=值,字段名=值,......;


修改满足条件的列
update 表名 set 字段名=值,字段名=值 where 条件;

实例:

mysql 复制代码
update  student set age=21 where name='zhangsan';

6.delete语句

语法:

sql 复制代码
删除表内所有内容
delete from 表;

删除表内指定的内容
delete from 表 whete 条件;

6.1 实例:

mysql 复制代码
delete from student;

delete from student where name='zhangsan';

6.2 删除值为NULL的行

mysql 复制代码
delete from student where id is NULL;

四、mysql约束

1.概念

约束的概念是出现在创建表的时候,会给字段创建对应的约束条件。约束的作用就是 "限制表中数据" 的条件

2.分类

条件 语法
主键约束 primary key(比较重要)
自增长约束 auto_increment(比较重要)
非空约束 not null
唯一性约束 unique
默认约束 default
零填充约束 zerofill
外键约束 foreign key

3.主键约束

3.1 概念

主键约束相当于 唯一约束 + 非空约束的组合。主键约束不允许重复,不允许出现空值

每个表最多只允许一个主键

当创建主键约束时,系统默认会在所在的列和列组合上建立对应的唯一索引

主键主要是为了标识一行的数据的唯一性

3.2 添加单列主键

在创建表的时候添加主键

mysql 复制代码
 create table teacher(
    # 这里给id字段设置了主键
 	id int primary key,
 	name char
 );

3.3 添加多列主键

多列主键 也叫做(联合主键)

语法:

sql 复制代码
create table 表 (
	字段1 类型 约束条件,
	......
	primary key(字段1,字段2)
	
)

3.4 alter 添加主键

如果表创建完毕了忘记了添加了主键,然后需要用alter添加

语法:

sql 复制代码
alter table 表名 add primary key(字段名);

例子:

sql 复制代码
alter table teacher add primary key(id);

3.5 删除主键

sql 复制代码
alter table  表名 drop primary key;

4.自增长约束

当主键定义为自增长后,这个主键的值就不需要用户输入数据了,而由数据库系统根据定义自动赋值

一张表只能有一列使用自增长约束

自增长字段的类型必须是整数类型

自增长的最大值受该字段数据类型的最大值限制,如果达到上线,会自动失效.

语法:在字段后边加上auto_increment

sql 复制代码
create table 表 (
	字段1 类型 auto_increment,
	字段2 类型 约束条件,
)

例子:

一般主键约束和自增长一起出现。

sql 复制代码
create table teacher(
	id int primary key auto_increment,
	name varchar(20)
);

插入数据

sql 复制代码
insert into teacher values(NULL,'zhangsan');
insert into teacher values(NULL,'lisi');
insert into teacher values(NULL,'wangwu');

结果如下:

sql 复制代码
mysql> select * from teacher;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
|  3 | wangwu   |
+----+----------+

5.非空约束

sql 复制代码
create table teacher(
	id int, 
	name char not null
);
sql 复制代码
#插入数据报错
mysql> insert into teacher values(1,NULL);
ERROR 1048 (23000): Column 'name' cannot be null

5.1 现有字段添加not null

sql 复制代码
alter table 表 modify 字段 类型 not null;

6.唯一约束

语法:创建表时添加

create table teacher(
	id int, 
	name char unique
);

创建完后的表

alter table teacher add unique(id);

7.默认约束

默认约束是用来指定某列的默认值

语法:

sql 复制代码
create table teacher(
	name varchar(20),
	age int default 20
);
sql 复制代码
insert into teacher (name) values('zhangsan');

mysql> select * from teacher;
+----------+------+
| name     | age  |
+----------+------+
| zhangsan |   20 |
+----------+------+

注意:这里不能插入NULL,不然默认值不生效。

相关推荐
瓜牛_gn2 小时前
mysql特性
数据库·mysql
数新网络4 小时前
《深入浅出Apache Spark》系列②:Spark SQL原理精髓全解析
大数据·sql·spark
师太,答应老衲吧6 小时前
SQL实战训练之,力扣:2020. 无流量的帐户数(递归)
数据库·sql·leetcode
Yaml47 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
追风林7 小时前
mac 本地docker-mysql主从复制部署
mysql·macos·docker
NiNg_1_2348 小时前
高级 SQL 技巧详解
sql
Hsu_kk9 小时前
MySQL 批量删除海量数据的几种方法
数据库·mysql
编程学无止境9 小时前
第02章 MySQL环境搭建
数据库·mysql
knight-n9 小时前
MYSQL库的操作
数据库·mysql
eternal__day11 小时前
MySQL_聚合函数&分组查询
数据库·mysql