MySQL的sql語言分類DML、DQL、DDL、DCL、
MySQL的sql語言分類DML、DQL、DDL、DCL、
SQL語言一共分為4大類:數據定義語言DDL,數據操縱語言DML,數據查詢語言DQL,數據控制語言DCL
1.數據定義語言DDL(Data Definition Language)
對象: 數據庫和表
關鍵詞: create alter drop truncate(刪除當前表再新建一個一模一樣的表結構)
創建數據庫:create database school;
刪除數據庫:drop database school;
切換數據庫:use school;
創建表:create table student(
id int(4) primary key auto_increment,
name varchar(20),
score int(3)
);
查看數據庫里存在的表:show tables;
注意:
varchar類型的長度是可變的,創建表時指定了最大長度,定義時,其最大值可以取0-65535之間的任意值,但記錄在這個范圍內,使用多少分配多少,
varchar類型實際占用空間為字符串的實際長度加1。這樣,可有效節約系統空間。varchar是mysql的特有的數據類型。
char類型的長度是固定的,在創建表時就指定了,其長度可以是0-255之間的任意值。雖然char占用的空間比較大,但它的處理速度快。
修改表:alter table student rename (to) teacher;
alter table student add password varchar(20);
alter table student change password pwd varchar(20);
alter table student modify pwd int;
alter table student drop pwd;
刪除表:drop table student;
查看生成表的sql語句:show create table student;
查看表結構:desc student;
2.數據操縱語言DML(Data Manipulation Language)
對象:紀錄(行)
關鍵詞:insert update delete
插入:insert into student values(01,'tonbby',99); (插入所有的字段)
insert into student(id,name) values(01,'tonbby'); (插入指定的字段)
更新:update student set name = 'tonbby',score = '99' where id = 01;
刪除:delete from tonbby where id = 01;
注意:
開發中很少使用delete,刪除有物理刪除和邏輯刪除,其中邏輯刪除可以通過給表添加一個字段(isDel),若值為1,代表刪除;若值為0,代表沒有刪除。
此時,對數據的刪除操作就變成了update操作了。
truncate和delete的區別:
truncate是刪除表,再重新創建這個表。屬於DDL,delete是一條一條刪除表中的數據,屬於DML。
3.數據查詢語言DQL(Data Query Language)
select ... from student where 條件 group by 分組字段 having 條件 order by 排序字段
執行順序:from->where->group by->having->order by->select
注意:group by 通常和聚合函數(avg(),count()...)一起使用 ,經常先使用group by關鍵字進行分組,然后再進行集合運算。
group by與having 一起使用,可以限制輸出的結果,只有滿足條件表達式的結果才會顯示。
having和where的區別:
兩者起作用的地方不一樣,where作用於表或視圖,是表和視圖的查詢條件。having作用於分組后的記錄,用於選擇滿足條件的組。
4.數據控制語言DCL(Data Control Language)
數據控制語言DCL用來授予或回收訪問數據庫的某種特權,並控制數據庫操縱事務發生的時間及效果,對數據庫實行監視,用戶,權限,事務等。
grant:授權,rollback:回滾。commit:提交。