MySQL
默认端口为3306
在MySQL中关键字不区分大小写
语句常用分号 `;` 来结束
目录
1.数据定义语言(Data Definition Language,DDL)
2.数据查询语言(Data Query Language,DQL)
3.数据操作语言(Data Manipulation Language,DML)
4.数据控制语言(Data Control Language,DCL)
一.SQL语言的组成
1.数据定义语言(Data Definition Language,DDL)
DDL用于定义数据库的结构和模式,包括创建、修改和删除数据库对象,如表、视图、索引和约束等。常见的DDL语句包括CREATE、ALTER和DROP等。
2.数据查询语言(Data Query Language,DQL)
DQL用于从数据库中查询和获取数据,它是SQL的核心部分。常见的DQL语句是SELECT,用于从表中检索数据。
3.数据操作语言(Data Manipulation Language,DML)
DML用于在数据库中执行数据的插入、更新和删除操作。常见的DML语句包括INSERT、UPDATE和DELETE等。
4.数据控制语言(Data Control Language,DCL)
DCL用于控制数据库的访问权限和安全性,包括授权用户的访问权限、撤销权限、管理用户角色等。常见的DCL语句包括GRANT和REVOKE等。
二.数据定义语言
1.CREATE
在MySQL当中CREATE语句可以用来创建数据库、表、视图、存储过程、函数或其他数据库对象。
2.1.1创建数据库
CREATE DATEBASE demo;
CREATE DATEBASE语句可以用来创建新的数据库,其中“demo”是你要创建的数据库名称。
2.1.2创建表
CREATE TABLE student(
id int primary key,
name varchar(50),
class varchar(50)
);
CREATE TABLE语句可以用来创建新的表,这个语句中的id、name、class字串是你创建的表的列名,分别用于存储整数(int)和字符串(varchar)类型。
2.1.3创建视图
CREATE VIEW view_name AS
SELECT column1,column2, .....
WHERE condition;
CREATE VIEW语句可以用来创建新的视图,该视图时基于一个表或多个现有表的查询结果,可以指定需要的列、查询条件等。
2.1.4创建索引
CREATE INDEX index_name
ON table_name (column1,column2, ...);
CREATE INDEX语句用于创建表上的索引,以加快数据的检索速度。你可以指定需要创建索引的列。
2.1.5创建存储过程
CREATE PROCEDURE get_student_count()
BEGIN
SELECT COUNT(*) FROM student;
END;
CREATE PROCEDURE语句可以用来创建存储过程,这个例子存储了一个查询所有学生数量的语句。
除了上述用途,CREATE语句还可以用于创建用户、函数等数据库对象。请注意,在实际使用CREATE语句时,需要按照语法规则和要求提供正确的参数和选项,以确保创建过程正确无误。
2.ALTER
ALTER语句在MySQL中用于修改已经存在的数据库对象的命令。可以用于修改表、视图、索引等数据库对象的定义和属性
2.2.1修改表结构
ALTER TABLE table_name
ADD -- 或者其他的操作
这个语句可以用于对表结构进行添加列、修改列的数据类型、删除列、添加主外键约束等操作。
2.2.2修改视图定义
ALTER VIEW view_name AS
SELECT column1,column2,...
FROM new_table_name
WHERE condition;
这个语句可以用于修改视图的查询语句,需要注意的是,使用ALTER VIEW语句修改视图定义时,需要提供视图的完整定义,包括新的查询语句和列列表。修改视图定义后,原来的视图将被替换为新的定义。
3.DROP
DROP语句在MySQL中用于删除数据库对象的命令。可以用于删除数据库中的表、视图、索引、约束等对象。
DROP TABLE table_name;
TABLE可以替换成别的对象单词,table_name为对象的名字。
三.数据查询语言
1.SELECT
SELETE语句用于从一个或者多个表中查询数据,并且可以进行条件筛选、排序、分组以及去重等操作。
SELECT column1,column2,... FROM table_name
WHERE condtion
ORDER BY column1;
如果想要查询表内的所有列可以将列名的位置替换成`*` 。
SELECT * FROM table_name;
2.WHERE
`WHERE`是指你要进行数据筛选的条件。
主要拥有以下这些运算符。
比较运算符 | 说明 |
= | 等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
区间运算符 | 说明 |
BETWEEN...AND... | 在指定的范围内 |
NOT BETWEEN...AND... | 不在指定的范围内 |
IN | 判断某个列中的数据是否在给定的值当中 |
NOT IN | 判断某个列中的数据是否不在给定的值当中 |
此外还有一个运算符`LIKE`用于进行模糊查询,这个运算符可以搭配通配符进行使用。
例如`%`通配符,这个通配符表示任意字符,具体使用方法如下
SELECT * FROM bookstore
WHERE bookname LIKE 'MySQL%'; --表示查询书名以MySQL开头的书籍
SELECT * FROM bookstore
WHERE bookname LIKE '%MySQL'; --表示查询书名以MySQL结尾的书籍
SELECT * FROM bookstore
WHERE bookname LIKE '%MySQL%'; --表示查询书名含有MySQL的书籍
还有`_`通配符,这个通配符表示的是单个字符的占位符,具体使用方法如下
SELECT * FROM student
WHERE name LIKE '_三'; --表示查询第一个字为任意字符,后面跟‘三’
--还可以使用多个`_`来表示占用更多的位置
SELECT * FROM student
WHERE name LIKE '陈__'; --表示查询姓陈的学生,并且名字有三个字
3.GROUP BY
`GROUP BY`主要用于对列的数据进行分组去重,可以使用聚合函数(SUM、COUNT、AVG等)进行计算。
SELECT column1, column2, ... FROM table_name
GROUP BY column1, COUNT(column2), ...;
`GROUP BY`可以对一个或者多个列执行操作,并且可以搭配`HAVING`子句来对分组之后的数据进行筛选。
`HAVING`子句通常跟`GROUP BY`子句搭配使用。
`HAVING`子句出现在`GROUP BY`子句之后,`ORDER BY`子句之前
`HAVING`类似于`WHERE`子句可以使用各种运算表达式
SELECT * FROM student
GROUP BY class
HAVING class LIKE '%软件技术%';
4.ORDER BY
`ORDER BY`子句用于对查询结果进行排序,按照指定的列或表达式的值进行升序或降序排列。它通常出现在SELECT语句的最后。
SELECT * FROM student
GROUP BY class
HAVING class LIKE '%软件技术%'
ORDER BY class ASC;
`ORDER BY`子句可以对一个列或多个列的查询结果进行排序,如果没有指定排序方式,默认为升序。ASC表示升序,DESC表示降序。
5.LIMIT
`LIMIT`是SQL中用于限制查询结果返回的行数的子句。可以用于限制查询结果集的大小,以便在处理大量数据时提高查询性能或者仅返回所需的数据部分。
SELECT name
FROM student
LIMIT 18;
这个语句表示了返回18行数据。
6.JOIN
`JOIN`是SQL中用于将两个或多个表基于共同的列进行连接的操作。通过JOIN操作,可以在查询中使用多个表的数据,并根据指定的连接条件将它们合并在一起。
SELECT * FROM tbl_user
INNER JOIN tbl_borrowinfo
ON user.userid= tbl_borrowinfo.userid;
这个代码表示了通过两个表共同的列`userid``将两个表链接在一起查询,此外还有LEFT JOIN以及RIGHT JOIN这两个子句分别表示了返回第一个表和第二个表的数据。
四.数据操作语言
1.INSERT
`INSERT`语句用于向数据库表中插入新的数据。
INSERT INTO student(id, name, class)
VALUES (2022031099, '张三', '软件技术2班'),
(2022042355, '李四', '计算机应用1班'),
(2022235459, '王五', '软件技术1班');
`INSERT`语句可以插入一条或是多条数据。
2.UPDATE
`UPDATE`语句用于修改数据库表中现有的数据。
UPDATE student
SET id= 2023545322, name= '赵六';
3.DELETE
DELETE语句用于从数据库表中删除行
4.3.1删除全部数据
使用DELETE语句可以删除表中的所有数据,但是保留表的结构。
DELETE FROM student;
4.3.2删除指定行数据
可以使用WHERE子句来指定条件,删除符合条件的行。
DELETE FROM student
WHERE name LIKE '黄%';
使用DELETE语句时,请谨慎操作,确保提供正确的删除条件以及备份重要数据。删除操作是不可逆的,可能导致数据永久丢失。
五.数据控制语言
1.GRANT
`GRANT`语句用于授予用户对数据库对象的特定权限。
这些权限可以是DDL以及DML中的一些语句。
GRANT SELECT,ALTER
ON student
TO zhangsan@localhost;
上面这个代码表示了给`zhangsan@localhost`用户授予了对`student`表的查询以及修改权限。
2.REVOKE
`REVOKE`语句用于撤销用户对数据库对象的特定权限。
REVOKE ALTER
ON student
FROM zhangsan@localhost;
也可以使用该语句撤销用户的的所有权限。
REVOKE ALL PRIVILEGES ON *.* FROM zhangsan@localhost;
通过授予和撤销权限,可以限制用户对数据库对象的操作,并确保只有授权的用户才能执行特定的操作。这有助于确保数据的安全性和完整性