1. 程式人生 > 其它 >MySQL 基礎知識 (更新中)

MySQL 基礎知識 (更新中)

技術標籤: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班  涉及到外來鍵策略