mysql的增删改查,mysql常用命令
编译安装mysql/mariadb文档:mysql编译/mariadb编译
yum安装mysql 8.0
vi /etc/yum.repos.d/mysql.repo
[mysql]
name=mysql8.0
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-8.0-community-el7-x86_64/
gpgcheck=0
yum -y install mysql-community-server
systemctl start mysqld
systemctl enable mysqld
mysql 8.0需要手动查看密码,然后修改密码后才能登录
cat /var/log/mysqld.log |grep password
mysql -u root -p'<qdmCZnRs6WV'
alter user 'root'@'localhost'IDENTIFIED BY 'Test12#$'; 修改密码,重新登录后即可使用
1、CREATE语句
1.1 CREATE 和DATABASE数据库
官网文档:CREATE-DATABASE
HELP CREATE 查看帮助
HELP CREATE DATABASE
CREATE DATABASE test1; 创建数据库,(按数据库默认字符集和排序创建)
CREATE DATABASE test2 CHARACTER SET utf8mb4 collate utf8mb4_0900_ai_ci; 指定数据库字符集为utf8mb4,排序规则为utf8mb4_0900_ai_ci
1.2 CREATE和TABLE(表格)
官网文档:CREATE-TABLE
表格的字段类型:字段类型
HELP CREATE TABLE
进入数据库才能创建表格
use test1;
创建student表,字段(列)为id,name,age,gender,后面的是字段类型和属性
create table student (id int unsigned primary key auto_increment,name varchar(10),age tinyint unsigned,gender enum('M','F') default 'M');
unsigned 不设置符号
primary key 设置为主键,不能为空
auto_increment 自动增长
tinyint 单个字节整数
int 整数
enum('M','F') 单选项
default 'M' 默认值
1.3 CREATE和USER(用户)
官网文档:CREATE-USER
HELP CREATE USER
创建账户aa,密码为Test12#$,访问IP段为192.168.116.%
CREATE USER 'aa'@'192.168.116.%' IDENTIFIED BY 'Test12#$';
mysql 8.0的密码插件默认是caching_sha2_password,指定老版本的密码插件方式为mysql_native_password
CREATE USER 'bb'@'192.168.116.%' IDENTIFIED WITH mysql_native_password BY 'Test12#$';
1.4 CREATE和VIEW
SELECT user,host,plugin FROM mysql.user; 查询某个表格的部分数据
use test2; 进入数据库
将查询的部分表格数据保存为视图(其实相当于另存为表格,不过格式有所不同)
CREATE VIEW t_view AS SELECT user,host,plugin FROM mysql.user;
SHOW TABLES; 查看视图生成
SELECT * FROM t_view; 查看视图的内容
1.5 CREATE和FUNCTION(自定义函数)
创建一个表格
CREATE TABLE t1 (tid int,name varchar(20));
INSERT t1(tid,name)VALUES('1','aa'),('2','bb'),('3','cc');
自定义一个函数,当函数的值=表格的某一列的值,删除行
mysql 8.0版本需要开启这个才能自定义函数
set global log_bin_trust_function_creators=ON;
use test2; 进入数据库
创建函数 //开始,//结尾
DELIMITER //
CREATE FUNCTION deleteT1(id SMALLINT UNSIGNED) RETURNS VARCHAR(20)
BEGIN
DELETE FROM t1 WHERE tid = id;
RETURN (SELECT COUNT(*) FROM t1);
END//
DELIMITER ;
SELECT deleteT1(1); 调用函数,删除t1中tid为1的行
SELECT * FROM t1; 再次查看t1表格
函数解析:
DELIMITER // 表示把原本的结束符;改为//
下面表示创建一个函数deleteT1,里面有2个字段
CREATE FUNCTION deleteT1(id SMALLINT UNSIGNED) RETURNS VARCHAR(20)
BEGIN 这个表示函数开始
DELETE FROM t1 WHERE tid = id; 定义当t1表格的tid=函数的id的值时,删除行
RETURN (SELECT COUNT(*) FROM t1); 返回t1表格剩下的行数
END// 结束符
DELIMITER ; 将//还原为;
1.6 CREATE和PROCEDURE(存储过程)
mysql 8.0版本需要开启这个才能自定义函数
set global log_bin_trust_function_creators=ON;
use test2; 进入数据库
创建表格
CREATE TABLE t1(id int auto_increment primary key,name char(10),age int);
创建存储过程
delimiter $$
create procedure PRt1()
begin
declare i int;
set i = 1;
while i < 1001
do insert into t1(name,age) values (concat('aa',i),i);
set i = i +1;
end while;
end$$
delimiter ;
存储过程解析
delimiter $$ #将结束符;转换为$$
create procedure PRt1() #创建存储过程PRt1
begin #开始存储过程
declare i int; #定义变量i,类型为整数型
set i = 1; #设置i的初始值
while i < 1001 #定义循环,当i<1001
#当i<1001时,不断插入数据到t1表格
do insert into t1(name,age) values (concat('aa',i),i);
set i = i +1; #定义i=i+1,不断递增
end while; #结束while循环
end$$ #结束存储过程
delimiter ; #将结束符$$还原为;
call PRt1; 调用存储过程
SELECT count(*) FROM t1; 查看插入了1000条数据
1.7 CREATE和TRIGGER(触发器)
触发器:当某个条件发生时,触发另外一个条件
创建2个表格
CREATE TABLE t1(id int,name varchar(20)); 创建t1表,2个字段
CREATE TABLE t2(t1_count int DEFAULT 0); 创建t2表
INSERT INTO t2(t1_count)VALUES(0); 插入t2的第一行的值为0
SELECT * FROM t1; 查看t1表为空
SELECT * FROM t2; 查看t2表的行值为0
创建触发器
CREATE TRIGGER t1_insert
AFTER INSERT
ON t1 FOR EACH ROW
UPDATE t2 SET t1_count=t1_count+1;
触发器解析
CREATE TRIGGER t1_insert #创建触发器t1_insert
AFTER INSERT #通过插入触发
ON t1 FOR EACH ROW #当t1表格每个行增加时
UPDATE t2 SET t1_count=t1_count+1; #更新t2表格的值+1
INSERT t1(id,name)VALUES('1','aa'),