1. 程式人生 > 其它 >併發程式設計 六 - 支付介面併發

併發程式設計 六 - 支付介面併發

建庫:

create database 資料庫名 character set utf8;

使用庫

use 資料庫名

建表

create table student(
        id int ,
        name varchar(20),
        birthday date,
        score double
    );


char(2)  //固定長度
varchar(5000)  //最大長度不能超過20,可變長度
text

DML操作

insert into student(id,name,birthday,score) values(1,'張三','2020-09-21',99.6);
insert into student values(
1,'張三','2020-09-21',99.6); insert into student values(1,'張三','2020-09-21',99.6),(1,'張三','2020-09-21',99.6),(1,'張三','2020-09-21',99.6); update student set score=100 where name='張三'; delete from student where id=1

DQL操作

select  列1,列2 ​from  表名​ where 條件​ group by 列 ​having 條件​ order by 列​ limit 0,5

約束

  主鍵約束

create table 表名(
    id 
int primary key, name varchar(20) ) //添加了主鍵約束的列,不允許為null,不允許有重複制。整張表中只能有一個主鍵. create table 表名(
  id
int primary key auto_increment, name varchar(20)
)

  唯一約束

create table 表名(
        id int primary key,
        name varchar(20) unique
    )

  非空約束

create table 表名(
        id int primary key,
        name varchar(
20) unique phone varchar(11) not null )

外來鍵約束

//被外來鍵約束的列,它的取值必須是另一張的主鍵

create table dept(
    id int primary key auto_increment,
    deptname varchar(255)
)

create table employee(
    id int primary key auto_increment,
    employeename varchar(50),
    did int,
    constraint fk_dept_employee foreign key(did) references dept(id) [on update cascade on delete cascade ]

)

表與表之間的關係

  1 一對多(主外來鍵) a表中的一條記錄與b表中的多條記錄相對應,反過來b表中的一條記錄只與a表中的一條記錄對應。我們稱a表與b表之間一對多的關係

  2 一對一(主外來鍵+唯一約束) a表中的一條記錄與b表中的一條記錄相對應,反過來b表中的一條記錄也只與a表中的一條記錄對應,我們稱a與b之間一對一的關係

  3 多對多(藉助中間表) a表中的一條記錄與b表中的多條記錄相對應,反過來b表中的一條記錄也與a表中的多條記錄對應,我們稱a與b之間多對多的關係

多表查詢

  內聯查詢

select *  from 表1,表2  where 表1.外來鍵=表2.主鍵 

select *  from 表1 inner join 表2  on  表1.外來鍵=表2.主鍵

  外聯查詢

select * from  表1 left join 表2 on 表1.外來鍵=表2.主鍵

子查詢 

  1 如果子查詢返的結果是單行單列,此時可以使用 > < = 等關係運算進行比較

  2 如果子查詢返的結果是多行單列,此時可以使用in、not in進行比較

  3 如果子查詢返回的結果是多行多列可以將查詢結果看成一張虛擬表,和其它表進行關聯查詢

SELECT  * FROM employee,dept WHERE employee.`did`=dept.id AND employee.`salary`>=5000;
SELECT
*
FROM 

dept d,

(SELECT * FROM employee WHERE salary>=5000) e

WHERE d.id=e.did;