日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

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

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

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

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

  • 創(chuàng)建數(shù)據(jù)表基本語法
  • 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] );
  • 說明
  • 1.中括號中的內(nèi)容為可選項目
  • 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主表中被刪除那么引用為外鍵值對的表格也刪除、主表中的數(shù)據(jù)被刪除那么引用為外鍵的表的數(shù)據(jù)設(shè)置為NULL
  • 舉例--mysql測試
  • 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的索引包括普通索引、唯一性索引、全文索引、單列索引、多列索引等。
  • 缺點:
  • 1.創(chuàng)建和維護索引需要消耗時間
  • 2.索引需要占用物理空間
  • 索引的分類
  • 普通索引— 沒有任何約束條件的索引
  • 唯一索引— Unique(索引對應(yīng)的值不能重復(fù))
  • 全文索引—FullText(只能創(chuàng)建在CHAR、VARCHAR、TEXT)
  • 單列索引—索引對應(yīng)一列值
  • 多列索引—索引對應(yīng)多列值
  • 創(chuàng)建索引
  • 1.創(chuàng)建表的時候設(shè)置索引
  • 格式[UNIQUE | FULLTEXT | SPATIAL ] INDEX index_name (column [length長度] [ASC|DESC]);
      • a.普通索引 index index_name(id)?
        • create table score(id int(11)?primary Key not?null, index id_index(id));//這里其實是多余的,主鍵上自動會添加索引
      • 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";//索引是不會起作用的
  • 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字段添加了自動索引
  • 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語句

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

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

  • Q1:查詢秋季學(xué)期有一門以上得分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:查詢只有一個人選修的課程號
  • 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)背煽兊膶W(xué)生名和課程號
  • SELECT sname,cno FROM student JOIN sc USING(`SNO`) WHERE grade IS NULL;
  • 5.3 Group BY 和Order by的使用

  • Q1:查詢CS開頭的課程的平均成績,最大成績,最小成績,除去成績有NULL的科目,最終結(jié)果按照課程名進行排序
  • 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é)果
  • Q1:查詢1983年出生的學(xué)生和選修EE專業(yè)的學(xué)生的學(xué)號
  • ?SELECT sno from student WHERE year(`BDATE`)="1983" UNION SELECT `SNO` FROM sc WHERE cno?like "EE%";

6.Insert、update、Delete語句?

  • 6.1 Insert語句

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

  • 6.2 Update語句

  • update table_name set column=value where 條件 

  • 6.3 Delete語句?

  • delete from table_name where 條件  

?

?

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

總結(jié)

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

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