DOL語言


DOL語言

DOL(Data Query Language 數據查詢語言)

  • 查詢數據庫數據,如SELECT語句

  • 簡單的單表查詢或多表的復雜查詢和嵌套查詢

  • 是數據庫語言中最核心,最重要的語句

  • 使用頻率最高的語句

 

創建學生表、班級表的代碼

- 創建一個school數據庫
USE `school`;-- 創建學生表
CREATE TABLE `student`(
  `studentno` INT(4) NOT NULL COMMENT '學號',
  `loginpwd` VARCHAR(20) DEFAULT NULL,
  `studentname` VARCHAR(20) DEFAULT NULL COMMENT '學生姓名',
  `sex` TINYINT(1) DEFAULT NULL COMMENT '性別,0或1',
  `gradeid` INT(11) DEFAULT NULL COMMENT '年級編號',
  `phone` VARCHAR(50) NOT NULL COMMENT '聯系電話,允許為空',
  `address` VARCHAR(255) NOT NULL COMMENT '地址,允許為空',
  `borndate` DATETIME DEFAULT NULL COMMENT '出生時間',
  `email` VARCHAR (50) NOT NULL COMMENT '郵箱賬號允許為空',
  `identitycard` VARCHAR(18) DEFAULT NULL COMMENT '身份證號',
  PRIMARY KEY (`studentno`),
  UNIQUE KEY `identitycard`(`identitycard`),
  KEY `email` (`email`)
)ENGINE=MYISAM DEFAULT CHARSET=utf8;


-- 創建年級表
drop table if exists `grade`;
create table `grade`(
`gradeid` int(11) not null auto_increment comment '年級編號',
`gradename` varchar(50) not null comment '年級名稱',
  primary key (`gradeid`)
) engine=innodb auto_increment = 6 default charset = utf8;

-- 創建科目表
drop table if exists `subject`;
create table `subject`(
`subjectno`int(11) not null auto_increment comment '課程編號',
  `subjectname` varchar(50) default null comment '課程名稱',
  `classhour` int(4) default null comment '學時',
  `gradeid` int(4) default null comment '年級編號',
  primary key (`subjectno`)
)engine = innodb auto_increment = 19 default charset = utf8;

-- 創建成績表
drop table if exists `result`;
create table `result`(
`studentno` int(4) not null comment '學號',
  `subjectno` int(4) not null comment '課程編號',
  `examdate` datetime not null comment '考試日期',
  `studentresult` int (4) not null comment '考試成績',
  key `subjectno` (`subjectno`)
)engine = innodb default charset = utf8;

 

插入的數據

-- 插入科目數據
insert into `subject`(`subjectno`,`subjectname`,`classhour`,`gradeid`)values
(1,'高等數學-1',110,1),
(2,'高等數學-2',110,2),
(3,'高等數學-3',100,3),
(4,'高等數學-4',130,4),
(5,'C語言-1',110,1),
(6,'C語言-2',110,2),
(7,'C語言-3',100,3),
(8,'C語言-4',130,4),
(9,'Java程序設計-1',110,1),
(10,'Java程序設計-2',110,2),
(11,'Java程序設計-3',100,3),
(12,'Java程序設計-4',130,4),
(13,'數據庫結構-1',110,1),
(14,'數據庫結構-2',110,2),
(15,'數據庫結構-3',100,3),
(16,'數據庫結構-4',130,4),
(17,'C#基礎',130,1);

-- 插入學生數據 其余自行添加 這里只添加了2行
insert into `student` (`studentno`,`loginpwd`,`studentname`,`sex`,`gradeid`,`phone`,`address`,`borndate`,`email`,`identitycard`)
values
(1000,'123456','張偉',0,2,'13800001234','北京朝陽','1980-1-1','text123@qq.com','123456198001011234'),
(1001,'123456','趙強',1,3,'13800002222','廣東深圳','1990-1-1','text111@qq.com','123456199001011233');

-- 插入成績數據 這里僅插入了一組,其余自行添加
insert into `result`(`studentno`,`subjectno`,`examdate`,`studentresult`)
values
(1000,1,'2013-11-11 16:00:00',85),
(1000,2,'2013-11-12 16:00:00',70),
(1000,3,'2013-11-11 09:00:00',68),
(1000,4,'2013-11-13 16:00:00',98),
(1000,5,'2013-11-14 16:00:00',58);

-- 插入年級數據
insert into `grade` (`gradeid`,`gradename`) values(1,'大一'),(2,'大二'),(3,'大三'),(4,'大四'),(5,'預科班');

 

 

 

SELECT:

  SELECT完整語法:

SELECT [ALL | DISTINCT]
{* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]}
FROM table_name [as table_alias]
  [left | right | inner join table_name2]  -- 聯合查詢
  [WHERE ...]  -- 指定結果需滿足的條件
  [GROUP BY ...]  -- 指定結果按照哪幾個字段來分組
  [HAVING]  -- 過濾分組的記錄必須滿足的次要條件
  [ORDER BY ...]  -- 指定查詢記錄按一個或多個條件排序
  [LIMIT {[offset,]row_count | row_countOFFSET offset}];
   -- 指定查詢的記錄從哪條至哪條

 

-- 查詢所有學生信息
SELECT * FROM `student`
-- 查詢指定列(學號,姓名)
SELECT `studentno` ,`studentname` FROM `student`

AS子句作為別名:

作用:

  • 可給數據列取一個新別名

  • 可給表取一個新別名

  • 可把經計算或總結的結果用另一個新名稱來代替


-- 這里是為列取別名(當然as關鍵詞可以省略)
SELECT studentno AS 學號,studentname AS 姓名 FROM student;

-- 使用as也可以為表取別名
SELECT studentno AS 學號,studentname AS 姓名 FROM student AS s;

-- 使用as,為查詢結果取一個新名字
-- CONCAT()函數拼接字符串
SELECT CONCAT('姓名:',studentname) AS 新姓名 FROM student;

 

DISTINCT關鍵字:

作用 : 去掉SELECT查詢返回的記錄結果中重復的記錄 ( 返回所有列的值都相同 ) , 只返回一條

-- # 查看哪些同學參加了考試(學號) 去除重復項
SELECT * FROM result; -- 查看考試成績
SELECT studentno FROM result; -- 查看哪些同學參加了考試
SELECT DISTINCT studentno FROM result; -- 了解:DISTINCT 去除重復項 , (默認是ALL)

 

使用表達式的列

數據庫中的表達式:一般由文本值,列值,NULL,函數和操作符等組成

應用場景:

  • SELECT語句返回結果列中使用

  • SELECT語句中的ORDER BY , HAVING等子句中使用

  • DML語句中的 where 條件語句中使用表達式

-- select查詢中可以使用表達式
SELECT @@auto_increment_increment -- 查詢自增步長
SELECT VERSION()-- 查詢版本號
SELECT 100*3-1 AS 計算結果  -- 表達式


-- 學員考試成績集體提分一分查看
SELECT `studentno`,`studentresult`+1 AS 提分后 FROM `result`

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM