sql系列 语法分类

2023-09-17  本文已影响0人  飞猪的浪漫

SQL 分类

DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;

DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);

DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;

DQL(Data Query Language):数据查询语言,用来查询记录(数据)

DDL:数据定义语言 defining

基本操作

查看所有数据库:show databases;

切换数据库:use mydb1,切换到 mydb1 数据库;

1.操作数据库

创建数据库:CREATE DATABASE [IF NOT EXISTS] mydb1;

例如:CREATE DATABASE mydb1,创建一个名为 mydb1 的数据库。如果这个数据已经存在,那么会报错。

例如 CREATE DATABASE IF NOT EXISTS mydb1,在名为 mydb1 的数据库不存在时创建该库,这样可以避免报错。

删除数据库:DROP DATABASE [IF EXISTS] mydb1;

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

修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8

修改数据库 mydb1 的编码为 utf8。注意,在 MySQL 中所有的 UTF-8 编码都

不能使用中间的“-”,即 UTF-8 要书写为 UTF8。

创建表

CREATETABLE表名(列名 列类型,列名 列类型,......);

查看表的结构

DESC 表名;

删除表

DROP TABLE 表名;

修改表

添加列:给 stu 表添加 classname 列

ALTER TABLE stu ADD (classname varchar(100));

修改列的数据类型:修改 stu 表的 gender 列类型为 CHAR(2)

ALTER TABLE stu MODIFY gender CHAR(2);

修改列名:修改 stu 表的 gender 列名为 sex

ALTER TABLE stu change gender sex CHAR(2);

删除列:删除 stu 表的 classname 列

ALTER TABLE stu DROP classname;

修改表名称:修改 stu 表名称为 student

ALTER TABLE stu RENAME TO student;

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

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

语法 1:

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

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

INSERT INTO stu(sid, sname)VALUES('s_1001','zhangSan');

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

UPDATE stu SET sname=’liSi’, age=’20’ WHERE age>50 AND gender=’male’;

UPDATE stu SET sname=’wangWu’,

 age=’30’ WHERE age>60 OR gender=’female’;

UPDATE stu SET gender=’female’ WHERE gender IS NULL 

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

DELETE FROM stu WHERE sid=’s_1001’003B;

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

DELETE FROM stu;

两者之间的区别:

虽然 TRUNCATE 和 DELETE 都可以删除表的所有记录,但有原理不同。DELETE的效率没有 TRUNCATE 高!

TRUNCATE 其实属性 DDL 语句,因为它是先 DROP TABLE,再 CREATE TABLE。

而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的(回滚是事务的知识!)。

1.创建用户

语法:

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

CREATE USER ‘user1’@localhostIDENTIFIEDBY‘123’;CREATEUSER‘ user2’@’%’IDENTIFIEDBY‘123’;

2.给用户授权

语法:

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

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

GRANT ALL ON mydb1.*TOuser2@localhost;

3.撤销授权

语法:

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

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

4.查看用户权限

语法:

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

SHOW GRANTS FOR user1@localhost;

5.删除用户

语法:

DROP USER ‘用户名’@地址;

DROP USER ‘user1’@localhost;

6.修改用户密码(以root身份

语法:

use mysql;

alter user '用户名'@localhost identified by '新密码';

语法:

select 列名 ----> 要查询的列名称

from 表名 ----> 要查询的表名称

where 条件 ----> 行条件

group by 分组列 ----> 对结果分组

having 分组条件 ----> 分组后的行条件

order by 排序列 ----> 对结果分组

limit 起始行, 行数 ----> 结果限定

数据查询的基本语法结构其实非常简单,就是要取数,

从哪个表里面取(单表简单,多表需要再join一下),

按照什么维度取,取哪个指标(聚合函数),限制条件是什么(where),

把结果聚合一下(group by),按照哪个字段排序(order by)这个基本上就够用了,复杂一些再来个Having。

上一篇下一篇

猜你喜欢

热点阅读