SQL语言的结构(6块)

结构化查询语言包含6个部分:

1、数据定义语言(DDL):其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREATE TABLE 或 DROP TABLE);为表加入索引等。

        1.1例如:CREATE DATABASE mydb1,创建一个名为 mydb1 的数据库。如果这个数据已经存在,那么会报错。
        例如 CREATE DATABASE IF NOT EXISTSmydb1,在名为 mydb1 的数据库不存在时创建该库,这样可以避免报错。

        1.2例如:DROP DATABASE mydb1,删除名为 mydb1 的数据库。如果这个数据库不存在,那么会报错。DROP DATABASE IF EXISTS mydb1,就算 mydb1不存在,也不会的报错。

        1.3修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8
修改数据库 mydb1 的编码为 utf8。注意,在 MySQL 中所有的 UTF-8 编码都
不能使用中间的“-”,即 UTF-8 要书写为 UTF8。

2、数据操作语言(DML:Data Manipulation Language):其语句包括动词INSERT、UPDATE和DELETE。它们分别用于添加、修改和删除。

2.1 INSERT

语法 1:INSERT INTO 表名(列名 1,列名 2, …) ;

INSERT INTO stu(sid, sname,age,gender) VALUES('s_1001', 'zhangSan', 23, 'male');

语法 2:
INSERT INTO 表名 VALUES(值 1,值 2,…);
因为没有指定要插入的列,表示按创建表时列的顺序插入所有列的值:

INSERT INTO stu VALUES('s_1002', 'liSi', 32, 'female');

注意:所有字符串数据必须使用引用!

2.2  UPDATE 修改数据

语法:
UPDATE 表名 SET 列名 1=值 1, … 列名 n=值 n [WHERE 条件];

UPDATE stu SET sname=’zhangSanSan’, age=’32’, gender=’female’ WHERE sid=’s_1001’;

UPDATE stu SET age=age+1 WHERE sname=’zhaoLiu’;

2.3 DELETE 删除数据

语法 1:
DELETE FROM 表名 [WHERE 条件];

DELETE FROM stu WHERE sname=’chenQi’ OR age > 30;
DELETE FROM stu;

语法 2:
TRUNCATE TABLE 表名;

TRUNCATE TABLE stu;

DELETE 和 TRUNCATE 两者之间的区别
虽然 TRUNCATE 和 DELETE 都可以删除表的所有记录,但有原理不同。DELETE的效率没有 TRUNCATE 高!
TRUNCATE 其实属性 DDL 语句,因为它是先 DROP TABLE,再 CREATE TABLE。
而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的(回滚是事务的知识!)

3、数据控制语言(DCL):它的语句通过GRANT或REVOKE实现权限控制,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。

3.1 创建用户

语法:
CREATE USER ‘用户名’@地址 IDENTIFIED BY '密码';

CREATE USER ‘user1’@localhost IDENTIFIED BY ‘123’;
CREATE USER ‘user2’@’%’ IDENTIFIED BY ‘123’;

3.2 给用户授权

语法:
GRANT 权限 1, … , 权限 n ON 数据库.* TO ‘用户名’@地址;

GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO user1@localhost;
GRANT ALL ON mydb1.* TO user2@localhost;

3.3 撤销授权

语法:
REVOKE 权限 1, … , 权限 n ON 数据库.* FROM ‘用户名’@地址;

REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;

3.4 查看用户权限

语法:
SHOW GRANTS FOR ‘用户名’@地址;

SHOW GRANTS FOR user1@localhost;

3.5 删除用户

语法:
DROP USER ‘用户名’@地址;

DROP USER ‘user1’@localhost;

3.6 修改用户密码(以Root身份)

语法 :
use mysql;
alter user '用户名'@localhost identified by '新密码';

4、数据查询语言(DQL: Data Query Language):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其它类型的SQL语句一起使用。

select … from student where 条件 group by 分组字段 having 条件 order by 排序字段

执行顺序:from->where->group by->having->order by->select

注意:group by 通常和聚合函数(avg(),count()…)一起使用 ,经常先使用group by关键字进行分组,然后再进行集合运算。

group by与having 一起使用,可以限制输出的结果,只有满足条件表达式的结果才会显示。

having和where的区别:

两者起作用的地方不一样,where作用于表或视图,是表和视图的查询条件。having作用于分组后的记录,用于选择满足条件的组。
 

5、事务控制语言(TCL):它的语句能确保被DML语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。

6、指针控制语言(CCL):它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

你可能感兴趣的:(数据库基础,sql,数据库)