数据库

查看创建的表:

show create table emp ;

一、基本用法(增删改查)

1.增

创建数据库

create database name;

创建表

create table person(id int primary key,  # 主键name varchar(16) not null,  # 不为空age int,phone varchar(11),address varchar(256)
);

插入列

alter table person add 列名 varchar(8)null;

插入数据

inner into person(id,name,phone)
values (2015,'wy','12345678')

2.删

删除数据库

drop database <name>;

删除表

drop table person;

删除表列

alter table person drop column age;

删除表行

delete from person
where id = 2015;

3.改

更新表名

alter table person rename user;

修改表字段
①modify微调 修改数据类型,修改字段位置
②change大改 修改名字

alter table person modify age char(10);

把name改为MYname

alter table person change name MYname varchar(20);

修改表内容

update person set address='浙江杭州'; # (全部改为浙江杭州)
update person set address='浙江杭州' where id = 1;  #(id为1的改为杭州)

4.查

见高级用法
例如:列出name姓赵或姓王的男性,且age大于20的人,以年龄逆序排序。

select *from A
where name regexp '^ [王赵]' and sex = 'Mr' and age > 20
order by age desc;

二、高级用法

1.select distinct 返回不同的值

选出A表中b列唯一不同的值,即去掉重复的值
select distinct b from A;

2.or和and

从A表中选出age大于10且country为’CN’或’UK’的人
select *from A
where (age>10) and (country = 'CN' or country  = 'UK');

3.order by 用于对结果按照一个列或多个列进行排序,默认升序(升序ASC,降序DESC)

从A表中按照 age和country两列降序排列显示
select *from A
order by age,country DESC;

4.group by 用于将查询返回的结果集进行一个分组,并展示各个分组中排在第一个的记录,将分组中其余成员隐藏。

表A
±—±------±-----±-----------±---------+
| id | name | age | phone | address |
±—±------±-----±-----------±---------+
| 1 | yang | 22 | 231232132 | 中国上海 |
| 2 | cao | 30 | 456789 | 浙江杭州 |
| 3 | li | 23 | 34567894 | 江苏南京 |
| 4 | huang | 33 | 34567894 | 湖北武汉 |
| 5 | zhang | 30 | 4567890 | 中国北京 |
| 6 | yang | 24 | 2343435353 | 山东青岛 |
| 7 | cao | 44 | 12312312 | 河南郑州 |
| 8 | huang | 45 | 5677675 | 安徽合肥 |
| 9 | yang | 80 | 3343738 | 江苏南通 |
±—±------±-----±-----------±---------+

显示名字,去掉重复值
select *from A
group by name;

±—±------±-----±----------±---------+
| id | name | age | phone | address |
±—±------±-----±----------±---------+
| 2 | cao | 30 | 456789 | 浙江杭州 |
| 4 | huang | 33 | 34567894 | 湖北武汉 |
| 3 | li | 23 | 34567894 | 江苏南京 |
| 1 | yang | 22 | 231232132 | 中国上海 |
| 5 | zhang | 30 | 4567890 | 中国北京 |
±—±------±-----±----------±---------+

5.limit 限制显示的行数

只显示两行

select *from A
limit 2;

6.like 操作符用于在 where子句中搜索列中的指定模式

通配符:

① % 替代 0 个或多个字符

② _ 替代一个字符

选出A表中name列以W开头的人
select *from A
where name like 'W%';
选出A表中name包含wy的客户
select * from A
where name like '%wy%';
选出A表中name以一个任意字符开始,然后是‘xxoo’的所有客户
select *from A
where name like '_xxoo';

7.in 操作符允许您在 where 子句中规定多个值

between 操作符用于选取介于两个值之间的数据范围内的值。

选出表A中age介于1和20之间但name不为wy和ww的人
select *from A
where (age between 1 and 20)and name not in('wy','ww')
select *from A
where (age >= '1' and age <= '20') and (name!='wy' or name != 'ww')
选出A表中name为 WY和WW的网站
select *from
where name in ('WY','WW');

select *from
where name='WY'  or name='WW;

8.别名

A表
±—±------±-----±----------±---------+
| id | name | age | phone | address |
±—±------±-----±----------±---------+
| 2 | cao | 30 | 456789 | 浙江杭州 |
| 4 | huang | 33 | 34567894 | 湖北武汉 |
| 3 | li | 23 | 34567894 | 江苏南京 |
| 1 | yang | 22 | 231232132 | 中国上海 |
| 5 | zhang | 30 | 4567890 | 中国北京 |
±—±------±-----±----------±---------+

把表A中phone设置为tel别名
select phone as tel
from A;

±---------+
| tel |
±---------+
| 456789 |
| 34567894 |
| 34567894 |
| 23123213 |
| 4567890 |
±---------+

把A表中age,phone,address合并,并设置info的别名
select id,name, concat(age,',',phone,',',address) as info
from A

±—±------±---------------------------------+
| id | name | info |
±—±------±-----------------------------------+
| 2 | cao | 30 , 456789 , 浙江杭州 |
| 4 | huang | 33 ,34567894 , 湖北武汉 |
| 3 | li | 23 ,34567894 , 江苏南京 |
| 1 | yang | 22 ,231232132 ,中国上海 |
| 5 | zhang | 30 , 4567890 ,中国北京 |
±-±-----±--------------------------------------+

9.连接 join

inner join 可简写 join,inner join 关键字在表中存在至少一个匹配时返回行

left join,返回的结果右边没有为空

right join,返回的结果左边没有为空

full join:只要其中一个表中存在匹配,则返回行

A表
±—±-------------±--------------------------±------±--------+
| id | name | url | alexa | country |
±—±-------------±--------------------------±------±--------+
| 1 | Google | https://www.google.cm/ | 1 | USA |
| 2 | 淘宝 | https://www.taobao.com/ | 13 | CN |
| 3 | 菜鸟教程 | http://www.runoob.com/ | 4689 | CN |
| 4 | 微博 | http://weibo.com/ | 20 | CN |
| 5 | Facebook | https://www.facebook.com/ | 3 | USA |
| 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND |
±—±--------------±--------------------------±------±--------+
B表
±----±--------±------±-----------+
| aid | site_id | count | date |
±----±--------±------±-----------+
| 1 | 1 | 45 | 2016-05-10 |
| 2 | 3 | 100 | 2016-05-13 |
| 3 | 1 | 230 | 2016-05-14 |
| 4 | 2 | 10 | 2016-05-14 |
| 5 | 5 | 205 | 2016-05-14 |
| 6 | 4 | 13 | 2016-05-15 |
| 7 | 3 | 220 | 2016-05-15 |
| 8 | 5 | 545 | 2016-05-16 |
| 9 | 3 | 201 | 2016-05-17 |
±----±--------±------±-----------+

以连接A、B两个表,显示访问记录
select A.name,A.url,B.count,B.date
from A inner join B
on A.id=B.site_id
order by B.date
select A.name,a.url,b.count,b.date
from A left join B
on A.id=B.site_id
order by B.count DESC

10.正则(举几个简单的例子)

选出A表中name以“F”“G”“p”开始的网站 (正则)

select *from A
where name regexp '^ [FGp]';

### 11.区分大小写
读取 A 表中 b字段值为 c 的记录 (不区分大小写)
```sql
select *from A
where b = ‘c’;

读取 A 表中 b字段值为 c 的记录 (区分大小写)

select *from A
where binary b = ‘c’

11.UNION 操作符合并两个或多个 SELECT 语句的结果

A
±—±-------------±--------------------------±------±--------+
| id | name | url | alexa | country |
±—±-------------±--------------------------±------±--------+
| 1 | Google | https://www.google.cm/ | 1 | USA |
| 2 | 淘宝 | https://www.taobao.com/ | 13 | CN |
| 3 | 菜鸟教程 | http://www.runoob.com/ | 4689 | CN |
| 4 | 微博 | http://weibo.com/ | 20 | CN |
| 5 | Facebook | https://www.facebook.com/ | 3 | USA |
| 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND |
±—±--------------±--------------------------±------±--------+
B
mysql> SELECT * FROM B; (显示B表)
±—±-----------±------------------------±--------+
| id | app_name | url | country |
±—±-----------±------------------------±--------+
| 1 | QQ APP | http://im.qq.com/ | CN |
| 2 | 微博 APP | http://weibo.com/ | CN |
| 3 | 淘宝 APP | https://www.taobao.com/ | CN |
±—±-----------±------------------------±--------+
从A和 B 表中选取所有不同的country(只有不同的值)

select name,country from A
union
select app_name,country from B
order by country

使用 UNION ALL 从A和B表中选取所有的country(也有重复的值)

select name,country from A
union all
select app_name,country from B
order by country

12.select into从一个表复制数据,然后把数据插入到另一个新表中

创建A表的备份复制文件

select *
into Abackup
from A;

复制name,id到新表中

select name,id
into Abackup
from A;

复制study大于60的到新表

select *
into Abackup
from A
where study > 60;

复制多个表中的数据插入到新表中

select A.name,B.study
into Abackup
from A join B
on A.id=B.id;

13.约束

1.NOT NULL - 指示某列不能存储 NULL 值。
2.UNIQUE - 保证某列的每行必须有唯一的值。
3.PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
4.FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
5.CHECK - 保证列中的值符合指定的条件。
6.DEFAULT - 规定没有给列赋值时的默认值。

1.创建ID,name不为空的表

create table (ID int not null,name varchar(13) not null);

在一个已创建的表的 “age” 字段中添加 NOT NULL 约束

alter table person
modify age int not null;

2.在A表创建时在ID 列上创建 UNIQUE 约束

create table A(
ID int not null unique)

当表已被创建时,如需在 “ID” 列创建 UNIQUE 约束

alter table A
add unique (ID)

撤销 UNIQUE 约束

alter table A
drop index ID

3.在 A表创建时在ID列上创建 PRIMARY KEY 约束

create table A(ID int not null,primary key (ID));

当表已被创建时,如需在 “ID” 列创建 PRIMARY KEY约束

alter table A
add primary key (ID);

撤销 PRIMARY KEY约束

alter table A
drop primary key;

4.在 A表创建时在ID列上创建foreign KEY 约束

create table A(ID int not null,foreign key (ID));

当表已被创建时,如需在 “ID” 列创建 foreign key约束

alter table A
add foreign key (ID);

撤销 foreign key约束

alter table A
drop foreign key ID;

4.在 A 表创建时在 ID 列上创建 CHECK 约束

create table A(ID int not null check (ID>0));

当表已被创建时,如需在ID列创建 CHECK 约束

alter table A
add check (ID>0)

撤销 CHECK 约束

alter table A
drop check (ID)

5.在A表创建时在 “city” 列上创建 DEFAULT 约束

create table A(city varchar(255) default 'CN');

在 “city” 列创建 DEFAULT 约束

alter table A
alter city set default 'CN';

撤销 DEFAULT 约束

alter table A
alter city drop default;

三、函数

AVG() - 返回平均值

COUNT() - 返回行数

FIRST() - 返回第一个记录的值

LAST() - 返回最后一个记录的值

MAX() - 返回最大值

MIN() - 返回最小值

SUM() - 返回总和

select avg(column_name)from A

四、进阶

查某一列(或多列)的重复值。(只可以查出重复记录的值,不能查出整个记录的信息

select a,b from A
group by a,b
having(count(*))>1

某一列有重复值的记录。(此方法查出的是所有重复的记录,如果有两条记录重复的,就查出两条)

例如:查找a重复的记录:

select * from A
where a in (
select a from A
group by a
having(count(*))>1)

1天熟记----数据库相关推荐

  1. Spring Boot参考指南

    Spring Boot参考指南 作者 菲利普·韦伯,戴夫 Syer,约什 长,斯特凡 尼科尔,罗布 绞车,安迪·威尔金森,马塞尔 Overdijk,基督教 杜普伊斯,塞巴斯蒂安·德勒兹,迈克尔·西蒙斯 ...

  2. 计算机数据库三级应用题,计算机等级-数据库三级

    考试准备: 复习时间:2个月,连考三级.四级.在职复习,跟领导额外请了3天左右假期在家复习. 教材:<全国计算机等级考试三级教程>.<未来教育练习题> 未来教育的题目一定要买, ...

  3. 怎样新建Oracle数据库

    怎样新建Oracle数据库 原文:怎样新建Oracle数据库 新建Oracle数据库三种方法: 1.通过运行Oracle Database Configuration Assistant 创建配置或删 ...

  4. oracle简易版创建数据库,浅析新建Oracle数据库的三种方法

    1.通过运行Oracle Database Configuration Assistant 创建.配置.或删除数据库(也可在命令行下输入dbca): 2.用命令行的方式建立数据库 3.通过运行自定义的 ...

  5. oracle创建数据库的三种方法

    新建Oracle数据库三种方法: 1.通过运行Oracle Database Configuration Assistant创建配置或删除数据库(也可在命令行下输入dbca): 2.用命令行的方式建立 ...

  6. 【另类见解】那些要保证缓存和数据库数据一致性的最后怎么了?

    " 现在如果说不出几句如何保证数据一致性方案的话,觉得出去面试都丢人,尤其是缓存和数据库的数据一致性 " 全程无图,请谨慎阅读 缓存对于程序性能而言,无疑是个杀手锏,但不是完美的解 ...

  7. 讲解Linux数据库安装

    学习了linux这门课之后,就开始实践过程了,这样比较记得牢固,学以致用. 有了基本的命令,就可以试着安装数据库了. 企业环境 需要安装VMWare ESXi虚拟机,然后再在里面新建虚拟机. 镜像vm ...

  8. 快收下这份“数据库运作实践”秘制口诀

    小时候,我们用九九口诀帮助学习乘法,如今,我们用朗朗上口的口诀,帮助DBA熟记工作纲领.这份口诀,来自于一位深耕数据库领域15年的资深DBA--21CN 成思敏,日复一日的实践中总结出的精华,分享至此 ...

  9. 数据库运作实践三三之歌(秘制口诀)

    小时候,我们用九九口诀帮助学习乘法,如今,我们用朗朗上口的口诀,帮助DBA熟记工作纲领.这份口诀,来自于一位深耕数据库领域15年的资深DBA--21CN 成思敏,日复一日的实践中总结出的精华,分享至此 ...

最新文章

  1. HTML中有关表格的基本属性知识
  2. 关于在VS2010中学习c++的MFC
  3. 动态新增元素的js无效的解决方法
  4. 124. Binary Tree Maximum Path Sum 二叉树中的最大路径和
  5. Typescript 和 Javascript之间的区别
  6. zb——中国人发起的编程语言之序章
  7. 工作流实战_20_flowable 任务签收 反签收
  8. PID算法的EXCEL模拟实现
  9. java数组转为字符串_join()和toString()方法 将数组转换为字符串
  10. 数据结构之二叉查找树
  11. [知识库:python-tornado]异步调用中的上下文控制Tornado stack context
  12. postgres 显示变量,如何在PostgreSQL查询中声明变量
  13. 微信小程序----第二天(小程序 - 模板与配置)
  14. 3轴/6轴/9轴传感器是什么, 加速计/陀螺仪/磁力计又是什么?
  15. JTextArea用法
  16. 苹果手机如何找回id密码_iPhone手机ID总是忘记密码,轻松一招帮你找回,原来这么简单...
  17. 信用百度公司商标信息爬取
  18. Life is going on
  19. Linux5.28作业详解磁盘配额与测试
  20. U盘中了蠕虫病毒后清除蠕虫并恢复文件的方法

热门文章

  1. Tomcat7.0源码分析——server.xml文件的加载与解析
  2. booth乘法器的原理与verilog实现
  3. ASW3410设计说明|双通道 2切1/1切2 USB3.1 多路切换器设计|USB3.1/2.0双向切换方案
  4. 2021年上海理工大学《高等代数》试卷和答案(蔡宇编辑)
  5. 整理的一些建站中常见的问题与解决代码
  6. 程序底层工具:cl编译器
  7. 小米软件研发工程师面试
  8. Android摄像头:只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整(原理:底层SurfaceView+上层绘制ImageView)...
  9. Web前端期末大作业-化妆品商城网页设计(HTML+CSS+JS)
  10. 扑克牌顺子(C++)