MySQL数据库的操作

SQL是啥:SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL包含以下4个部分:

1数据定义语句
关键字解释
DROP删除数据库和表对象
CREATE创建数据库和表等对象
ALTER修改数据库和表的结构对象
2数据操作语言
关键字解释
SELECT查询表中的数据
INSERT向表中插入新的数据
UPDATE更新表中的数据
DELETE删除表中的数据
3数据查询语言
关键字解释
SELECT查询表中的数据
4数据控制语言
关键字解释
GRANT赋予用户操作权限
REVOKE取消用户的操作权限
COMMIT确认对数据库中的数据进行的变更
ROLLBACK取消对数据库的数据进行的变更
示例操作

创建一个学生表

CREATE TABLE stu(
	id INT,
	name VARCHAR(30),
	sex CHAR(1)
	birth DATE,
	PRIMARY_KEY(student_id);

插入数据

INSERT INTO stu VALUSE(1,'张三')

查询

模糊查询使用关键LIKE从句

1、百分号(%):表示任意个或多个字符。可匹配任意类型和长度的字符。

select * from stu where name like ‘%张%’
在这里插入图片描述
2、下划线(_):表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:(可以代表一个中文字符)

select * from stu where name like ‘’;
在这里插入图片描述
ALTER DATABASE 修改数据库的全局属性

ALTER DATABASE [数据库名] { 
[ DEFAULT ] CHARACTER SET <字符集名> |
[ DEFAULT ] COLLATE <校对规则名>}

关键字解释

  • ALTER DATABASE 用于更改数据库的全局特性。
  • 使用 ALTER DATABASE 需要获得数据库 ALTER 权限。
  • 数据库名称可以忽略,此时语句对应于默认数据库。
  • CHARACTER SET 子句用于更改默认的数据库字符集。

删除数据库的操作

DROP DATABASE <数据库名>

修改表名

ALTER TABLE  旧表名 RENAME TO 新表明

修改字段名称

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型

修改字段数据类型

ALTER TABLE 表名 MODIFY 字段名 数据类型

删除字段

ALTER TABLE 表名 DROP 字段名

删除表操作

DROP TABLE 表名

删除被关联的其他表的主表

1先删除外键约束
ALTER TABLE 子表 DROP FOREIGN KEY fk_emp4_emp5;
2删除父表
DROP TABLE tb_emp4;

MYSQL查看表结构命令

DESC 表名

MYSQL数据表添加字段

在末尾添加字段
ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];
在开头添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST;
在中间位置添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] AFTER <已经存在的字段名>;

排序查询

selectfrom 
表名
where [查询条件]
group by [分组表达式]  
having [分组过滤条件]
order by [排序条件]    asc 升序  desc 降序
limit [offset,] count;  分页操作

操作例题

 SELECT user_id 用户id, COUNT(id) 下单数量 FROM t_order t  WHERE t.the_year = 2018
 GROUP BY user_id HAVING count(id)>=2 ORDER BY 下单数量 DESC LIMIT 1;

多字段先降序在升序
ELECT name,height FROM tb_student_info ORDER BY height DESC,name ASC;

MySQL去重操作
DISTINCT 关键字的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据给用户。

SELECT DISTINCT <字段名> FROM <表名>;码片

设置别名操作
表起别名

<表名> [AS] <别名>
SELECT stu.name,stu.height 表名 AS stu;

给字段起别名

<字段名> [AS] <别名>
SELECT name AS student_name, age AS student_age FROM tb_students_info;

分页操作
LIMIT 初始位置,记录数

SELECT * FROM student LIMIT 3,5;

条件查询

where 关键字

但条件查询
在 students数据表中查询年龄小于 22 的学生姓名
SELECT name,age FROM students WHERE age<22
多条件查询
在 tb_students_info 表中查询 age 大于 21,并且 height 大于等于 175 的学生信息,SQL 语句和运行结果如下
SELECT name,age,height FROM students WHERE age>21 AND height>=175;
在 tb_students_info 表中查询 age 大于 21,或者 height 大于等于 175 的学生信息,SQL 语句和运行结果如下。
SELECT name,age,height FROM students WHERE age>21 OR height>=175;
在 tb_students_info 表中查询 age 大于 21,并且 height 小于 175 的学生信息和 age 小于 21,并且 height 大于等于 175 的学生信息,SQL 语句和运行结果如下。
SELECT name,age,height FROM students WHERE age>21 XOR height>=175;

范围查询
BETWEEN AND 关键字

查询语句 BETWEEN 取值1 AND 取值2
SELECT name,age FROM students WHERE age BETWEEN 20 AND 23;

空值查询

下面使用 IS NULL 关键字来查询 students 表中 phone 字段是 NULL 的记录。

SELECT `name`,`login_date` FROM students WHERE phone IS NULL

交叉连接
SELECT <字段名> FROM <表1> CROSS JOIN <表2> [WHERE子句]
SELECT <字段名> FROM <表1>, <表2> [WHERE子句]

SELECT * FROM course CROSS JOIN students;
查询 course 表中的 id 字段和 students表中的 course_id 字段相等的内容, SQL 语句和运行结果如下:
SELECT * FROM tb_course CROSS JOIN tb_students_info WHERE students.course_id = course.id;

内连接
SELECT <字段名> FROM <表1> INNER JOIN <表2> [ON子句]

在 students 表和 course 表之间,使用内连接查询学生姓名和相对应的课程名称,SQL 语句和运行结果如下。
 SELECT s.name,c.course_name FROM students s INNER JOIN course c ON s.course_id = c.id;

外连接
SELECT <字段名> FROM <表1> LEFT OUTER JOIN <表2> <ON子句>

  • 字段名:需要查询的字段名称。
  • <表1><表2>:需要左连接的表名。
  • LEFT OUTER JOIN:左连接中可以省略 OUTER关键字,只使用关键字 LEFT JOIN。
  • ON 子句:用来设置左连接的连接条件,不能省略

左连接

在 students 表和 course 表中查询所有学生姓名和相对应的课程名称,包括没有课程的学生,SQL 语句和运行结果如下。
SELECT s.name,c.course_name FROM students s LEFT OUTER JOIN course c ON s.`course_id`=c.`id`;

右连接
SELECT <字段名> FROM <表1> RIGHT OUTER JOIN <表2> <ON子句>

  • 字段名:需要查询的字段名称。
  • <表1><表2>:需要右连接的表名。
  • RIGHT OUTER JOIN:右连接中可以省略 OUTER关键字,只使用关键字RIGHTJOIN。
  • ON 子句:用来设置右连接的连接条件,不能省略。
在 students表和 course 表中查询所有课程,包括没有学生的课程,SQL 语句和运行结果如下。
ELECT s.name,c.course_name FROM students s RIGHT OUTER JOIN course c ON s.`course_id`=c.`id`;

修改数据
UPDATE <表名> SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ]
[ORDER BY 子句] [LIMIT 子句]

在这里插入在 tb_courses 表中,更新 course_id 值为 2 的记录,将 course_grade 字段值改为 3.5,将 course_name 字段值改为“DB”,输入的 SQL 语句和执行结果如下所示代码片

UPDATE tb_courses_new SET course_name='SB',course_grade=40  WHERE course_id=3;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值