【一、基礎操作SQL語句】
--------------------------------
show databases; 檢視庫
create database CHEN; 建立庫CHEN
use CHEN; 選擇庫
drop database stu; 删除庫stu
show tables; 檢視庫中的表
建立表`user`
create table `emp`(
`eno` int unsigned auto_increment,
`ename` varchar(80) not null,
`eage` int unsigned,
`esex` varchar(10) not null,
`edate` date,
`etel` int(20),
`eblood` varchar(10),
primary key(`eno`)
) engine=InnoDB default charset=utf8;
create table `teacher`(
`tno` int unsigned auto_increment,
`tname` varchar(40) not null,
`tage` int unsigned,
`ttel` varchar(15),
primary key(`tno`)
) engine=InnoDB default charset=utf8;
desc stu; #檢視表中字段結構
describe stu; #同上
show columns from stu #同上
show create table stu; #顯示表結構
create table tab_new like tab_old #複制,使用舊表建立新表,類似于複制
drop table student; #删除表student
create temporary table stu12 like tab_old #建立臨時表,這裡和建立普通表一樣
rename table stu to stu11; #修改表名,重命名
Alter table tabname add primary key(col) #添加主鍵
Alter table tabname drop primary key(col) #删除主鍵
Alter table tabname add foreigh key(id) references dept(did) #添加外鍵
--------------------------------------------
例子:關于有外鍵關聯表無法删除
建部門表dept
create table dept(
`did` int PRIMARY key auto_increment,
`dname` varchar(30) ,
) engine=InnoDB default charset=utf8;
建員工表emp
create table emp(
`eid` int PRIMARY key auto_increment,
`ename` varchar(30) ,
`sal` DOUBLE,
dno int,
FOREIGN key(dno) REFERENCES dept(did) #創立外鍵
) engine=InnoDB default charset=utf8;
DELETE from dept where did=2 #無法删除,提示錯誤,因為表dept中有存在另外一個關聯的表emp.
--------------------------------------------
create [unique] index idxname on tabname(col….) 建立索引
drop index idxname 删除索引
注:索引是不可更改的,想更改必須删除重建立。
建立視圖:create view viewname as select statement
删除視圖:drop view viewname
desc stu; #檢視表中字段結構
describe stu; #同上
show columns from stu #同上
show create table stu; #顯示表結構,看得比較整齊
show tables; 檢視建立的表
select * from stu; #檢視表中是否有内容,empty
insert into stu11
values
(5,'shenzhen33',22,'female','2020-03-13','13812349'),
(6,'shenzhe44',48,'male','2020-03-13','13812340'),
(7,'shenzhen55',28,'male','2020-03-13','13812340');
【二、資料操作語言】
insert into stu values(5,"wang",26,"male"); #往表stu中插入一行資料
insert into stu #往表stu中插入資料
(id,name,age,sex)
values
(1,"chenzj",20,"male"),(3,"lishi",25,"female"),(4,"mary",21,"female"); #可同時插入一行或多行
select * from stu; #檢視表中資料
隻複制表結構到新表
CREATE TABLE 新表 SELECT * FROM 舊表 WHERE 1=2;
複制表結構及資料到新表
CREATE TABLE 新表 SELECT * FROM 舊表
複制舊表的資料到新表(假設兩個表結構一樣)
INSERT INTO 新表 SELECT * FROM 舊表
複制舊表的資料到新表(假設兩個表結構不一樣)
INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 舊表
insert into stu #隻選擇某一列插入資料,且非空字段必須要存在
(name,sex,date)
values
("wangwu","male","2020-03-12");
alter table stu add column tel int(15); #修改表,增加一列tel
alter table stu change tel telphone VARCHAR(10); #修改表,修改列tel為telphone
alter table stu drop coulumn telphone; #修改表,删除列telphone
update stu set tel='13512345678'; #更新表,把列tel全部加上值
update stu set date='2020-03-11' where id=1; #更新表,隻針對第1行加上日期
update stu set date='2020-03-11' where sex='female' and age='25'; #更新表,多條件篩選後加上日期
update stu set age=21,sex='female' where id=1; #更新表,同時更新第1行中2個字段; 【注:字段間要用,隔開】
update stu set date=NULL where id=4; #更新表,把第4行日期更新為空
update stu set tel=NULL; #更新表,把tel列全部值更新為空
delete from stu where id=5; #删除第5行