MySQL 基礎知識 (更新中)
阿新 • • 發佈:2021-02-04
技術標籤:mysql
一 DQL 資料查詢語言
select * From stu2;
create table stu2(
Number int(10),
Sex char(1),
Age int(3),
class varchar(15),
Score varchar(5),
PhoneN varchar(14)
)
二 DML資料操作語言
insert into stu2 value(201703061,"男",24,"Javadesign01","79.5","1356481812");
insert into stu2 value(201703062,"女",24,"Java design02","79.5","1356481812");
update stu2 set Sex="男",Age=21,class="AI02" where Number=201703062;
delete From stu2 where Number=201703062;
三 DDL 資料定義語言
查詢資料
select * from student
--查詢表的結構
desc student
--修改表的結構
--增加一列
alter table student add score double(5,2);
alter table student add score double(5,2) first
alter table student add score double(5,2) after enterdate; --5 總的位數,2小數位
update student set score=136.5 where sno=2;
--修改一列
alter table student modify score float(4,1)
update student set score =3.45 where sno=2
alter table student change score score1 double(5,1)
--刪除一列
alter table student drop score;
alter table student drop score1;
--刪除表
drop table student;
四 非外來鍵約束
非外來鍵約束1
/*
建立一張用來儲存學生資訊的表
欄位包含學號、姓名、性別、年齡、入學日期、班級、email等資訊
學號是主鍵=不能為空+唯一
姓名不能為空
性別預設值是男,只能取值男、女
年齡:18-50
email 唯一
非外來鍵約束 1
*/
create table stu1(
sno int(6) primary key auto_increment, -- 設定主鍵primary key 和 auto_increment自增
sname varchar(10) not null, -- 非空
sex char(1) default '男' check(sex='男'||sex='女'),
age int(3) check(age>=18 and age<=50), -- check 限定條件
enterdate date,
classname varchar(10),
email varchar(20) unique -- unique 唯一
);
-- Column 'sname' cannot be null
-- Check constraint 'stu1_chk_1' is violated.
-- Check constraint 'stu1_chk_2' is violated.
--新增上資料
insert into stu1 values(1,'張三','男',35,'1995-12-24','Java001','[email protected]');
-- Duplicate entry '1' for key 'stu1.PRIMARY'
insert into stu1 values(null,'張三','男',37,'1995-12-24','Java001','[email protected]');
insert into stu1 values(default,'李四','女',24,'1999-11-10','AI002','[email protected]')
--查詢操作
select * from stu1
delete from stu1 where sno=1
非外來鍵約束2
--建立資料庫表 非外來鍵約束2
create table stu(-- 列級約束
sno int(6) auto_increment,
sname varchar(10) not null,
sex char(1) default '男',
age int(3),
enterdate date,
classname varchar(10),
email varchar(20),
constraint pk_stu primary key(sno), -- 主鍵只能有一個
constraint ck_stu_sex check(sex='男' or sex='女'),
constraint ck_stu_age check(age>=18 and age<=50),
constraint uk_stu_email unique(email)
);
select * from stu
insert into stu values(1,'張三','男',35,'1995-12-24','Java001','[email protected]');
insert into stu values(null,'張三','男',35,'1995-12-24','Java001','[email protected]');
drop table stu
create table stu( -- 表級約束
sno int(6) ,
sname varchar(10) not null,
sex char(1) default '男',
age int(3),
enterdate date,
classname varchar(10),
email varchar(20)
);
alter table stu add constraint pk_stu_sno primary key(sno); -- auto_increment
alter table stu add constraint ck_stu_sex check(sex='男' || sex='女');
alter table stu add constraint ck_stu_age1 check(age>=18 and age<=50);
alter table stu add constraint uk_stu_email unique(email);
alter table stu modify sno int(6) auto_increment;
-- 查看錶的結構
desc stu;
五 外來鍵約束
---------------------------- 外來鍵約束 把一個表作為主鍵與另一個連結在一起
-- 建立表
create table t_class(
cno int(4) primary key auto_increment,
cname varchar(10) not null,
room char(4)
);
drop table t_student
drop table t_class
create table t_student(
sno int(6) primary key auto_increment,
sname varchar(10),
age int(3),
score double(4,1),
classno int(4),-- 取值參考t_class表的主鍵,不要求欄位名相同,但是型別建議相同
constraint fk_stu_classno foreign key(classno) references t_class(cno)
);
-- 新增資料
insert into t_class values(null,'Java001','r501'),(null,'Java002','r502'),(null,'大資料001','r401')
insert into t_student values(null,'張三',26,89.5,1),(null,'李四',24,98,2),(null,'王五',21,87,2);
insert into t_student values(null,'趙六',27,96,3);
-- 新增失敗,是因為沒有t_class中是沒有4班的這個編號,所以無法新增
insert into t_student values(null,'周七',27,96,4);
-- 查詢表
select * from t_class
select * from t_student
-- 外來鍵的作用
-- 1.不可以新增一個學生,屬於不存在的班級
-- 2.不可以刪除一個存在學生的班級
-- 那麼怎麼刪除2班 涉及到外來鍵策略