Mysql的DDL DML DCL語句分別是什么意思


sql:結構化查詢語句,專門訪問各種數據庫的標准語言

根據他們的作用不同

1,DDL:數據定義語言

創建庫,創建表,修改表結構等操作,這些操作和數據無關和數據結構有關

好比java中聲明類,聲明方法

2,DML:數據庫操作語言

增刪改查數據

因為數據庫最多的操作其實是查詢,有人把數據庫的查詢語句單獨列出來,DQL ,Date Query language。

3,DCL :數據庫控制語言

例如:權限的授權與回收,事務的提交與回滾

 

/*
一、DDL:數據定義語言 Data Define Language


*/
#和數據庫的結構操作相關的SQL
#1、查看當前用戶可以在當前的DBMS數據庫管理軟件中可以看到的數據庫
show databases;

#2、使用某個數據庫
use 數據名;

#3、創建數據庫
create database 數據名;
create database 數據名 charset 'utf8';

#4、刪除數據庫
drop database 數據庫名;

#和表格的結構操作相關
5、查看某個數據庫下的所有表格
show tables; #前提是前面有use 數據名;的語句

show tables from 數據庫名;

6、創建表格V1.0
create table 【數據庫名.】表名稱(
字段名 數據類型,
字段名 數據類型
);

create table 【數據庫名.】表名稱(字段名 數據類型,字段名 數據類型);
注意:,表示各個字段之間的分隔符。
和Java不同的是,Java是先寫數據類型后寫字段名,mysql是先寫字段名再寫數據類型

create table stu(
id int,
name varchar, #ERROR 1064 (42000): You have an error in your SQL syntax;
birthday date,
gender char,
weight double(4,1), #-999.9~999.9
score int
);

create table stu(
id int,
name varchar(20),
birthday date,
gender char,
weight double(4,1), #-999.9~999.9
score int
);

7、查看表結構
desc 表名稱;

desc:describe 描述

show create table 表名稱;

8、刪除表結構
drop table 表名稱;
注意:無法回滾,數據也會刪除。

9、修改表結構
(1)修改表名稱
rename table 舊名稱 to 新名稱;
alter table 舊名稱 rename 新名稱;

(2)增加一個字段,即給某個表增加一列
alter table 表名稱 add 【column】 字段名稱 數據類型; #默認在最后
alter table 表名稱 add 【column】 字段名稱 數據類型 after 另一個字段名; #指定特定位置
alter table 表名稱 add 【column】 字段名稱 數據類型 first;

alter table stu add tel char(11);

(3)刪除一個字段,即給某個表刪除一列
alter table 表名稱 drop 【column】 字段名稱;

(4)修改字段的數據類型
alter table 表名稱 modify 【column】 字段名稱 數據類型;

(5)修改字段的名稱
alter table 表名稱 change 【column】 舊字段名稱 新字段名稱 數據類型;

(6)修改字段的位置
alter table 表名稱 modify 【column】 字段名稱 數據類型 after 另一個字段名; #指定特定位置
alter table 表名稱 modify 【column】 字段名稱 數據類型 first;

 

 

/*
二、DML
*/
/*
1、添加數據
*/
#為所有字段賦值,一次添加一行
insert into 表名稱 values(值列表); #要求值的數量、順序與表結構的數量、順序一一對應

#為指定字段賦值,一次添加一行
insert into 表名稱(字段列表) values(值列表);

#為所有字段賦值,一次添加多行
insert into 表名稱 values(值列表),(值列表),(值列表)。。。;

#為指定字段賦值,一次添加多行
insert into 表名稱(字段列表) values(值列表),(值列表),(值列表)。。。;

stu表:
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| tel | char(11) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| weight | double(4,1) | YES | | NULL | |
| score | int(11) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)

insert into stu values(1,'張三','1992-01-01','12345678901','男',150.5,99);

insert into stu values(2,'李四');
ERROR 1136 (21S01): Column count doesn''t match value count at row 1

insert into stu(id,name) values(2,'李四');

insert into stu values
(3,'王五','1992-03-01','12345678901','男',150.5,99),
(4,'趙六','1996-03-01','12345678901','男',150.5,99);

insert into stu(id,name)values(5,'李五'),(6,'小貝');

/*
2、查看所有數據
*/
select * from 表名稱;

/*
3、修改數據
*/
update 表名稱 set 字段名 = 字段值, 字段名 = 字段值 。。。; #這種是修改所有行的部分字段
update 表名稱 set 字段名 = 字段值, 字段名 = 字段值 。。。where 條件; #這種是修改部分行(滿足條件的行)的部分字段

update stu set sex = '女',weight = 100;
update stu set sex = '男',weight = 150.5 where id = 1;

/*
4、刪除
*/
1、刪除整張表的數據
(1)delete from 表名稱;
(2)truncate 表名稱;

(1)和(2)的區別:delete是一條一條刪除。truncate是把整張表drop掉,重新建一張。
delete如果在事務中,可以回滾。truncate是無法回滾。

delete from stu;

2、刪除部分行
delete from 表名稱 where 條件; #刪除滿足條件的行

 


免責聲明!

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



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