日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

1.SQL数据定义语言(基础)

發(fā)布時(shí)間:2025/5/22 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.SQL数据定义语言(基础) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.創(chuàng)建數(shù)據(jù)庫(kù)

  • CREATE Database database_name;
  • 習(xí)慣Sql語(yǔ)句中,保留的關(guān)鍵字否設(shè)置為大寫(xiě),數(shù)據(jù)庫(kù)、表、字段為小寫(xiě)。?

2.創(chuàng)建數(shù)據(jù)表

  • 創(chuàng)建數(shù)據(jù)表基本語(yǔ)法
  • CREATE TABLE 表名(列名1 類型 [NOT NULL,UNIQUE,DEFAULT value,PRIMARY KEY,CONSTRAINT foregin_name foregin key(column) references outer_table_name(column) on Delete RESTRICT|CASCADE|SET NULL] );
  • 說(shuō)明
  • 1.中括號(hào)中的內(nèi)容為可選項(xiàng)目
  • 2.常用的列數(shù)據(jù)類型有 INT、SMALLINT、FLOAT、DATE、DATETIME、VARCHAR(n)、CHAR(n)等
  • 3.NOT NULL 設(shè)置值不能為NULL、UNIQUE設(shè)置值不能重復(fù)
  • 4.PRIMARY KEY設(shè)置為主鍵 只有外鍵可以設(shè)置為auto_increment
  • 5.CONSTRAINT外建名 references outer_table_name(列值) on Delete|Update RESTRICT|CASCADE|SET NULL] 設(shè)置外鍵 restrict主表中數(shù)據(jù)不能刪除數(shù)據(jù)、CASCADE主表中被刪除那么引用為外鍵值對(duì)的表格也刪除、主表中的數(shù)據(jù)被刪除那么引用為外鍵的表的數(shù)據(jù)設(shè)置為NULL
  • 舉例--mysql測(cè)試
  • 1.student表 CREATE TABLE student(SNO CHAR(7) PRIMARY KEY,SNAME VARCHAR(8) NOT NULL,SEX CHAR(2) NOT NULL,BDATE DATE NOT NULL,HEIGHT DEC(5,2) DEFAULT 000.00);?
  • 2.SCOURSE表
  • CREATE TABLE SCOURSE(CNO CHAR(6) PRIMARY KEY,LHOUR SMALLINT NOT NULL,CREDIT DEC(1,0) NOT NULL,SEMESTER CHAR(2) NOT NULL);?
  • 3.SC表---添加外鍵
  • CREATE TABLE sc(SNO CHAR(7) NOT NULL,constraint SNO_foregin_key foreign key(SNO) references student(SNO) ON delete cascade,CNO CHAR(7) not NULL,constraint cno_foreign_key foreign key(CNO) references scource(cno) on delete restrict, grade dec(4,1) DEFAULT null);

3.修改表的結(jié)構(gòu)

  • a.添加新列------ADD
  • alter table_name add 列名 類型 ?
  • b.修改列字段類型----modify
  • alter table_name modify 列名 類型 
  • c.修改列的名稱或者屬性-----change
  • alter table_name?change name1 name2 類型
  • d.添加主鍵------add primary key(column);
  • alter table_name add primary key(column); 
  • alter table table_name drop primary key;//刪除主鍵 注意:如果此列被設(shè)置為外建 on delete restrict,那么只有刪除了外鍵之后才能刪除主鍵
  • e.添加其他屬性-------add unique(column)
  • alter table_name add unique(column)
  • g.重命名表名--------rename
  • alter table_name rename table_name table_name_new
  • h.外鍵設(shè)置------外建引用的列值必須唯一
  • alter table_name add constrints foreign_name foreign key(column) references outer_table(column) on delete set null;
  • alter table_name drop foreign key foreign_name;//刪除外鍵
  • 索引設(shè)置—后續(xù)
  • alter table_name add index index_name(column)
  • alter table_name drop index index_name;//刪除索引

4.MYSQL索引

  • MYSQL索引----加快查詢速度
  • MySQL中,所有的數(shù)據(jù)類型都可以被索引。
  • MySQL的索引包括普通索引、唯一性索引、全文索引、單列索引、多列索引等。
  • 缺點(diǎn):
  • 1.創(chuàng)建和維護(hù)索引需要消耗時(shí)間
  • 2.索引需要占用物理空間
  • 索引的分類
  • 普通索引— 沒(méi)有任何約束條件的索引
  • 唯一索引— Unique(索引對(duì)應(yīng)的值不能重復(fù))
  • 全文索引—FullText(只能創(chuàng)建在CHAR、VARCHAR、TEXT)
  • 單列索引—索引對(duì)應(yīng)一列值
  • 多列索引—索引對(duì)應(yīng)多列值
  • 創(chuàng)建索引
  • 1.創(chuàng)建表的時(shí)候設(shè)置索引
  • 格式[UNIQUE | FULLTEXT | SPATIAL ] INDEX index_name (column [length長(zhǎng)度] [ASC|DESC]);
      • a.普通索引 index index_name(id)?
        • create table score(id int(11)?primary Key not?null, index id_index(id));//這里其實(shí)是多余的,主鍵上自動(dòng)會(huì)添加索引
      • b.唯一索引
        • unique index index_name (column desc);
      • c.全文索引
        • FullText index index)name(info desc);
      • d.單列索引
        • Index index_name(tel(20));//tel 為varchar類型
      • e.多列索引
        • Index index_name(column1,column2);
        • 多列索引生效的條件是什么?
        • 查詢條件包含column1
        • eg:alter table table_name add index index_name(column1,column2);
        • select * from table_name where column2="value";//索引是不會(huì)起作用的
  • 2.已經(jīng)創(chuàng)建的表格添加索引
      • create [Unique|FULLTEXT|SPATIAL] Index index_name on table_name(column ?length?desc);
      • e.g.:create unique Index id_index on studentInfo(id);//id字段添加了自動(dòng)索引
  • 3.修改表的結(jié)構(gòu)并添加索引
      • Alter table table_name add [unique|fulltext] index index_name(column desc);
  • 4.刪除索引
      • ALTER Table table_name drop Index index_name;
  • 5.查看添加的索引
      • show create table table_name;

5.SELECT語(yǔ)句

  • ?5.1 表格數(shù)據(jù)

  • 表1.course表
  • 表2.student
  • 表3.sc
  • 5.2 查詢語(yǔ)句聯(lián)系

  • Q1:查詢秋季學(xué)期有一門(mén)以上得分90以上的學(xué)生的名字
  • a.SELECT sname from student WHERE sno in (SELECT sno from sc WHERE grade>90 and cno in (SELECT cno from course WHERE semester="秋"));
  • b.SELECT sname? FROM student JOIN sc USING(`SNO`) JOIN course USING(cno) WHERE `SEMESTER`="秋" and grade>90;
  • Q2:查詢只有一個(gè)人選修的課程號(hào)
  • a.SELECT cno from (SELECT cno,count(*) as count from sc GROUP BY `CNO`)a WHERE count=1;//from后的子查詢必須添加別名
  • select CNO from sc group by CNO having count(*)=1;
  • b.SELECT `CNO` FROM sc WHERE cno not in (SELECT sc1.cno from sc as sc1,sc as sc2 WHERE sc1.sno!=sc2.`SNO` and sc1.cno=sc2.cno);
  • c.SELCT cno from sc as scx where cno not in (select cno from sc where sno!=scx.sno);//關(guān)聯(lián)字查詢
  • Q3:查詢選修EE-1的學(xué)生的姓名
  • a.SELECT sname FROM student WHERE `SNO` IN (SELECT `SNO` from sc WHERE cno="EE-1");
  • b.select sname FROM student,sc WHERE student.`SNO`=sc.`SNO` and `CNO`="EE-1";//鏈接
  • c.SELECT `SNAME` FROM student? WHERE EXISTS (SELECT * from sc where sc.sno=student.`SNO`AND cno="EE-1");//使用Exists
  • Q4:查詢學(xué)生的平均身高
  • SELECT AVG(`HEIGHT`) FROM student;
  • Q5:查詢?nèi)背煽?jī)的學(xué)生名和課程號(hào)
  • SELECT sname,cno FROM student JOIN sc USING(`SNO`) WHERE grade IS NULL;
  • 5.3 Group BY 和Order by的使用

  • Q1:查詢CS開(kāi)頭的課程的平均成績(jī),最大成績(jī),最小成績(jī),除去成績(jī)有NULL的科目,最終結(jié)果按照課程名進(jìn)行排序
  • SELECT cno,MAX(grade),MIN(grade),avg(grade) FROM sc WHERE `CNO` LIKE "CS%" GROUP BY `CNO` HAVING `CNO` IN (SELECT `CNO` FROM sc WHERE grade is not NULL) ORDER BY `CNO` ASC;
  • 注意HAVING的條件
  • 5.4 Union的使用

  • 合并查詢UNION—合并集合查詢的結(jié)果(一般是同一列)
  • 關(guān)鍵字
      • 1.UNION ? ? ??——合并結(jié)果并去重
      • 2.UNION ALL——簡(jiǎn)單的合并結(jié)果
  • Q1:查詢1983年出生的學(xué)生和選修EE專業(yè)的學(xué)生的學(xué)號(hào)
  • ?SELECT sno from student WHERE year(`BDATE`)="1983" UNION SELECT `SNO` FROM sc WHERE cno?like "EE%";

6.Insert、update、Delete語(yǔ)句?

  • 6.1 Insert語(yǔ)句

  • Insert into table(column1,coliumn2) values(values1,values2);

  • 6.2 Update語(yǔ)句

  • update table_name set column=value where 條件 

  • 6.3 Delete語(yǔ)句?

  • delete from table_name where 條件  

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/yangyunnb/p/6407044.html

總結(jié)

以上是生活随笔為你收集整理的1.SQL数据定义语言(基础)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。