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