zoukankan      html  css  js  c++  java
  • MySQL数据库基本语法

    SQL

    • WHAT(SQL是什么?)
      Structured Query Language:结构化查询语⾔
    • WHY(为何要使用SQL?)
      难道仅仅使用SQL Server Management Studio操作数据库?
      应用程序如何与数据库打交道?
    • WHEN(何时使用?)
      对SQL Server执⾏所有的操作都可以
      程序中的增删改查
    • HOW(怎么使用?)
      ...

    四大SQL语句

    1. 数据定义语句DDL:
      create、alter、drop、truncate(表结构)
    2. 数据操作语句DML:
      insert、delete、update、select(数据)
    3. 数据控制语句DCL:
      授权grant
      收回权限:revoke
    4. 事务控制语句TCL:
      开启事务:begin
      提交:commit
      回滚:rollback

    数据库操作

    创建数据库

    SQL语句:

    create database 数据库名;
    create database stu_a;
    -- 在建库时指定字符集,避免中文数据乱码的问题
    create database stu_b default charset='utf8';
    

    成功创建数据库后,数据库根目录下会自动创建数据库目录。

    显示数据库结构

    SQL语句:

    show create database 数据库名;
    

    可以查看数据库的相关信息(例如默认字符集等信息)。

    删除数据库

    SQL语句:

    drop database 数据库名;
    

    MySQL数据类型

    MySQL提供的数据类型包括数值类型(整数类型和小数类型)、字符串类型、日期类型、复合类型(复合类型包括enum类型和set类型)以及⼆进制类型 。

    decimal(length, precision)用于表示精度确定(小数点后数字的位数确定)的小数类型,length决定了该小数的最⼤位数,precision用于设置精度(小数点后数字的位数)。

    例如:
    decimal(5,2)表示小数取值范围:-999.99∼999.99
    decimal(5,0)表示: -99999∼99999的整数。

    char()与varchar():
    例如对于简体中⽂字符集gbk的字符串⽽⾔,varchar(255)表示可以存储255个汉字,⽽每个汉字占用两个字节的存储空间。假如这个字符串没有那么多汉字,例如仅仅包含⼀个‘中’字,那么varchar(255)仅仅占用1个字符(两个字节)的储存空间;⽽char(255)则必须占用255个字符长度的存储空间,哪怕里面只储⼀个汉字。

    表操作

    创建数据库表

    注意:在创建表之前,需要选择当前操作的数据库

    Use 数据库名;
    

    创建数据库表SQL语句:

    use student;
    create table stu(id int,name varchar(20));
    
    create table stuinfo(
        id int,
        name char(20),
        address char(50),
        city char(50),
        age int,
        love char(50)
    )default charset='utf8';
    

    显示表结构

    SQL语句:

    desc 表名; -- 即可查看指定表的结构
    

    SQL语句:

    show create table 表名; -- 查看指定表的详细信息
    

    删除表

    SQL语句:

    drop table 表名;
    

    注意:删除表后,MySQL服务实例会自动删除该表结构定义的文件,以及数据、索引信息。该命令慎用!

    删除字段

    alter table 表名 drop 字段名
    

    添加新字段

    alter table 表名 add 新字段名 新数据类型 [新约束条件]
    

    修改字段名

    alter table 表名 change 旧字段名 新字段名 新数据类型
    

    修改数据类型

    alter table 表名 modify 字段名 新数据类型
    

    修改表名

    rename table 旧表名 to 新表名
    

    数据的增、删、改、查

    表记录的插入

    SQL语句:

    insert into 表名(字段列表) values(值列表);
    

    提示:当插入的数据值的个数与表字段个数相同时,可以省略字段列表

    insert stu(id,name) values(1,'newdream');
    insert stu values(2,'newdream1');
    

    一次插入多条记录

    insert into 表名(字段列表) values (值列表1),(值列表2),...(值列表n);
    
    insert into stu values(3,'new1'),(4,'new2'),(5,'new3');
    

    使用insert...select插入结果

    insert into 目标表名(字段列表1)
    select(字段列表2) from 源表 where 条件表达式
    
    insert into stu_bak(id,name)
    select id,newname from stu where id>2;
    

    注意:字段列表1与字段列表2的字段个数必须相同,且对应字段的数据类型尽量保持一致。
    如果果源表与目标表的表结构完全相同,“(字段列表1)”可以省略。

    复制表结构及数据到新表

    create table 新表 select * from 旧表;
    

    只复制表结构到新表

    create table 新表 select * from 旧表 where 1=2;
    

    修改表记录

    update 表名 set 字段名1=值1,字段名2=值2,...,字段名n=值n
    [where 条件表达式]
    
    update stu set newname='new5' where id=1;
    

    where 子句指定了表中的哪些记录需要修改。若省略了where子句,则表示修改表中的所有记录。
    set子句指定了要修改的字段以及该字段修改后的值。

    使用delete删除表记录

    delete from 表名 where 条件表达式;
    

    说明:如果没有指定wheree⼦句,那么该表的所有记录都将被删除,但表结构依然存在。

    使用truncate清空表记录

    truncate table 表名;
    

    delete和truncate的区别

    Delete不加WHERE条件是删除所有数据
    Truncate不能够加WHERE条件
    Delete可以加WHERE条件
    Truncate会重置AUTO_INCREMENT
    Delete可以进⾏回滚操作

    表记录的查询

    select 字段列表 from 表名 
    where条件表达式
    

    表记录的查询—给列取别名

    可以为字段列表中的字段名或表达式指定别名,中间使用as关键字分隔即可(as关键字可以省略)。多表查询时,同名字段前必须添加表名前缀,中间使用“.”分
    隔。

    Select id as ’学⽣学号’,newname ‘学⽣姓名’ from stu;
    

    使用source命令

    测试⼈员经常会和MySQL打交道,备份和恢复应该是最常用的操作了,那么通过直接执⾏sql⽂件⽆疑是最快捷的⽅式。
    我们会把写好的sql语句保存成⼀个.sql⽂件进⾏备份;如果想在新的数据库中执⾏时,可以使用source命令进⾏恢复;
    例如:在D盘的new⽂件夹中保存了dream.sql⽂件
    (此⽅法只用在命令提示窗⼝)

    第⼀步:可以先新建⼀个数据库;
    第⼆步:use 新的数据库
    第三步:Source d:wwwdream.sql
    如此就把之前的表数据在新的数据库中进⾏恢复;之前的表及数据在新的数据库中都是存在的;

  • 相关阅读:
    对于redis框架的理解(四)
    对于redis框架的理解(三)
    对于redis框架的理解(二)
    Django框架(五)—— 虚拟环境搭建
    Django框架(四)—— 路由控制:有名/无名分组、反向解析、路由分发、名称空间、伪静态、APPEND_SLASH、不同版本的Django区别
    Django框架(三)—— orm增删改查、Django生命周期
    Django框架(一)—— 安装使用Django
    C语言——二维数组
    前端(二十二)—— vue组件:局部组件、全局组件、父组件数据传到子组件、子组件数据传到父组件、父子组件实现todoList
    前端(二十一)—— vue指令:文本类指令、避免页面闪烁、v-bind指令、v-on指令、v-model指令、条件渲染指令、列表渲染指令
  • 原文地址:https://www.cnblogs.com/TD1900/p/12087970.html
Copyright © 2011-2022 走看看