併發程式設計 六 - 支付介面併發
阿新 • • 發佈:2021-06-19
建庫:
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 表名( idint 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;