MySQL语句学习

MySQL学习

在学习数据库命令之前首先了解一下MySQL,首先MySQL是DBMS(数据库管理系统),DBMS是位于用户与操作系统之间的一层数据管理软件。DB(数据库)是指:长期储存在计算机内的、有组织的、可共享的大量数据集合。DBS(数据库系统)是指在计算机应用系统中引入数据库后的系统构成。数据库系统由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(和用户)构成。

DBS包含了DBDBMS,而我们使用的MySQL是DBMS,用于管理数据库。

这里给出一些SQL语言的操作动词

在这里插入图片描述

图片二

在这里插入图片描述

数据定义:操作的对象是表视图和引索(数据的结构)

数据操纵:操作对象是元组(数据)

数据控制:用来管理权限(一般涉及用户权限)

为了方便理解,可以认为CREATE,DROP,ALTER字段标注的操作的都是表级别的,而INSERT,UPDATA,DELETE操作的都是数据级别的。

1.数据库操作
# 登陆数据库管理系统
mysql -u root -p 123456
# 查看所有数据库
SHOW DATABASES;
# 创建一个数据库name对应数据库的名字
CREATE DATABASE name;
# 删除一个数据库
DROP DATABASE name;
# 使用数据库
USE name;
2.表创建和查询操作

SHOW 查询数据库或者表等

CREATE 创建表和数据库或者视图

# 查看所有表
SHOW TABLES ;


# 创建表(这里约束加在最后面,也可以紧跟类型后面)
CREATE TABLE Student(
id INT, 
name VARCHAR(10), 
PRIMARY KEY (id), FOREIGN KEY (id) REFERENCES n(id), UNIQUE (name));
# 直接将查询结果导入或复制到新创建的表
CREATE TABLE n SELECT * FROM m;
# 新创建的表与一个存在的表的数据结构类似
CREATE TABLE m LIKE n;


# 查询语句(SELECT指定要显示的属性列,FROM指定查询对象(基本表或视图),)
SELECT id,name FROM Student;
#(ALL显示全部,DISTINCT消除重复)
SELECT ALL name FROM Student;
SELECT DISTINCT name FROM Student;
#(ORDER BY对查询结果表按指定列值的升序或降序排序,升序:ASC;降序:DESC;默认升序)
SELECT * FROM n ORDER BY name, id DESC ;
#(WHERE子句:指定查询条件)上下两句等价
SELECT  * FROM  Student WHERE id = '95001';
SELECT  * FROM  Student WHERE id LIKE '95001';
#(GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。)
SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno;
3.表的删除和修改结构

DROP 删除数据库或表

ALTER 修改表属性(属性)

IF EXISTS 判断是否存在

RENAME 重命名

MODIFY 变更属性

# 删除一个存在表()
DROP TABLE IF EXISTS m;
# 更改存在表的名称
ALTER TABLE n RENAME m;
RENAME TABLE n TO m;
# 添加字段
ALTER TABLE n ADD age VARCHAR(2) ;
# 删除字段
ALTER TABLE n DROP age;
# 更改字段属性和属性
ALTER TABLE n CHANGE age a INT;
# 只更改字段属性
ALTER TABLE n MODIFY age VARCHAR(7) ;
4.表数据的修改

INSERT INTO 插入数据

DDELETE 删除数据

UPDATE 更改数据

# 增加数据(INSERT INTO后面跟插入的表,VALUES跟值,必须确保完整性)
INSERT INTO n VALUES (1, 'tom', '23'), (2, 'john', '22');
INSERT INTO n SELECT * FROM n;  # 把数据复制一遍重新插入(先查询,后插入)
# 删除数据
DELETE FROM n WHERE id = 2; #删除满足条件的数据
# 更改符合条件的数据(UPDATE后跟表名,SET跟修改内容)
UPDATE n SET name = 'tom' WHERE id = 2;
5.视图的创建

CREATE VIEW创建视图,并且视图必须依附在表的基础上,也就是说没有表就不能创建视图。

# 创建视图
CREATE VIEW v AS SELECT id, name FROM n;
CREATE VIEW v(id, name) AS SELECT id, name FROM n;
# 查看视图(与表操作类似)
SELECT * FROM v;
DESC v;
# 更改视图
CREATE OR REPLACE VIEW v AS SELECT name, age FROM n;
ALTER VIEW v AS SELECT name FROM n ;
# 删除视图
DROP VIEW IF EXISTS v;
6.数据库用户权限

REVOKE 撤销权限

FLUSH 刷新权限表,使其权限生效

GRANT 授权

# 增加用户
CREATE USER 'test'@'localhost' IDENTIFIED BY 'test';
INSERT INTO mysql.user(Host, User, Password) VALUES ('localhost', 'test', Password('test'));    # 在用户表中插入用户信息,不推荐
# 删除用户
DROP USER 'test'@'localhost';
DELETE FROM mysql.user WHERE User='test' AND Host='localhost';
FLUSH PRIVILEGES ;
# 更改用户密码
SET PASSWORD FOR 'test'@'localhost' = PASSWORD('test');
UPDATE mysql.user SET Password=Password('t') WHERE User='test' AND Host='localhost';
FLUSH PRIVILEGES ;
# 用户授权
GRANT ALL PRIVILEGES ON *.* TO test@localhost IDENTIFIED BY 'test';
# 授予用'test'密码登陆成功的test@localhost用户操作所有数据库的所有表的所有的权限
FLUSH PRIVILEGES ;   # 刷新系统权限表,使授予权限生效
# 撤销用户授权
REVOKE DELETE ON *.* FROM 'test'@'localhost';   # 取消该用户的删除权限(DELETE表数据的删除)
7.联接
# 左外联接
SELECT * FROM m LEFT JOIN n ON m.id = n.id;
# 右外联接
SELECT * FROM m RIGHT JOIN n ON m.id = n.id;
# 交叉联接或内联接(以下前三者在官方文档中是可替代关系,效果相同)
SELECT * FROM m INNER JOIN n ON m.id = n.id;
SELECT * FROM m CROSS JOIN n ON m.id = n.id;
SELECT * FROM m JOIN n ON m.id = n.id;
SELECT * FROM m, n ON m.id = n.id;     # 待确定
# 类似全连接full join的联接用法
SELECT id,name FROM m
UNION
SELECT id,name FROM n;

8.数据库备份和还原
# 数据库备份
mysqldump -u root -p db_name > file.sql
mysqldump -u root -p db_name table_name > file.sql
# 数据库还原
mysql -u root -p < C:\file.sql

本文语句例子来自博客:https://blog.csdn.net/csdn_0_001/article/details/79051481.,本人只做小小的总结和归纳。

数据库练习网站:http://sqlzoo.net/wiki/SQL_Tutorial.

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值