美文网首页
sql系列 语法分类

sql系列 语法分类

作者: 飞猪的浪漫 | 来源:发表于2023-09-17 13:11 被阅读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。

    相关文章

      网友评论

          本文标题:sql系列 语法分类

          本文链接:https://www.haomeiwen.com/subject/tucwvdtx.html