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 -u root -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
增刪改查語句
- 增
insert into 表名 values(值1,值2毯欣,……) --》insert into user values(1,'王寶強'馒过,……);
insert into 表名(字段1,字段2酗钞,……) values(值1腹忽,值2,……) --》insert into user(name砚作,age,……) values('王寶強', 39), ('xxx', 18); - 查
desc 表名窘奏;--》desc user; - 刪
delete from 表名 where 條件;--》delete from user where id=2; - 改
update 表名 set 字段1=值1葫录,字段2=值2着裹,…… where 條件;--》update user set name='老王',age=36,…… where id=1;
3.可視化工具
當(dāng)你去操作數(shù)據(jù)庫的時候米同,其實有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