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 条件;  #删除满足条件的行
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号