1、DDL
常用數(shù)據(jù)類型
- 創(chuàng)建表
create table user(username varchar(30), password char(32)); - 查看表結(jié)構(gòu)
desc user; - 查看表創(chuàng)建語句
show create table user; - 刪除表
drop table user; - 創(chuàng)建表指定字符集和引擎
create table user(username varchar(30), password char(32)) engine=innodb default charset=utf8; - 修改字段類型
alter table user modify username varchar(20); - 添加字段
alter table user add email varchar(30)
alter table user add email varchar(30) after username;
增刪改查 curd操作
首先通過mysql -uroot -p 進(jìn)入數(shù)據(jù)庫系統(tǒng),創(chuàng)建數(shù)據(jù)庫dudu编矾,進(jìn)入數(shù)據(jù)庫dudu use dudu号胚,然后才是創(chuàng)建表的過程
所有的符號都是英文焚鹊。
- 創(chuàng)建表開始學(xué)習(xí)增刪改
mysql> create table user(
-> id int auto_increment,
-> name varchar(30) not null,
-> money int not null,
-> province varchar(20) default null,
-> age tinyint unsigned not null,
-> sex enum('女', '男') not null,
-> primary key(id)
-> )engine=innodb default charset=utf8;
【注】單選在插入值的時候诗芜,可以直接使用1 2恨闪,那么1代表女究飞,2代表男置谦,enum類型如不不給值,默認(rèn)是第一個
- set類型如何插入
set('吃', '喝', '嫖', '賭', '抽')
1 2 4 8 16
4|8|16 如果是后三個亿傅,可以這么寫
28 也可以加起來媒峡,這么寫
2、DML
增刪改語句
3葵擎、可視化工具
當(dāng)你去操作數(shù)據(jù)庫的時候谅阿,其實(shí)有3中方式
(1)使用mysql自帶的客戶端進(jìn)行操作
(2)使用一些第三方的可視化工具管理數(shù)據(jù)庫 比如navicate、sqlyog
(3)使用代碼去操作數(shù)據(jù)庫酬滤,比如python签餐、java、php
4盯串、DQL
query : 查詢
模糊查詢:like '%德%' 只要有 德 字的都符合要求
% 代表任意多的字符
like '柳_' 叫 柳某 的都符合要求
_ 代表一個任意字符-
limit:
limit 2 : 在結(jié)果集中只要前兩個
limit offset, number : offset代表偏移量氯檐,number代表數(shù)量
LIMIT number1 OFFSET number2 : number1 是數(shù)量 number2 是偏移量上網(wǎng)的時候,經(jīng)常會有分頁嘴脾,每頁顯示10條男摧,
第一頁:select * from table limit 0, 10
第二頁:select * from table limit 10, 10
第三頁:select * from table limit 20, 10
第n頁:select * from table limit (n-1)*10, 10 分組:
字段只能出現(xiàn)分組字段和統(tǒng)計信息蔬墩,其它的字段出現(xiàn)沒有意義
select province, count() from user group by province;
select province, count() as c from user group by province having c>=2;
【注】having經(jīng)常跟在group by的后面,where是跟在表的后面
select使用順序
SELECT xxx FROM xxx WHERE xxx GROUP BY xxx HAVING xxx ORDER BY xxx LIMIT xxx;
取出擁有年齡大于30歲的明星個數(shù)大于兩個且第二多的省份多表聯(lián)合
mysql> create table user(
-> id int auto_increment,
-> name varchar(30) not null,
-> gid varchar(10) default 0,
-> primary key(id)
-> )engine=innodb default charset=utf8;
mysql> create table goods(
-> gid int auto_increment,
-> name varchar(30) not null,
-> price int not null,
-> category varchar(20) not null,
-> primary key(gid)
-> )engine=innodb default charset=utf8;
mysql> insert into user(name, gid) values('郭德綱', 1),
-> ('岳云鵬', 2),
-> ('曹云金', 0),
-> ('于謙', 3),
-> ('牛群', 1),
-> ('馮鞏', 1),
-> ('大兵', 4),
-> ('馬三立', 0),
-> ('賈玲', 2);
- 隱式內(nèi)連接
select user.name as uname, goods.name as gname from user, goods where user.gid=goods.gid; - 顯示內(nèi)連接
select * from user as u join goods as g on u.gid=g.gid;
select u.name as uname, g.name as gname from user as u join goods as g on u.gid=g.gid; - 三表鏈接格式
select * from user as u join goods as g on u.gid=g.gid join price as p on g.pid=p.pid
指令匯總
一耗拓、什么是SQL
SQL(Structured Query Language)結(jié)構(gòu)化查詢語言的縮寫拇颅,是一種特殊目的的編程語言,
是一種數(shù)據(jù)庫查詢和程序設(shè)計語言乔询,用于存儲數(shù)據(jù)以及查詢樟插、更新和管理關(guān)系型數(shù)據(jù)庫系統(tǒng);
同時也是數(shù)據(jù)庫腳本文件的擴(kuò)展名竿刁。
二黄锤、SQL分類
數(shù)據(jù)定義語言(DDL),例如:CREATE食拜、DROP鸵熟、ALTER等語句。
數(shù)據(jù)操作語言(DML)负甸,例如:INSERT流强、UPDATE、DELETE呻待。
數(shù)據(jù)查詢語言(DQL)打月,例如:SELECT語句。
數(shù)據(jù)控制語言(DCL)蚕捉,例如:GRANT奏篙、REVOKE。
數(shù)據(jù)事務(wù)語言(DTL)迫淹,例如:BEGIN秘通、COMMIT、ROLLBACK等語句千绪。
三充易、DDL
1、連接數(shù)據(jù)庫
mysql -h服務(wù)器地址 -u用戶名 -p密碼
基本語法
a.查看庫 show databases
b.創(chuàng)建庫 create database 數(shù)據(jù)庫名
c.刪除庫 drop database 數(shù)據(jù)庫名
d.選中庫 use 數(shù)據(jù)庫名
e.查看表 show tables
f.創(chuàng)建表 create table(字段1 字段類型荸型,字段名2 字段類型2) 表名
g.查看表字段 desc 表名
h.刪除表 drop table 表名
i.指定字符集和引擎
1.存儲引擎 engine=InnoDB
2.創(chuàng)建表時指定字符集default charset=utf8
j.修改表字段類型
alter table 表名 modify 字段名 類型名
k.增加表字段
alter table 表名 add 字段名 類型名
l.增加字段時控制順序
alter table 表名 add 字段名 字段類型 after 字段名2
alter table 表名 add 字段名 字段類型 first
m.刪除表字段
alter table 表名 drop 字段名
n.表字段改名
alter table 表名 change 字段原名 字段新名 字段類型
o.修改表名
alter table 舊表名 rename 新表名
四盹靴、MDL
操作前先建立表
create table user(
id int auto_increment,
name varchar(50) not null,
money float not null ,
province varchar(20) default null ,
age tinyint unsigned not null ,
sex tinyint not null ,
primary key (id)
) engine= InnoDB default charset=utf8;
a.插入記錄1
insert into 表 values(值1,值2,值n)
插入記錄2
insert into 表(字段1,字段2,字段n) values(值1,值2,值n)
插入數(shù)據(jù)3
insert into star(name, money, province, age, sex)
values('黃曉明', 2000000, '山東', 39, 0),
( 'angelababy', 3000000, '上海', 27, 1),
( '陳赫', 150000, '福建', 31, 0);
刪除記錄 delete from 表 where 條件
修改記錄 update 表 set 字段1=值1,字段2=值2 where 條件
基礎(chǔ)查詢 select * from 表
五、DQL
指定字段查詢 select 字段 from 表名
指定字段組合不重復(fù)記錄 select distinct 字段 from 表
條件查詢 select 字段 from where 條件查詢
where后可接的條件
> < >= <= !=/<> or and between and in/not in like(模糊查詢)
結(jié)果集排序 select 字段 from 表 order by 字段 排序關(guān)鍵詞(asc升序 默認(rèn)升序瑞妇,desc降序)
多字段排序 select 字段 from 表 order by 字段1 desc|asc,字段n desc|asc
限制查詢的結(jié)果集 select 字段 from 表 limit 數(shù)量
限制排序后的結(jié)果集 select 字段 from 表 order by 字段 desc|asc limit 數(shù)量
結(jié)果集區(qū)間選擇 select 字段 from 表 limit 偏移量稿静,數(shù)量
用limit分頁 第1頁為 limit 0,10 第2頁為 limit 10,10第3頁為 limit 20,10
依此類推... ...
常用統(tǒng)計函數(shù)
sum 求和
count 統(tǒng)計整數(shù)
max 最大值
min 最小值
avg 平均值
統(tǒng)計函數(shù)使用 select 函數(shù)(字段) from 表
分組 select * from 表 group by 字段
分組統(tǒng)計 select * from 表 group by 字段
結(jié)果集過濾 select * from 表 group by 字段 having 條件
整體使用SQL
順序 select from where group by order by limit
SELECT xxx FROM xxx WHERE xxx GROUP BY xxx HAVING xxx ORDER BY xxx LIMIT xxx;
多表聯(lián)合查詢
隱式內(nèi)連接
select 表1.字段 [as 別名],表n.字段 from 表1[別名],表n where 條件
select username, name from user, goods where user.gid=goods.gid;
顯式外連接
select 表1.字段[as 別名],表n.字段 from 表1 inner join 表2 on條件
select username, name from user inner join goods on user.gid=goods.gid
外連接之左連接
select 表1.字段 [as 別名], 表n.字段 from 表1 left join 表n on 條件
外連接之右連接
select 表1.字段 [as 別名], 表n.字段 from 表1 right join 表n on 條件
子(嵌套)查詢
select 字段 from 表 where 字段 in(條件)
記錄聯(lián)合
select 語句1 union[all] select 語句2
修改更新
update 表名 set 字段1=值1, …, 字段n=值n where 條件
兩個表同時更新
update 表1,表2 set 字段1=值1, …, 字段n=值n where 條件
清空表記錄
truncate table 表名
創(chuàng)建用戶
Create user ‘用戶名’@‘用戶地址’ identified by ‘密碼’
刪除用戶
drop user ‘用戶名’@‘用戶地址’
授予權(quán)限
grant 權(quán)限 on *.* to ‘用戶名’@‘用戶地址’
剝奪權(quán)限
revoke 權(quán)限 on *.* from ‘用戶名’@‘用戶地址’