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 條件; #刪除滿足條件的行