因为之前sql学的太烂了,想整理一下
一.什么是 SQL?
SQL 是用于访问和处理数据库的标准的计算机语言。
- SQL 指结构化查询语言
- SQL 使我们有能力访问数据库
- SQL 是一种 标准计算机语言
二.SQL 能做什么?
- SQL 面向数据库执行查询
- SQL 可从数据库取回数据
- SQL 可在数据库中插入新的记录
- SQL 可更新数据库中的数据
- SQL 可从数据库删除记录
- SQL 可创建新数据库
- SQL 可在数据库中创建新表
- SQL 可在数据库中创建存储过程
- SQL 可在数据库中创建视图
- SQL 可以设置表、存储过程和视图的权限
三.sql分类
DQL(数据查询语言,用来查询记录(数据))
1.SELECT 语句
SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
SELECT 列名称 FROM 表名称
SELECT * FROM 表名称 (* :通配符,表示所有列)
注释:SQL 语句对大小写不敏感。SELECT 等效于 select。
SELECT TABLE_SCHEMA FROM COLUMNS
这里我们在columns这个表中查询table——schema这列
SELECT * FROM COLUMNS
查询columns这个表
2.WHERE 子句
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
SELECT COLUMN_NAME FROM `COLUMNS` WHERE COLUMN_NAME='TABLE_SCHEMA'
这里是在columns这个表中查找column_name这一列当COLUMN_NAME='TABLE_SCHEMA'的时候
3.GROUP BY 语句
用于结合合计函数,根据一个或多个列对结果集进行分组。
简单来说就是select两列,一列用了函数,一列没有,然后用group by来组合一下
SELECT TABLE_NAME,sum(ORDINAL_POSITION) FROM `COLUMNS` group by TABLE_NAME
查询两列,一列是table_name,一列是ordinal_position求和
4.HAVING 语句
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
所以having 一定要有group by存在
SELECT TABLE_NAME,sum(ORDINAL_POSITION) FROM `COLUMNS` GROUP BY TABLE_NAME HAVING sum(ORDINAL_POSITION)>30
查询两列,table_name,还有ordinal_position求和,用group by来组合两列,用having来限制条件
5.limit
用来限定查询结果的起始行,以及总行数。
SELECT * from columns limit 0,5
从0开始查询,查询5条数据
DDL(数据定义语言,用来定义数据库对象:库、表、列等;)
1.create
CREATE DATABASE 语法:CREATE DATABASE database_name
create database mmm
创建一个名为mmm的数据库
SQL CREATE TABLE 语法
CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... )
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
在mmm数据库中创建一个表名为persons 的表,其中有4列,每列容量都是255
2.drop
3.desc
查看表的结构
DML(数据操作语言,用来定义数据库记录(数据);)
1.INSERT INTO 语句
INSERT INTO 语句用于向表格中插入新的行。
语法
INSERT INTO 表名称 VALUES (值1, 值2,....)
我们也可以指定所要插入数据的列:
INSERT INTO 表名 (列1, 列2,...) VALUES (值1, 值2,....)
插入新的行
insert into mmm values('1','wy','18','women')
在mmm表中插入一行数据1,wy,18,women
在指定的列中插入数据
insert into mmm (sname,age)values('wwy','20')
在mmm表中插入一行,只有sname,age这两列有数据
2.UPDATE 语句
Update 语句用于修改表中的数据。
语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
更新某一行中的一个列
update mmm set sname='lll' where age='18'
更新snmae的值为lll当age的值为18的时候
更新某一行中的若干列
UPDATE mmm set sname='123',age='30' WHERE gender='women'
更新mmm表中的sname为123,age为30 当gender=‘women’的时候
3.DELETE 语句
DELETE 语句用于删除表中的行。
语法
DELETE FROM 表名称 WHERE 列名称 = 值
删除行
DELETE from mmm where sname='123'
删除mmm表中的sanme为123的这一行
删除所有行
delete FROM mmm
删除mmm表中的所有行
DCL(数据控制语言,用来定义访问权限和安全级别;)
1.创建用户
语法:CREATE USER ‘用户名’@地址 IDENTIFIED BY '密码';
CREATE USER 'user1'@localhost IDENTIFIED BY '123'
2.给用户授权
语法:GRANT 权限 1, … , 权限 n ON 数据库.* TO ‘用户名’@地址;
GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON dvwa.* TO 'user1'@localhost;
GRANT ALL ON dvwa.* TO user2@localhost;
3.撤销授权
语法:REVOKE 权限 1, … , 权限 n ON 数据库.* FROM ‘用户名’@地址;
REVOKE CREATE,ALTER,DROP ON dvwa.* FROM 'user1'@localhost;
4.查看用户权限
语法:SHOW GRANTS FOR ‘用户名’@地址;
SHOW GRANTS FOR 'user1'@localhost;
5.删除用户
语法:DROP USER ‘用户名’@地址;
DROP USER 'user1'@localhost