• SQL语句分类和语法


    DQL:Data QueryLanguage 数据查询语言

    作用:   查询表中的字段             

    命令:   select         查询      

    ⑦select 查询列表
    ①from 表1 别名
    ②连接类型 join 表2
    ③on 连接条件
    ④where 筛选
    ⑤group by 分组列表
    ⑥having 筛选
    ⑧order by排序列表
    ⑨limit 起始条目索引,条目数;


     

     DML:Data Manipulation Language数据操纵语言

    作用:对数据库的数据进行相关操作(对表中的记录进行操作)

    命令: delete       删除表中一条或多条记录

               update     更改表中记录

               insert       向表中添加记录.

               truncate     清空表

    • delete 语法:   

     DELETE    FROM    表名      WHERE       列名 = 值

    • update 语法:     

     UPDATE    表名     SET     列名 = 新值       WHERE       列名称 = 某值

    • insert 语法:  

    INSERT      INTO      表名(列1,列2,...)     VALUES    (值1,值1,...)

    可以省略列名,但是值要和列名的顺序和个数一一对应

    • truncate 语法:

    TRUNCATE  table  表名;

      TRUNCATE table  user;

     

    DDL:Data Definition Language数据定义语言

    作用:创建表,删除表,定义或改变表的结构、数据类型、表之间的链接、约束

    命令:      create        创建表,创建库,复制表

                    alter           修改表中字段(增加列,更改列,删除列)

                    drop           删除表

    • create 语法:

    创建库

    create database 库名

    更改库的字符集 CHARACTER字符集
      ALTER DATABASE 库名 CHARACTER SET 字符集;

        ALTER DATABASE books CHARACTER SET gbk;

    修改库名 

    需要修改:
    1.停止MySQL服务
    2.修改文件夹名
    3.启动MySQL服务

    创建表

    create table 表名(
    列名 列的类型【长度 约束】,
    列名 列的类型【长度 约束】,
    列名 列的类型【长度 约束】,
    ...
    列名 列的类型【长度 约束】
    )

    复制表

    ①仅仅复制表的结构
    create table 表名 like 旧表

      CREATE TABLE copy LIKE author;


    ②复制表的结构+数据
    create table 表名 select 查询列表 from 旧表【where筛选】

    全部复制

      CREATE TABLE copy2
      SELECT * FROM author;

    复制一小部分

    CREATE TABLE copy3
    SELECT id,au_name
    FROM author
    WHERE nation='中国'; 

    可以跨库复制表的结构 库名.表名

    CREATE TABLE dept2
    SELECT department_id,department_name
    FROM myemployees.departments;

    • alter 语法:

    ALTER TABLE 表名

    add|drop|modify|change COLUMN 列名 新的列名 类型【约束】

    ①修改列名
    after table 表名 change column 旧列名 新列名 类型;

      ALTER TABLE user CHANGE COLUMN annual2 pubDate datetime;  

    ②修改列的类型或约束
    after table 表名 modify column 列名 新类型【新约束】

      ALTER TABLE `user` MODIFY COLUMN pubDate TIMESTAMP not null;

    ③添加新列
    after table 表名 add column 列名 类型【(first|after 字段名)控制添加的位置】默认就是在最后

      ALTER TABLE `user` ADD COLUMN annual DOUBLE FIRST;

      ALTER TABLE `user` ADD COLUMN annual2 DOUBLE AFTER id;

      ALTER TABLE test2 ADD COLUMN ddd3 INT last;不支持,默认就是在最后

    ④删除列
    ALTER TABLE 表名 DROP COLUMN 列名;

      ALTER TABLE user DROP COLUMN annual;

    ⑤修改表名
    after table 表名 rename 【to】 新表名;

      ALTER TABLE user RENAME TO book_author;

    • drop 语法:

    DROP      table         表名;

     

    IF EXISTS 做判断,仅仅在表的删除和表的创建时使用
    exists : 强调的是是否返回结果集,不要求知道返回什么
    exists (sql 返回结果集为真) 有
    not exists (sql 不返回结果集为真)没有

    DROP DATABASE IF EXISTS 旧的库名

    CREATE DATABASE 新的库名

    DROP TABLE IF EXISTS 旧的表名

    CREATE TABLE 新的表名

    DCL:Data Control Language 数据控制语言DCL
    作用: 数据控制语言DCL用来设置或更改数据库用户或角色权限

    命令: grant       授权

                revoke    收回已经授予的权限

     

    TCL:Transaction Control Language 事务控制语言TCL
    命令:COMMIT                        提交

               ROLLBACK                   回滚

               SAVEPOINT                  在事务中设置保存点,可以回滚到此处

               SET TRANSACTION     改变事务选项

    #显示自动提交的状态

      SHOW VARIABLES LIKE 'autocommit';
        autocommit   自动提交
        value on   表示开启

    #步骤1:开启事物
    set autocommit=0;#禁用自动提交,写了这个就默认开启事物
    start transaction;#可选的


    #步骤2:编写事物中的SQL语句
    (只支持 insert update delete,增删改查才有用。select可以使用但是没什么意义)ddl语言没有事物之说
    语句1;
    语句2;
    ...


    #步骤3:结束事物
    commit;提交事物,没有意外,语句可以全部执行


    rollback;回滚事物,有意外回滚,语句不能全部执行(jdbc使用)

  • 相关阅读:
    Codeforces 1167E(思路、数据处理)
    Codeforces 185D(发现性质、欧拉定理)
    BUPT2017 springtraining(16) #4 ——基础数论
    Codeforces Round #404 (Div. 2)——ABCDE
    BUPT2017 springtraining(15) #3
    BUPT2017 springtraining(16) #3 ——搜索与动态规划
    BUPT2017 springtraining(16) #2 ——基础数据结构
    Codeforces Round #413(Div. 1 + Div. 2, combined)——ABCD
    BUPT2017 springtraining(16) #1 ——近期codeforces简单题目回顾
    Codeforces Round #400 (Div. 1 + Div. 2, combined)——ABCDE
  • 原文地址:https://www.cnblogs.com/rijiyuelei/p/12116963.html
Copyright © 2020-2023  润新知