sql语句分类(附mysql实操语句)
一 數據庫定義語言:簡稱DDL(Data Definition Language),用來定義數據庫對象:數據庫,表,列等。關鍵字:create,alter,drop等。
1.1 DDL之數據庫操作
a, 創建數據庫并指定編碼
create database 數據庫名 charset set utf8mb4;
b 查看數據庫
show databases;
c 查看某個數據庫定義信息
show create database 數據庫名;
d 查看正在使用的數據庫
select database();
e 切換數據庫
use 數據庫名;
f 刪除數據庫
drop database if exists 數據庫名;
1,2DDL 之 表操作
a:創建表
create table 表名(
字段名 類型 [ 約束]
):
類型:
整形 :int
浮點型:float
日期:date
字符串:varchar(n)
約束:
primary key
b 查看所有的表
show tables;
c 查看表結構:
desc 表名;
d 修改表結構
alter table 表名 add 列名 類型(長度)[約束] ------添加列
alter table 表名 change 舊列名 新列名 類型 長度 約束----修改列名
alter table 表名 modify 列名 類型 長度 約束 --------修改列的類型及長度
alter table 表名 drop 列名 ------刪除列
alter table 表名 drop 列名
rename table 表名 to 新表名
alter table 表名 charset set 字符集 —修改表的字符集
二
DML數據操作語言
1 插入表記錄:insert
向表中插入某些字段
insert into 表(字段1 ,字段2) values(值1 ,值2);
向表中插入所有字段的順序創建表時的順序
insert into 表 values (值1 值2);
注意:
值與字段必須對應,個數相同,類型相同。
值的數據大小必須在字段的長度范圍內。
除了數值類型外,其它的字段類型的值必須使用引號引起(建議單引號)。
如果要插入空值,可以不寫字段,或者插入 null。
2 update
update 表名 set 字段名=值, 字段名=值,…where 條件
注意:
列名的類型與修改的值要一致。
修改值得時候不能超過最大長度。
除了數值類型外,其它的字段類型的值必須使用引號引起(建議單引號)。
3.delete
delete from 表名 where 條件
truncate table 表名
delete ----一條一條的刪除 不清空auto_increment記錄數
truncate ----直接將表刪除 重新建表
三 Dcl 語言
四 DQL
1.簡單查詢
select price from 表名;
2 去重查詢
select distinct price from product;
3 運算查詢
select price+2 from product;
4 別名查詢
select price from product as p;---------表別名
select pname as pn from product;-------列表名
5 比較運算符
< <= >= = <> !=大于、小于、大于(小于)等于、不等于
1
2
BETWEEN …AND… 顯示在某一區間的值(含頭含尾)
IN(set) 顯示在in列表中的值,例:in(100,200)
LIKE ‘張pattern’ 模糊查詢,Like語句中,%代表零個或多個任意字符,_代表一個字符,
例如:first_name like ‘_a%’;
IS NULL 判斷是否為空;非空:IS NOT NULL
6 邏輯運算符
and 多個條件同時成立
or 多個條件任一成立
not 不成立,例:where not (salary>100);
7 排序
select * from 表名 order by 排序字段 desc;
desc :降序
asc:升序
select distint price from product order by price desc;
8 聚合函數
count():統計指定列不為null的記錄行數;
sum():計算指定列的數值和,如果指定列類型不是數值類型,那么計算結果為0;
max():計算指定列的最大值,如果指定列是字符串類型,那么使用字符串排序運算;
min():計算指定列的最小值,如果指定列是字符串類型,那么使用字符串排序運算;
avg():計算指定列的平均值,如果指定列類型不是數值類型,那么計算結果為0;
9 分組
select 字段1 ,字段2 from 表名 where 條件 group by 分組字段 having 條件;
having 和where 的區別
having 是在分組后完成的
where 是在分組前對數據進行過濾 后面不可以使用分組函數
10 分頁查詢
select 字段 1 ,字段2, from 表名 limit m,n;
m: 表示從第幾條索引開始 計算方式
n:整數 表示 查詢多少條數據
11 主鍵約束
主鍵約束
主鍵必須包含唯一的值。
主鍵列不能包含 null 值。
每個表都應該有且只能有一個主鍵。
添加主鍵約束
方式一:創建表時,在字段描述處,聲明指定字段為主鍵
create table persons
(
id int(11) primary key
);
1
2
3
4
方式二:創建表時,在constraint約束區域,聲明指定字段為主鍵
格式:[constraint 名稱] primary key (字段列表)
關鍵字constraint可以省略,如果需要為主鍵命名,constraint不能省略,主鍵名稱一般沒用。
字段列表需要使用小括號括住,如果有多字段需要使用逗號分隔。
注:聲明兩個以上字段為主鍵,我們稱為聯合主鍵。
create table persons
(
firstname varchar(255),
lastname varchar(255),
address varchar(255),
constraint personid primary key (firstname, lastname)
);
create table persons
(
firstname varchar(255),
lastname varchar(255),
primary key (firstname)
);
方式三:創建表之后,通過修改表結構,聲明指定字段為主鍵:
alter table persons add [constraint 名稱] primary key (字段列表);
刪除主鍵約束
alter table persons drop primary key;
自動增長列類型必須是整形,自動增長列必須為鍵(一般是主鍵)。
create table persons(id int primary key auto_increment);
默認地,auto_increment 的開始值是 1,如果希望修改起始值
alter table persons auto_increment=100;
唯一約束
unique 約束唯一。
unique 和 primary key 約束均為列或列集合提供了唯一性的保證。
primary key 擁有自動定義的 unique 約束。
請注意,每個表可以有多個 unique 約束,但是每個表只能有一個 primary key 約束。
如需刪除約束,請使用下面的 sql:
alter table persons drop index名稱
如果添加唯一約束時,沒有設置約束名稱,默認是當前字段的字段名。
唯一約束與主鍵約束的區別:
唯一:唯一、可以有空值,但只能有一個空值。一個表可以有多個唯一約束。
主鍵:唯一、不能為空、一個表只能有一個主鍵,非業務數據
12 多表聯查
a 交叉查詢
select * from a,b;
b 內 連接查詢
隱式內連接
select * from a,b where 條件;
顯式內連接
select * from a inner join b on 條件;
c 外連接
左外連接
select * from A left outer join b on 條件;
右外連接
select * from a right outer join b on 條件;
13 子查詢
select 查詢字段 from 表 where 查詢條件
總結
以上是生活随笔為你收集整理的sql语句分类(附mysql实操语句)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 安装rabbitmq
- 下一篇: 一个通过添加本地分区索引提高SQL性能的