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 条件; #删除满足条件的行