zoukankan      html  css  js  c++  java
  • 手撸Mysql原生语句--增删改查

    mysql数据库的增删改查有以下的几种的情况,

    1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER SHOW

    2、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT

    3、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE

    在这里我们开始手撸一下mysql的增删改查的代码,视图、索引等我们之后再次的补充描述。

    数据库的增删改查

    1.数据库的增加

    create database xxx

    2.删除数据库

    drop database xxx

    3.改数据库

    alter database db1 charset latin1;

    4.查询数据库

    show databases;

    然后我们看一下表的增删改查的操作,我们在对表进行操作的时候,我们要先指明白要在那个数据库下创建表,所以我们这里还需要提前再做一步操作,这个操作就是use 数据库的名字

    表的增删改查

    1.表的创建

    create table xxx (id int primary key auto_increment,name char not null,sex enmu('female','male'));

    我们要记住创建表的语法结构就行了。

    create table 表名(
    字段名1 类型[(宽度) 约束条件],
    字段名2 类型[(宽度) 约束条件],
    字段名3 类型[(宽度) 约束条件]
    );
    

    2.删除表

    drop table xxx

    3.查看表

    show tables

    4.表的改

    1. 修改表名
          ALTER TABLE 表名 
                          RENAME 新表名;
    
    2. 增加字段
          ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…],
                          ADD 字段名  数据类型 [完整性约束条件…];
                                
    3. 删除字段
          ALTER TABLE 表名 
                          DROP 字段名;
    
    4. 修改字段
          ALTER TABLE 表名 
                          MODIFY  字段名 数据类型 [完整性约束条件…];
          ALTER TABLE 表名 
                          CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
          ALTER TABLE 表名 
                          CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
    
    5.修改字段排列顺序/在增加的时候指定字段位置
        ALTER TABLE 表名
                         ADD 字段名  数据类型 [完整性约束条件…]  FIRST;
        ALTER TABLE 表名
                         ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;
        ALTER TABLE 表名
                         CHANGE 字段名  旧字段名 新字段名 新数据类型 [完整性约束条件…]  FIRST;
        ALTER TABLE 表名
                         MODIFY 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;
    

    具体的操作的实例我们参考博客园的地址为:https://www.cnblogs.com/Eva-J/articles/9677452.html#_label7

    5.查看表的结构

    desc 表名; desc staff_info;

    show create table 表名 G

    show create table staff_infoG;

    数据库表之间的关系的操作

    数据库表之间的关系,我们要明白有三种的关系,然后我们要将这三种关系弄明白,手撸一边代码。

    一对多的关系:

    create table press(
    id int primary key auto_increment,
    name varchar(20)
    );
    
    create table book(
    id int primary key auto_increment,
    name varchar(20),
    press_id int not null,
    foreign key(press_id) references press(id)
    on delete cascade
    on update cascade
    );
    
    

    一对一的关系

    create table customer(
        -> id int primary key auto_increment,
        -> name varchar(20) not null,
        -> qq varchar(10) not null,
        -> phone char(16) not null
        -> );
    
    create table student(
        -> id int primary key auto_increment,
        -> class_name varchar(20) not null,
        -> customer_id int unique, #该字段一定要是唯一的
        -> foreign key(customer_id) references customer(id) #外键的字段一定要保证unique
        -> on delete cascade
        -> on update cascade
        -> );
    

    多对多

    create table book(
    id int primary key auto_increment,
    name varchar(20),
    press_id int not null,
    foreign key(press_id) references press(id)
    on delete cascade
    on update cascade
    );
    
    create table author(
    id int primary key auto_increment,
    name varchar(20)
    );
    
    #这张表就存放作者表与书表的关系,即查询二者的关系查这表就可以了
    create table author2book(
    id int not null unique auto_increment,
    author_id int not null,
    book_id int not null,
    constraint fk_author foreign key(author_id) references author(id)
    on delete cascade
    on update cascade,
    constraint fk_book foreign key(book_id) references book(id)
    on delete cascade
    on update cascade,
    primary key(author_id,book_id)
    );
    

    我们这里再补充一些sql语句

    登录到数据库服务器中:mysql -u 用户名 -h ip地址 -p 密码

    select user(); 查看当前的登录的用户。

    select database();查询当前使用的数据库。

    set password = password('zhouqian');

    create user 'zhouqian' @ '192.168.14.12' identified by '123';

    grant 权限类型 on 数据库(数据库的名字).*(数据库(数据库的名字).表名) to 用户('zhouqian' @ '192.168.14.%')

    然后在最后我们这里要强调一点的就是,我们要对数据库的数据类型和完整性约束有一个熟悉的了解,在这里我只是列举出来,但是具体的学习大家自行去学习。

    数据类型:int,float,date,datetime,char,varchar,enmu,set

    约束条件:default,auto_increment,primary key,foreign key,not null,null,unique,

    同时我在这里给大家推荐两篇的博客:

    mysql支持的数据类型

    mysql表的完整性约束

  • 相关阅读:
    数据结构与算法题目集(中文)7-25 朋友圈 (25分) 并查集
    数据结构与算法题目集(中文)7-24 树种统计 (25分)
    数据结构与算法题目集(中文)7-23 还原二叉树 (25分)
    数据结构与算法题目集(中文)7-22 堆栈模拟队列 (25分)
    数据结构与算法题目集(中文)7-21 求前缀表达式的值 (25分)
    [SDOI2018]反回文串
    ARC 064 F-Rotated Palindromes
    AGC014-F Strange Sorting
    AGC011-E Increasing Numbers
    AGC011-C Squared Graph
  • 原文地址:https://www.cnblogs.com/stu-zhouqian/p/13732189.html
Copyright © 2011-2022 走看看