数据库操作基础,sql必知必会

创建表

语句:

create table <table name> (ColumnName1 ColumnType1, ColumnName2 ColumnType2,…….);

解释:小括号内每一个列名对应一个属性, 依次延伸。

结果:Query OK, XXXXXXX

查看表的定义

语句1:desc <table name>;

结果1:输出内容

 

语句2:show create table <table name> \g;

解释:\g含义是使记录按照字段竖着排列,方便显示

结果2:输出内容

 

两语句不同之处:语句2内容比较全面,

删除表

语句:drop table <table name>;

结果:Query OK, XXXXXXXXXXXXXXXX

修改表类型

语句1:alter table <table name> modify <ColumnName> <ColumnType>;

结果1:Query OK, XXXXXXXXXXXXXX

 

语句2:

alter table <table name> modify <ColumnName> <ColumnType> first;

解释2:修改后将该表的位置调整到最前面

结果2:Query OK, XXXXXXXXXXXXXX

 

语句3:

alter table <table name> modify <ColumnName> <ColumnType> after <OtherColumnName>;

解释3:修改后将该表的位置调整到OtherColumnName的表后面

结果3:Query OK, XXXXXXXXXXXXXX

增加表字段

语句:alter table <table name> add column <ColumnName> <ColumnType>;

结果:Query OK, XXXXXXXXXXXX

 

语句2:

alter table <table name> add <ColumnName> <ColumnType> first;

解释2:添加并将该表的位置调整到最前面

结果2:Query OK, XXXXXXXXXXXXXX

 

语句3:

alter table <table name> add <ColumnName> <ColumnType> after <OtherColumnName>;

解释3:添加并将该表的位置调整到OtherColumnName的表后面

结果3:Query OK, XXXXXXXXXXXXXX

删除表字段

语句:alter table <table name> drop column <ColumnName>;

结果:Query OK, XXXXXXXXXXXX

表字段改名

语句:

alter table <table name> change <ColumnName> <NewColumnName> <NewColumnType>;

结果:Query OK, XXXXXXXXXXXX

注意:change 和 modify都可以修改表的定义, 但是前者可以修改列的名称, 后者不可以。

 

 

语句2:

alter table <table name> change <ColumnName> <ColumnType> first;

解释2:修改并将该表的位置调整到最前面

结果2:Query OK, XXXXXXXXXXXXXX

 

语句3:

alter table <table name> change <ColumnName> <ColumnType> after <OtherColumnName>;

解释3:修改并将该表的位置调整到OtherColumnName的表后面

结果3:Query OK, XXXXXXXXXXXXXX

修改表名

语句:alter table <table name> rename <new table name>;

结果:Query OK, XXXXXXXXXXXXXX

 

字段约束

NULL、NOT NULL、DEFAULT、AUTO_INCREMENT

 

NULL:该字段的值可为空

NOT NULL:该字段的值不可为空

create table friends (

id int(3) not null,

name varchar(8) not null,

pass varchar(20) not null,

);

 

DEFAULT:为该字段提供默认值(插入记录时忘记提供值的时候会使用默认值)

Create table de(id int(3) not null, name varchar(25) not null default ‘No’);

 

AUTO_INCREMENT:只适用于int字段,每次插入记录时为该字段的值设置为上一台记录的值+1

 

DML语句

插入记录

语句1:

insert into <table name> (ColumnName1, ColumnName2…….) values(‘value1’, ‘value2’……);

解释:

values里面值的顺序要和ColumnName对应, valuse’’要加, int类型的不加’’

结果1:Query OK, XXXXXXXXXXX

 

语句2:insert into <table name> values(‘value1’, ‘value2’……);

解释:

可以不指定字段名, 但values里面值的顺序要和表内字段顺序一样, valuse’’要加, int类型的不加’’

结果2:Query OK,  XXXXXXXXXXXX

 

语句3:

insert into <table name> (ColumnName1, ColumnName2…….)

values (‘value1’, ‘value2’……), (‘value1’, ‘value2’……), …….;

解释:一次性插入多条记录,values后面每条记录以逗号隔开

结果3:Query OK,  XXXXXXXXXXXXXXX

 

 

更新记录

语句1:

update <table name> set <ColumnName1> = <value1>, <ColumnName2> = <value2> where <ColumnName> = <value>;

解释:将目标表中列名<ColumnName>的值为<value>的字段的<ColumnNameX>的值修改为<valueX>

结果1:Query OK,XXXXXXXXXXXXX

 

语句2:

update <table name 1>, <table name 2>, …. set <table name 1>.<ColumnName1> = values1, <table name 2>.<ColumnName2> = values2 where <table name 1>.<ColumnName3> = value3 and <table name 2>.<ColumnName4> = value4;

解释:将<table name 1>中<ColumnName3>的值为value3的字段的<ColumnName1>的值改为valuees1

  将<table name 2>中<ColumnName4>的值为value4的字段的<ColumnName2>的值改为valuees2

若有多条要修改的则以逗号分隔开.

结果2:Query OK, XXXXXXXXXXX

 

语句3:

update <table name 1> <temp name1>, <table name 2> <temp name2>, …. set <temp name1>.<ColumnName1> = values1, <temp name2>.<ColumnName2> = values2 where <temp name1>.<ColumnName3> = value3 and <temp name2>.<ColumnName4> = value4;

解释:同上, 不同的地方在于set后面使用<temp name>代替原本的表名, 这样会更方便一些

结果3:Query OK, XXXXXXXXXXX

 

删除记录

!!!!!!对于删除操作, 如果不加where则会将表中所有记录删除

 

语句1:delete from <table name> where <ColumnName> = value;

解释:…….

结果1:从<table name>中将<ColumnName>为value的记录删除

 

语句2:

delete <temp name1>, <temp name 2> from <table name1> <temp name 1>, <table name2> <temp name 2> where <temp name 1>.<ColumnName1> = value1 and <temp name 2>.<ColumnName2> = value2;

解释:以<temp name 1>代替<table name 1>, <temp name 2>代替<table name 2>, 删除<table name 1>中<ColumnName1>的值为value1的记录和删除<table name 2>中<ColumnName2>的值为value2的记录

一样是以逗号隔开

示例:delete a, b from test a, test2 b where a.Name = ‘asd’ and b.Sex = ‘boy’;

结果2:Query OK, XXXXXXXXXXX

 

 

 

 

查询记录

语句1:select * from <table name>;

解释: *表示输出查询的表中所有的记录.

结果1:输出结果

 

语句2:select * from <table name> where <ColumnName> = value;

解释:查询表中所有<ColumnName>的值为value的字段的全部记录, where后用and连接可以增加条件

结果2:输出结果

 

语句3:select <ColumnName> from <table name>;

解释:查询表中所有的<ColumnName>字段的记录, <ColumnName>可以逗号隔开增加条件

结果3:输出结果

 

语句N:可以由各种组合达到各种条件的搜索.

 

 

查询不重复的记录

语句:select distinct <ColumnName> from <table name>;

解释:去掉和<ColumnName>重复的字段后显示

结果:。。。。。。。

 

 

 

排序和限制

语句1:select * from <table name> order by <ColumnName> {desc/asc};

解释:从<tablie name>中选取全部记录按照<ColumnName>的值排序, 默认升序排序, desc或者asc可以不加入, desc表示降序, asc表示升序, {}不加入

<ColumnName>多条以逗号隔开, 第一条想同则以第二条字段进行排序 以此类推

结果1:……..

 

 

语句1:select * from <table name> order by <ColumnName> {desc/asc} limit offset, rowCount;

解释:在排序的基础上添加限制(也可不排序), offset表示在得到的结果偏移的量,比如1表示 从结果的第二个开始显示, rowCount表示要显示的数量., offset可以不填写

结果1:…………..

 

聚合

语句:select <ColumnName> funName from <table name> {where condition} {group by} {with  rollup} {having where contidion}

解释:<ColumnName>可不写, 蓝色的都是可选的, funName的值为: sum(求和)、count(*)(记录数*)、max(最大值)、 min(最小值), group by表示要分类聚合的字段, group by的值是<ColumnName>, with rollup标明是否对分类聚合后的结果再汇总, having表示对分类后的结果再过滤.

结果:…….

表连接

语句:select <ColumnName1>, <ColumnName2> from <table name1>, <table name2> where <condition>;

解释:en ….

结果:……..

 

语句:select <ColumnName1>, <ColumnName2> from <table name1> left join<table name2> on <condition>;

解释:在 列出所有condition条件下的结果, 并且列出所有<table name1>中的<ColumnName1>即使<ColumnName2>中没有合法的condition, 这个是左连接

结果:……..

 

语句:select <ColumnName1>, <ColumnName2> from <table name1> right join<table name2> on <condition>;

解释:在 列出所有condition条件下的结果, 并且列出所有<table name2>中的<ColumnName2>即使<ColumnName1>中没有合法的condition, 这个是右连接

结果:……..

子查询

语句:select * from <table name1> where <ColumnName1> in (select <ColumnName2> from <table name2>);

解释:从<table name1>中选取在 <table name2>中选取的<ColumnName2>中的结果存在的<ColumnName1>,   不仅可以有in , 也 可以是 not in、=、!=、exists、not exists等

在子查询记录唯一的时候才可以用=

结果:………………..

记录联合

语句:select * from <table name1> union <all> select * from <table name2>;

解释:从<table name1>和<table name2>中选取结果并一起显示出来, 加all 会显示所有记录, 不加all会自动去除重复的记录。

结果:…………………..

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值