Linux数据库Mysql增删改查
Linux数据库Mysql增删改查
从安装数据库到增删改查
apt install mariadb-server
安装好后初始化
mysql_secure_installation
查
查询现有的库
show databases;
进入库
use mysql;
查询表
show tables;
查询表结构
desc mysql;
查询表内容
select * from mysql;
查询创建数据库信息
select create database mysql;
查询表创建信息
select create table use;
条件查询
select name,age from user where name="wang";
增
创建数据库
CREATE DATABASE school
创建表
create table db(id int,name varchar(10),sex enum("m","f"),age int);
增加数据
insert into db(id,name,sex,age) values(1,"wing","m",18); //字符必须引用
安装表字段顺序插入
insert into db values(4,"xiaosan","f",10);
插入新增指定的数据
insert into t1 set id=6,math=65; //新增数据可以只插入指定的数据
更新数据
update db1 set name="wang" where id=1; //条件是id
改
修改表名
rename table db1 to t1;
添加新字段
alter table db1 add job int(10);
修改数据类型
mysql> alter table t1 modify chinese int(5) not null;
修改名称、数据类型、修饰符
mysql> alter table t1 change chinese china int(6);
删
删除表字段
alter table db1 drop wang;
删除表
delete table db1;
删除多张表
drop table t1,t2,t3;
删库
drop database 数据库名;
复制表
复制查询内容
create table t10(select * from t3); //创建表的时候把另一个表的内容全部复制来
也可以复制指定查询的字段
create table t10(select id,name from t3);
复制指定查询的表
insert into t3 select * from t10 where id=9; //复制指定的表里的指定内容
进阶
进阶创建表
创建表字段
CREATE TABLE ces (
id INT PRIMARY KEY AUTO_INCREMENT NOT NULL, //主键唯一,id自增,不能为空
name VARCHAR(20) NOT NULL,
sex ENUM('male', 'female') DEFAULT 'male' NOT NULL, //不填默认为
hir_data DATE NOT NULL,
post VARCHAR(50),
job VARCHAR(100),
gongzhi DOUBLE(15, 2) NOT NULL,
office INT,
dep_id INT
);
进阶插入表字段
按照顺序插入表内容
INSERT INTO ces (name, sex, hir_data, post, job, gongzhi, office, dep_id)
VALUES
('jack', 'male', '2018-02-02', 'instructor', 'teach', 5000, 501, 100),
('tom', 'male', '2018-02-03', 'instructor', 'teach', 5500, 501, 100),
('robin', 'male', '2018-02-02', 'instructor', 'teach', 8000, 501, 100),
('alice', 'female', '2018-02-02', 'instructor', 'teach', 7200, 501, 100),
('wing', 'male', '2018-02-02', 'hr', 'hrcc', 600, 502, 101),
('harry', 'male', '2018-02-02', 'hr', NULL, 6000, 502, 101),
('emma', 'female', '2018-02-06', 'sale', 'salecc', 20000, 503, 102),
('christine', 'female', '2018-02-05', 'sale', 'salecc', 2200, 503, 102),
('zhuzhu', 'male', '2018-02-05', 'sale', NULL, 2200, 503, 102),
('gougou', 'male', '2018-02-05', 'sale', '', 2200, 503, 102);
进阶查询
条件查询
SELECT DISTINCT post FROM ces; //不显示重复
算数
SELECT name, gongzhi*2 FROM ces; //工资乘以2
大于小于
select gongzhi from ces where gongzhi>500 and gongzhi<10000
反过来
select gongzhi from ces where not gongzhi>5000 ; //工资不大于5000的
匹配字符
select gongzhi from ces where gongzhi BETWEEN 2000 AND 5000; //取反也是not
查询为空
select job from ces where job is null; //查询为空
select job from ces where job is not null;//不为空
按内容查询或
SELECT gongzhi FROM ces WHERE salary=4000 OR salary=5000 OR salary=6000 ;
SELECT gongzhi FROM ces WHERE salary IN (4000,5000,6000,9000) ;
排序
SELECT gongzhi FROM ces WHERE order by gongzhi; //从小到大
SELECT gongzhi FROM ces WHERE order by gongzhi desc;//大到小
按分组查询
SELECT dep_id,GROUP_CONCAT(name) FROM ces group by dep_id;
包含查询
SELECT * from ces where name like '%J%';//名字里面包含j的
函数
COUNT()
: 用于计算指定列或表中的行数。MAX()
: 用于找到指定列或表中的最大值。MIN()
: 用于找到指定列或表中的最小值。AVG()
: 用于计算指定列或表中的平均值。DATABASE()
: 用于返回当前数据库的名称。USER()
: 用于返回当前用户的名称。NOW()
: 用于返回当前日期和时间。SUM()
: 用于计算指定列或表中数值的总和。PASSWORD()
: 用于对字符串进行加密,通常用于用户密码的存储。MD5()
: 用于计算字符串的 MD5 哈希值。SHA1()
: 用于计算字符串的 SHA1 哈希值。POWER()
: 用于计算一个数的指定次幂。
数据类型
-
整数
int类型 -
浮点型
float 单精度
duoble 双精度
decimal 定点型 -
字符串类型
char
varchar 能存放跟多 -
枚举类型
enum 固定的数只能选一个
set 两个都可以选 -
日期类型
year
1978年 可以写成 78
2008年 可以写成08
data
2022年3月8号,可以写成如下格式输入给mysql 2022/03/08 2022-03-08
time
050510 05:05:10
权限管理
创建用户
create user 'wang'@'%' identified by 'qwer123123';
授权用户
grant all on *.* to 'wang'@'%' identified by 'qwer123';
5.7版本数据库可以直接授权没有的用户,使用授权语句会创建不存在的用户。
删除用户
DROP USER 'wang'@’localhost’;
会删除localhost的用户,可以存在其他授权地址的同名用户。
用语句在库里面删除
delete from mysql.user where user='wang' AND host='localhost';\
刷新权限
FLUSH PRIVILEGES;
查看自己的授权
SHOW GRANTS\G
看其他用户权限
SHOW GRANTS FOR admin1@'%'\G
配置文件设置跳过密码
skip-grant-tables
改用户名
RENAME USER old_name TO new_name;
其他配置以及语句
状态
show status;
进程列表
show processlist;
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果