mysql的数据操作语句

本文详细介绍MySQL数据库操作,包括数据定义、操纵、查询及控制语言的使用,覆盖创建、修改、删除数据库及表,数据的增删改查,以及解决中文显示乱码等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • mysql的数据操作语句(通过dos命令语句)
    1. 通过windows+r输入cmd打开dos命令窗口,输入命令‘net start mysql’启动你的电脑mysql服务。
    2. 输入‘mysql -uroot -p××××’(u和p之后没有空格)进入自己的mysql管理模式,其中u代表的是user,即你的登录身份,管理员一般为root。其中p代表password,即你所登录身份的密码,但是直接这样输入密码的话,密码会以明文显示,有可能被周围不怀好意的人看到。所以建议输入‘mysql -uroot -p’命令,系统会之后让你输入密码。此时密码会以密文的形式显示在命令窗口,减小了被别人获取的风险。
    3. 如果账户和密码正确,则会登录进mysql管理模式,此时命令行会变为:mysql>,这时就可以输入对数据库的操作命令了。
    4. 退出mysql;quit或者exit,或者使用快捷键Ctrl+C也可以快速退出
  • SQL语句分类:
    1. Data Definition Language (DDL 数据定义语言) 如:建库,建表
    2. Data Manipulation Language(DML 数据操纵语言), 如:对表中的记录操作增删改
    3. Data Query Language(DQL 数据查询语言),如:对表中的查询操作
    4. Data Control Language(DCL 数据控制语言),如:对用户权限的设置
      *** MySQL语法**
    5. 如果实在可视化图形界面,如SQLyog或者Navicat等软件中,可以在命令结尾不加分好‘;’。
    6. 如果在dos命令中,需要在每条SQL操作语句后加‘;’以执行。
    7. mySQL注释有三种:
      • ‘–’+空格为单行注释
      • ‘/* */’为多行注释
      • ‘#’也是注释格式

DDL数据库操作语句
* 创建数据库
* CREATEE DATABASE 数据库名;
* 判断数据库存不存在,不存在则创建,存在也会执行而不会报错 CREATE DATABASE IF NOT EXUSTS 数据库名
* 创建数据库并制定字符集 CREATE DATABASE 数据库名 CHARACTER SET 字符集;(字符集是指utf-8,gbk等,utf-8在dos命令中为utf8)
* 例如:-- 直接创建数据库 db1

         create database db1;                                               

         -- 判断是否存在,如果不存在则创建数据库 db2
         
         create database if not exists db2;
         
         -- 创建数据库并指定字符集为 gbk
         
         create database db3 default character set gbk;
* 查看数据库
    * 查看所有存在的数据库:    show databases;
    * 查看某个数据库的创建信息:    show create database 数据库名
* 修改数据库
    * 修改数据库默认的字符集:    alter database 数据库名 default character set 字符集;
* 删除数据库
    * 删除指定数据库:    drop database 数据库名;
* 使用数据库
    * 查看正在使用的数据库:    select database();
    * 使用/切换数据库:    use 数据库名;
  • DDL操作表结构
    1. 创建表

      1.1 创建表:

               CREATE TABLE 表名 (
               字段名 1 字段类型 1,
               字段名 2 字段类型 2
               );
      
    2. 常用数据类型

      • int 整型
      • double 浮点型
      • varchar 字符类型
      • date 日期类型
    3. 详细数据类型

      • 整数
        • tinyInt 微整型:很小的整数(占 8 位二进制)
        • smallint 小整型:小的整数(占 16 位二进制)
        • mediumint 中整型:中等长度的整数(占 24 位二进制)
        • int(integer) 整型:整数类型(占 32 位二进制)
      • 小数
        • float 单精度浮点数,占 4 个字节
        • double 双精度浮点数,占 8 个字节
      • 日期
        • time 表示时间类型
        • date 表示日期类型
        • datetime 同时可以表示日期和时间类型
      • 字符串
        • char(m) 固定长度的字符串, 无论使用几个字符都占满全部, M 为 0~255 之间的整数
        • varchar(m) 可变长度的字符串, 使用几个字符就占用几个, M 为 0~65535 之间的整数
      • 大二进制
        • tinyblob Big Large Object 允许长度 0~255 字节
        • blob 允许长度 0~65535 字节
        • mediumblob 允许长度 0~167772150 字节
        • longblob 允许长度 0~4294967295 字节
      • 大文本
        • tinytext 允许长度 0~255 字节
        • text 允许长度 0~65535 字节
        • mediumtext 允许长度 0~167772150 字节
        • longtext 允许长度 0~4294967295 字节
    4. 查看表

      • 查看数据库中的所有表:show tables;
      • 查看表结构:desc 表名
      • 查看创建表的SQL语句:show create table 表名;
    5. 快速创建一个表结构相同的表

      • create table 新表名 like 旧表名;
    6. 删除表

      • drop table 表名;
      • 看表是否存在,若存在则删除表:drop table if exists 表名;
    7. 修改表结构

      • 添加列
        • 给表添加一列:alter table 表名 add 列名 类型;
        • 给表最前面添加一列:alter table 表名 add 列名 类型 first;
        • 给表某个字段后添加一列:alter table 表名 add 列名 类型 after 字段名;
        • 注意:没有给表某个字段前添加一列的方法。
      • 修改列类型
        • alter table 表名 modify 列名 新类型;
      • 修改列名
        • alter table 表名 change 旧列名 新列名 类型;
      • 删除列
        • alter table 表名 drop 列名;
      • 修改表名
        • rename table 旧表名 to 新表名;
      • 修改字符集
        • alter table 表名 character set 字符集;
  • DML操作表中的数据(用于对表中进行增删改查)
    1. 插入记录

      • insert into 表名(字段名) values(字段对应值);
      • 如果不写字段名,则认为是插入全字段数据
      • 如果想单独插入指定字段数据,则只写指定插入数据的字段名,这里需要注意的是,若表中包含不能为空的字段,如主键等,则在插入数据的时候必须插入必须字段。
    2. DOS命令行解决中文显示乱码问题:
      show variables like ‘character%’;

      set character_set_client=gbk;

      set character_set_connection=gbk;

      set character_set_results=gbk;

      • 每次退出DOS命令窗口以后会失效,再次进入需要重新设置
    3. insert的注意事项

      • 插入的数据应与字段的数据类型相同
      • 数据的大小应在列的规定范围内,例如:不能将一个长度为 80 的字符串加入到长度为 40 的列中。
      • 在 values 中列出的数据位置必须与被加入的列的排列位置相对应。在 mysql 中可以使用 value, 但不建议使用,功能与values 相同。
      • 字符和日期型数据应包含在单引号中。 MySQL 中也可以使用双引号做为分隔符。
      • 不指定列或使用 null,表示插入空值。
    4. 蠕虫复制(将一张表的数据复制到另一张表中)

      • insert into 表名1 select * from 表名2;
      • 只复制部分列:insert into 表名1(字段名1,字段名2) select 字段名1,字段名2 from 表名2;
    5. 更新表记录

      • 不带条件更新:update 表名 set 字段名=值;(修改所有的行)
      • 带条件更新:update 表名 set 字段名=值 where 字段名=值
      • 删除表记录:delete from 表名 where 字段名=值;
        • 注意,如果使用delete from 表名;这会删除表中蓑鲉记录
        • 也可以使用truncate删除表中所有记录:truncate table 表名
        • truncate 相当于删除表的结构,再创建一张表。
  • DQL查询表中的数据
    1. 简单查询
      • 查询表中所有数据:select * from 表名;
      • 查询指定字段:select 字段名1,字段名2,… from 表名
    2. 指定列别名进行查询(并不会修改原表列名,显示的是修改的名)
      • 对列指定别名:SELECT 字段名1 AS 别名, 字段名2 AS 别名… FROM 表名;
      • 对列和表都使用别名:SELECT 字段名1 AS 别名, 字段名2 AS 别名… FROM 表名 AS 表别名;
    3. 清除重复值
      • 查询指定结果,不出现重复数据:select distinct 字段名 from 表名;
    4. 查询结果参与运算
      • 某列数据和固定值运算:select 列名+固定值 from 表名;
      • 某列数据和其他列数据参与运算:select 列名1+列名2 from 表名;

* ifnull函数:ifnull(表达式1,表达式2):null参与的运算如果不调用该函数,计算结果都为null

* 表达式1:哪个字段需要判断是否为null

* 表达式2:如果表达式1为null后的替换值

5. 条件查询
    * select 字段名 from 表名 where 条件;
    * 运算符
        * >、<、<=、>=、=、<> : <>在 SQL 中表示不等于,在 mysql 中也可以使用!=,没有==
        * between...and:在一个范围之内,如: between 100 and 200相当于条件在 100 到 200 之间,包头又包尾
        * in(集合):集合表示多个值,使用逗号分隔
        * like'张%':模糊查询,以张开头的数据
        * like'%张':模糊查询,以张结尾的数据
        * like'%张%':模糊查询,中间含张的数据
        * like'_张':第二个字为张的两个字的数据
        * is null:查询某一列为 NULL 的值,注:不能写=NULL
    * 逻辑运算符
        * and 或 && : 与,SQL 中建议使用前者,后者并不通用。
        * or 或 || : 或。
        * not 或 ! : 非。
    * in关键字
        * SELECT 字段名 FROM 表名 WHERE 字段 in (数据 1, 数据 2...);
        * in 里面的每个数据都会作为一次条件,只要满足条件的就会显示
    * 范围查询
        * BETWEEN 值 1 AND 值 2
        * 表示从值 1 到值 2 范围,包头又包尾
        * 比如: age BETWEEN 80 AND 100 相当于: age>=80 && age<=100
    * like关键字
        * LIKE 表示模糊查询
        * SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';
    * MySQL通配符
        * % : 匹配任意多个字符串
        * _ : 匹配一个字符
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值