mysql的增删改查,mysql常用命令

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'),
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值