1. 程式人生 > >SQL四大基本語句

SQL四大基本語句

目錄

sql四種語句

資料控制語言DCL

操作使用者的語句

使用者許可權

許可權級別:

主要許可權:

資料相關許可權

授權方式

操作資料庫的語句

資料定義語言DDL

操作表結構的語句

資料操縱語言DML

資料查詢語言DQL


sql四種語句

資料定義語言,即SQL DDL,用於定義SQL模式、基本表、檢視、索引等結構。
資料操縱語言,即SQL DML。資料操縱分成資料查詢和資料更新兩類。
資料查詢語言,即SQL DQL。
資料控制語言,即SQL DCL,這一部分包括對基本表和檢視的授權、完整性規則的描述、事務控制等內容。

資料控制語言DCL

操作使用者的語句

CREATE USER `使用者名稱` [@`主機地址`][IDENTIFIED BY`密碼`];
@主機地址是對制定主機開放MySQL服務,預設為%,省略密碼則沒有密碼

use mysql;
describe user;#使用者列表

create user `zhangshuo`@`localhost`identified by `123`;#新建使用者
update user set host=`%` where user=`zhangshuo`;#更新使用者的許可權,開放服務
DROP USER `zhangshuo`@`localhost`;#刪除使用者

使用者許可權

使用者許可權儲存在mysql庫的user,db,tables_priv,columns_priv,procs_priv系統表中

許可權級別:

全域性性管理許可權,作用於整個mysql
資料庫許可權,作用於指定資料庫上
資料庫物件許可權,作用於指定資料庫物件

主要許可權:

表結構相關許可權
ALL所有許可權
ALTER修改
CREATE建立
DORP刪除
INDEX建立刪除索引
GRANT OPTION授權或回收其他使用者許可權

資料相關許可權

EVENT對錶資料查詢、建立、修改、刪除
INSERT建立
DELETE刪除
UPDATE修改
SELECT查詢

授權方式

給使用者所有資料庫的所有表的所有許可權。
GRANT ALL ON *.*;
例如:GRANT ALL ON `mydatebase`.`mytable` TO `zhangshuo`@`%`;

FLUSH PRIVILEGES;重新整理許可權立即成效
REVOKE SELECT ON `mydatebase`.`mytable` FROM `zhangshuo`@`%`;收回使用者許可權

操作資料庫的語句

SHOW DATABASES;
CREATE DATABASE `zhangshuo`;
DROP DATABASE `zhangshuo`;
USE zhangshuo;

資料定義語言DDL

操作表結構的語句

CREATE TABLE `student`(
`studentNo` INT(4) NOT NULL PRIMARY KEY COMMENT '學號',
`loginPwd` VARCHAR(20) NOT NULL COMMENT '密碼',
`sudentName` VARCHAR(50) NOT NULL COMMENT '姓名',
`sex` CHAR(2) NOT NULL COMMENT '性別',
`gradeID` INT(4) UNSIGNED COMMENT '年級編號',
`phone` VARCHAR(50) COMMENT '聯絡電話',
`address` VARCHAR(255) COMMENT '地址',
`bornDate` DATETIME COMMENT '出生日期',
);

DROP TABLE `student`;

修改表結構
ALTER TABLE `subject` CHANGE `subjectNo` `subjectNo` INT(4) NOT NULL AUTO_INCREMENT COMMENT '課程編號' ;
修改表名
ALTER TABLE `person` RENAME `tb_person`;
刪除列
ALTER TABLE `tb_person` DROP `bornDate`;
新增列
ALTER TABLE `tb_person` ADD `bornDate` DATE COMMENT '出生日期';
新增複合主鍵
ALTER TABLE `result` DROP PRIMARY KEY, ADD PRIMARY KEY (`studentNo`, `subjectNo`, `examDate`);
新增外來鍵
ALTER TABLE `result` ADD CONSTRAINT fk_student_result FOREIGN KEY (`studentNo`) REFERENCES `students`(`studentNo`);


資料操縱語言DML

INSERT INTO `subject`(`subjectNo`,`subjectName`,`classHour`,`gradeID`)VALUE(1,'Logic Java',220,1);
UPDATE `students` SET `address`='北京市海淀區',`loginPwd`='000' WHERE `studentNo`=10006;
UPDATE `subject` SET `classHour`=`classHour`-10 WHERE `classHour`>200;
CREATE TABLE `student_grade` (SELECT `studentName`,`sex`,`bornDate`,`phone`FROM `students` WHERE `gradeID`=1);

資料查詢語言DQL

SELECT * FROM students WHERE age=16;
SELECT studentName FROM students WHERE gradeID=1 AND sex='女';
SELECT * FROM SUBJECT WHERE classHour>100;