手擼Mysql原生語句--增刪改查

AndreasZhou發表於2020-09-25

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_info\G;

資料庫表之間的關係的操作

資料庫表之間的關係,我們要明白有三種的關係,然後我們要將這三種關係弄明白,手擼一邊程式碼。

一對多的關係:

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表的完整性約束

相關文章