1. 程式人生 > >簡單SQL語句,從刪庫到跑路

簡單SQL語句,從刪庫到跑路

建立資料庫: Create database 資料庫名 刪除資料庫: drop database 資料庫名 建立表: Create table 表名(欄位1 primary key auto_increment,欄位2,欄位3)欄位包含:欄位1為主鍵:(欄位 型別 識別符號為primary key,auto_increment為自動增長) 刪除表: drop table 表名 一對一關係: 建立表: 表1名:county create table county *(id int primary key auto_increment ,name cahr(10),language char(10)); 表2名: president create table president(id int primary key auto_increment,name char(10),sex char,f_country_id int); 為president表新增外來鍵約束,這個外來鍵的值來自於country表中的主鍵 Alter table president add constraint foreign key(f_country_id)references country(id)on delete cascade; on delete cascade:刪除country時刪除相應的president on delete set null:刪除country時刪除相應的president為null on delete no action:如果country中某條記錄被president指向,那麼刪除country報錯,即不能刪除。 注:on delete cascade 表示class表中的記錄刪除時,stu2表中的外來鍵相關聯的記錄也會被刪除 一對多的關係: 1、 建立class表 create table class(classname char(10),primary key,headteacher char(10)); 2、 建立stu2表 Create table stu2(num int primary key auto_increment,name char(10),age int,f_classname char(10)); alter table stu2 add constant foreign key(f_classname)reference class(classname)on delete set null; 注:delete set null 表示class表中的記錄刪除時,stu2表中外來鍵相關聯的外來鍵值被設為null。 多對多的的關係: 1、 建立teacher表 crete table teacher(id int primary key auto_increment,name char(10)); 2、 建立stu表 create table stu(id int primary key auto_increment,name char(10)); 3、 建立一箇中間表 create table middle(id int primary key auto_increment,f_teacher_id int ,f_stu_id int); 4、 為中間表設定第一外來鍵,這個外來鍵的值來自於teacher表 alter table middle add constraint foreign key(f_teacher_id)references teacher(id)on delete no action; 5、 為中間表設定第二外來鍵,這個外來鍵的值來自於stu表 alter table middle add constant foreign key(f_stu_id)references stu(id) on delete no action; 注:on delete no action表示stu表中的記錄不能刪除 新增資料: 根據表中的全部欄位新增資料 Inset into 表名(欄位1,欄位2,欄位3)values(值1,值2,值3); 這種方式要求新增表中全部的值才可以新增資料 Insert into 表名 values(值1,值2,值3); 根據表中的某些欄位新增資料 Inset into 表名(欄位2)values(值2); 刪除資料 刪除欄位1的那條記錄 Delete from 表名 where 欄位1=值1; 刪除欄位1並且欄位2=值2的那條記錄 Delete form 表名 where 欄位1=值1and 欄位2=值2; 刪除欄位1=值2或者欄位1=值3的兩條記錄 Delete form 表名where 欄位1= 值2 or 欄位1= 值3; 刪除欄位1=值1以及欄位1=值3的兩條記錄 Delete from 表名 where 欄位1 in(值1,值3); 刪除id不等於1、2、3的記錄; Delete from 表名 where id not in(1,2,3); 刪除id>35的所有記錄,不包括35 Delete from 表名 where id>35; 刪除id>30並且id<34的記錄,不包括30、34 Delete from 表名 where id>30 and id<34; 刪除id<2或者id>35的所有記錄,不包括2、35 Delete from 表名 where id<2 or id>35; 修改資料庫 將sex=’m’的全部記錄修改為’男’ Update 表名 set sex=’男’where sex=’m’; 將id=30那條記錄的sex改為‘女’ Update 表名 set sex=’女’where id=30; 將id=29那條記錄的cardno改為‘2016’,name改為‘(●’◡’●)’ Update 表名 set cardno=‘2016’,name=‘(●’◡’●)’where id=29; 查詢資料 查詢表裡的所有資料 Select * from 表名; 查詢student表中id>20的所有記錄的資料 Select * from student where id>20; 查詢表中所有欄位2的資訊 Select 欄位2 from 表名; 查詢表中欄位2,欄位4,欄位6的資訊 Select 欄位2,欄位4,欄位6 from 表名; 查詢id<10的name,sex,elective的欄位資訊 Select name,sex,elective from 表名 where id<10; 多表查詢語句 1、 查詢各班的學生資訊:笛卡兒積 方式1: select t_class.C_NAME,t-stu.S_NAME,t_stu_S_SEX,t_stu.S_MONEY from t_class,t_stu; 方式2: select c.C_NAME,s.S_NAME,s.S_SEX,s.S_MONEY from t_class c,s_stu s 2、 查詢各班的學生資訊,當t_stu表中的C_ID等於t_class表中的C_ID時,表示該班級的學生 select c.C_NAME,s.S_NAME,s.S_SEX,s.S_MONEY from t_class c,t_stu s where c.C_ID=s.C_ID 3、 查詢班級名稱、學生姓名、性別、繳費、相同班級的要放在一起,姓名根據字典順序排列。 select c.C_NAME,s.S_NAME,s,s.S_SEX,s.S_MONEY from t_class c,t_stu s where c.C_ID=s.C_ID order by c.C_ID,s.S_ID 4、 查詢各班的班級名稱和人數(通過班級名稱進行分組查詢) select c.C_NAME,count(*) as 人數 from t_class c,s_stu s where s.C_ID=c.C_ID group by c.C_ID 查詢各班名稱和人數,但人數必須小於2,人數多的放在前面 注:group by 用於分組, Having用於分組後進行條件過濾, Order by用於選取相應的欄位進行排序, desc表示倒序 查詢沒有人員的班級 注:distinct表示返回表中不同記錄的條數,就是返回不同記錄的欄位值 select * from t_class c where c.C_ID not in(select distinct s.C_ID from t_stu s where s.S_ID>3); 等價於: select * from t_class c where c.C_ID not in(21); 分組查詢語句: 根據name欄位進行分組查詢,並統計每一組的人數 select count(*) from student group by name; 根據name欄位查詢,並得到每一個組的人數 select name,count(*)as 人數 from student group by name; 根據name欄位查詢,並得到每一組的人數以及每一組中id的最大值 select name,count(*) as 人數, max(id) from student group by name; 根據sex欄位進行查詢,並統計每一組的人數 select sex,count(*) as 人數,min(id) from student group by sex; 根據sex進行分組查詢,並只對id等於3、28、30的3條記錄進行分組查詢 select sex,count(*)from student where id in(3,28,30) group by sex; 根據sex進行分組查詢,並只對id>20的所有記錄進行分組查詢 select sex ,count(*)from student where id>20 group by sex desc;