当前位置:网站首页 > SQL数据库编程 > 正文

mysql主键可以是字符串吗(mysql主键可以是字符串吗)



        1、SQL语句可以单行或多行书写,以分号结尾

        2、MySQL数据库的SQL语句不区分大小写(关键字建议大写)

        3、注释:

                单行注释:--空格+注释内容#注释内容(MySQL特有)

                多行注释:/* 注释 */

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

DML(Data Manipulation Language)数据操作语言,用来对数据库中表的数据进行增删改

DQL(Data Query Language)数据查询语言,用来查询数据库中表的记录(数据)

DCL(Data Control Language)数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户

        1.1操作数据库


1、查询
        show databases;
2、创建
        · 创建数据库
                create database 数据库名称;
        · 创建数据库(判断,如果不存在则创建)
                Create database if not exists 数据库名称;
3、删除







        · 删除数据库
                Drop database 数据库名称;
        · 删除数据库(判断,如果存在则删除)
                Drop database if exists 数据库名称;
4、使用数据库
        · 查看当前使用的数据库
                Select database();
        · 使用数据库
                Use 数据库名称;







1.2操作表


1、查询表
        · 查询当前数据库下所有表的名称
                show tables;
        · 查询表的结构
                desc表名称
2、创建表
        · Create table 表名(
        字段名1 数据类型1,
        字段名2 数据类型2,








        字段名n 数据类型n
        );
· 最后一行末尾,不加逗号
· 字符串类型:varchar


        

3、修改表
        · 修改表名
                Alter table 表名 rename to 新的表名;
        · 添加一行
                Alter table 表名 add 列名 数据类型;
        · 修改数据类型
                Alter table 表名 modify 列名 数据类型;
        · 修改列名和数据类型
                Alter table 表名 change 列名 新列名 新数据类型;
        删除列
                Alter table 表名 drop列名;
4、删除表
        · 删除表
                Drop table 表名;
        · 删除表时判断表是否存在
                Drop table if exists 表名;














2.1添加数据


1、给指定列添加数据
        Insert into 表名(列名1,列名2, ... )values(值1,值2, ... );
2、给全部列添加数据
        Insert into 表名 values(值1,值2, ... );
3、批量添加数据
        Insert into 表名(列名1,列名2,…)values(值1,值2, ... ),(值1,值2, ... ), …..;
        Insert into 表名 values(值1,值2, ... ),(值1,值2, .. ), ...;






2.2修改数据


1、修改表数据
        Update 表名 set 列名1=值1,列名2=值2, .. where条件;

2.3删除数据


1、删除数据
        Delete from 表名 where条件;
        注意:删除语句中如果不加条件,则将所有数据都删除


3.1基础查询


1、查询多个字段
        Select 字段列表 from 表名;
        Select*from 表名 ;-- 查询所有数据
2、去除重复记录
        Select distinct 字段列表 from表名;
3、起别名
        as: as也可省略






3.2条件查询


1、条件查询语法
        Select 字段列表 from 表名 where条件列表;

3.3排序查询


1、语法
        Select 字段列表 from表名 order by 排序字段名1排序方式,排序字段名2排序方式,
2、排序方式
        · Asc:升序排列(默认值)
        · Desc:降序排列
        注意:如果有多个排列条件,当前边的条件值一直时,才会根据第二个条件进行排序





3.4聚合函数


1、概念:
        将一列数据作为一个整体,进行纵向计算
2. 聚合函教分类:


3、聚合函数语法:
        Select 聚合函数名(列名)from 表;
        注意:null值不参与所有聚合函数运算

3.5分组查询


1、分组查询语法
        select 字段列表from 表名[where 分组前条件限定]group by 分组字段名[having分组后条件过滤];
        注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
        where和 having 区别:
        · 执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
        · 可判断的条件不一样:where不能对聚合函数进行判断,having 可以。
执行顺序:where>聚合函数>having






3.6分页查询


1.分页查询语法
        select 字段列表 from 表名 limit 起始索引,查询条目数;


        · 起始索引:从0开始
        计算公式:起始索引=(当前页码-1)*每页显示的条数

        tips:

          分页查询limit是MySQL数据库的方言
          Oracle 分页查询使用 rownumber
          SQL Server分页查询使用top

        1.1约束的概念和分类

1、约束的概念

  •  约束是作用于表中列上的规则,用于限制加入表的数据
  •  约束的存在保证了数据库中数据的正确性、有效性和完整性

2、约束的分类

Tips:MySQL不支持检查约束

自动增长:auto_increment :当列是数字类型并且 唯一约束

非空约束

1、概念

  • 非空约束用于保证列中所有数据不能有NULL值

2、语法

(1)添加约束

        -- 创建表时添加非空约束

        CREATE TABLE 表名(

        列名 数据类型 NOT NULL,

        );

        -- 建完表后添加非空约束

        ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;

(2)删除约束

        ALTER TABLE 表名 MODIFY 字段名 数据类型;

1.2外键约束

1、概念

        外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性

2、语法

        (1)添加约束

        -- 创建表时添加外键约束

        CREATE TABLE 表名(

                 列名 数据类型,

                CONSTRAINT  外键名称  FOREIGN KEY(外键列名)  REFERENCES  主表(主表列名)

                );

        -- 建完表后添加外键约束

                alter table  表名  add constraint  外键名称  foreign key(外键字段名称)  references  主表名称(主表列名称);

(2)删除约束

        ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

(3)建完表后,添加外键

        Alter  table  表名  add  constraint  外键名称  foreign key (外键字段名称) references 主表(主表列名);

2.1表关系一对多

  • 一对多(多对一):

        如:部门表 和 员工表

       一个部门对应多个员工,一个员工对应一个部门

  • 实现方式:在的一方建立外键,指向一的一方的主键

2.2表关系多对多

  • 多对多:

        如:订单和商品

       一个商品对应多个订单,一个订单包含多个商品

  • 实现方式:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

2.3表关系一对一

  • 一对一:

        如:用户和用户详情

一对一关系多用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放另一张表,用于提升查询性能

       3.1 内连接

                内连接也称为等值连接,只返回两个表中键值匹配的行,即只有在两个表中都有匹配的数据时才会返回

1、隐式内连接

        Select  字段名  from 1,表2…  where 条件;

2、显示内连接

        Select  字段名  from inner join  2  on 条件;

        内连接相当于查询 A,B 表交集数据

3.2外连接

      1、左外连接

                Select  字段名  from  left  outer  join on 条件;

        2、右外连接

                Select  字段名  from  right  outer  join on 条件;

  • 左外连接:相当于查询A表所有数据和B表中匹配的数据

                          如果B表没有匹配的记录,则返回null值

  • 右外连接:相当于查询B表所有数据和A表中匹配的数据

3.3子查询

1、子查询根据查询结果不同,作用不同:

  • 单行单列:作为条件值,使用 = != ><等进行条件判断

        SELECT  字段列表  FROM   WHERE  字段名=(子查询);

  • 多行单列:作为条件值,使用in等关键字进行条件判断

        SELECT  字段列表  FROM   WHERE  字段名 in(子查询);

  • 多行多列:作为虚拟表

        SELECT  字段列表  FROM (子查询)  WHERE 条件;

3.1 事务简介

  • 数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令
  • 事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败
  • 事务是一个不可分割的工作逻辑单元

3.2语法

        -- 开启事务

                Start transaction;  或者  begin

        -- 提交事务

                commit;

        -- 回滚事务

                rollback;

1、开启事务

        开启事务之后,修改是临时的,修改在其他地方查不到

2、提交事务

        持久化变化,在其他地方可以查到

3、回滚事务

        相当于回滚到开启事务之前的状态

3.3事务四大特征

  • 原子性(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败
  • 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态
  • 隔离性(Isolation):多个事务之间,操作的可见性
  • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

MySQL事务默认自动提交

        -- 查看事务的默认提交方式

                Select  @@autocommit;

        -- 1自动提交  0手动提交

        -- 修改事务提交方式

                set  @@autocommit = 0;

到此这篇mysql主键可以是字符串吗(mysql主键可以是字符串吗)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • mysql主键查询快还是索引查询快(mysql主键和索引)2025-06-13 14:09:09
  • pymysql连接池(pymysql 连接数据库)2025-06-13 14:09:09
  • plsql注册码过期(plsql注册码永久)2025-06-13 14:09:09
  • mysql使用主键约束(mysql主键约束名怎么定义)2025-06-13 14:09:09
  • sqlwhile循环(sqlfor循环)2025-06-13 14:09:09
  • sql文件导入数据库报错(sql文件导入数据库报错怎么办)2025-06-13 14:09:09
  • jdbc连接数据库增删改查(jdbc连接mysql数据库增删改查代码)2025-06-13 14:09:09
  • mysql和oracle有什么区别(mysql和oracle的sql语句一样吗)2025-06-13 14:09:09
  • sql文件怎么导入数据库 oracle(sql文件怎么导入数据库)2025-06-13 14:09:09
  • sql文件格式后缀(sql数据库文件名后缀)2025-06-13 14:09:09
  • 全屏图片