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,不然默认值不生效。

相关推荐
Bert.Cai20 分钟前
MySQL CURTIME()函数详解
数据库·mysql
Bert.Cai21 分钟前
MySQL CURDATE()函数详解
数据库·mysql
NGSI vimp34 分钟前
MySQL|MySQL 中 `DATE_FORMAT()` 函数的使用
数据库·mysql
秋936 分钟前
MySQL8.0.46 与 MySQL8.4.9:跨越代际的深度差异解析与升级全指南
mysql
HAWK eoni43 分钟前
Mysql 驱动程序
数据库·mysql
xxjj998a1 小时前
Laravel4.x核心特性全解析
android·mysql·laravel
何中应1 小时前
CentOS 7安装、卸载MySQL数据库(二)
数据库·mysql·centos
梁萌2 小时前
mysql使用事件做日志表数据转移
数据库·mysql
lThE ANDE2 小时前
MySQL中的TRUNCATE TABLE命令
数据库·mysql
STER labo2 小时前
mysql配置环境变量——(‘mysql‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件解决办法)
数据库·mysql·adb