1天熟记----数据库
数据库
查看创建的表:
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天熟记----数据库相关推荐
- Spring Boot参考指南
Spring Boot参考指南 作者 菲利普·韦伯,戴夫 Syer,约什 长,斯特凡 尼科尔,罗布 绞车,安迪·威尔金森,马塞尔 Overdijk,基督教 杜普伊斯,塞巴斯蒂安·德勒兹,迈克尔·西蒙斯 ...
- 计算机数据库三级应用题,计算机等级-数据库三级
考试准备: 复习时间:2个月,连考三级.四级.在职复习,跟领导额外请了3天左右假期在家复习. 教材:<全国计算机等级考试三级教程>.<未来教育练习题> 未来教育的题目一定要买, ...
- 怎样新建Oracle数据库
怎样新建Oracle数据库 原文:怎样新建Oracle数据库 新建Oracle数据库三种方法: 1.通过运行Oracle Database Configuration Assistant 创建配置或删 ...
- oracle简易版创建数据库,浅析新建Oracle数据库的三种方法
1.通过运行Oracle Database Configuration Assistant 创建.配置.或删除数据库(也可在命令行下输入dbca): 2.用命令行的方式建立数据库 3.通过运行自定义的 ...
- oracle创建数据库的三种方法
新建Oracle数据库三种方法: 1.通过运行Oracle Database Configuration Assistant创建配置或删除数据库(也可在命令行下输入dbca): 2.用命令行的方式建立 ...
- 【另类见解】那些要保证缓存和数据库数据一致性的最后怎么了?
" 现在如果说不出几句如何保证数据一致性方案的话,觉得出去面试都丢人,尤其是缓存和数据库的数据一致性 " 全程无图,请谨慎阅读 缓存对于程序性能而言,无疑是个杀手锏,但不是完美的解 ...
- 讲解Linux数据库安装
学习了linux这门课之后,就开始实践过程了,这样比较记得牢固,学以致用. 有了基本的命令,就可以试着安装数据库了. 企业环境 需要安装VMWare ESXi虚拟机,然后再在里面新建虚拟机. 镜像vm ...
- 快收下这份“数据库运作实践”秘制口诀
小时候,我们用九九口诀帮助学习乘法,如今,我们用朗朗上口的口诀,帮助DBA熟记工作纲领.这份口诀,来自于一位深耕数据库领域15年的资深DBA--21CN 成思敏,日复一日的实践中总结出的精华,分享至此 ...
- 数据库运作实践三三之歌(秘制口诀)
小时候,我们用九九口诀帮助学习乘法,如今,我们用朗朗上口的口诀,帮助DBA熟记工作纲领.这份口诀,来自于一位深耕数据库领域15年的资深DBA--21CN 成思敏,日复一日的实践中总结出的精华,分享至此 ...
最新文章
- HTML中有关表格的基本属性知识
- 关于在VS2010中学习c++的MFC
- 动态新增元素的js无效的解决方法
- 124. Binary Tree Maximum Path Sum 二叉树中的最大路径和
- Typescript 和 Javascript之间的区别
- zb——中国人发起的编程语言之序章
- 工作流实战_20_flowable 任务签收 反签收
- PID算法的EXCEL模拟实现
- java数组转为字符串_join()和toString()方法 将数组转换为字符串
- 数据结构之二叉查找树
- [知识库:python-tornado]异步调用中的上下文控制Tornado stack context
- postgres 显示变量,如何在PostgreSQL查询中声明变量
- 微信小程序----第二天(小程序 - 模板与配置)
- 3轴/6轴/9轴传感器是什么, 加速计/陀螺仪/磁力计又是什么?
- JTextArea用法
- 苹果手机如何找回id密码_iPhone手机ID总是忘记密码,轻松一招帮你找回,原来这么简单...
- 信用百度公司商标信息爬取
- Life is going on
- Linux5.28作业详解磁盘配额与测试
- U盘中了蠕虫病毒后清除蠕虫并恢复文件的方法
热门文章
- Tomcat7.0源码分析——server.xml文件的加载与解析
- booth乘法器的原理与verilog实现
- ASW3410设计说明|双通道 2切1/1切2 USB3.1 多路切换器设计|USB3.1/2.0双向切换方案
- 2021年上海理工大学《高等代数》试卷和答案(蔡宇编辑)
- 整理的一些建站中常见的问题与解决代码
- 程序底层工具:cl编译器
- 小米软件研发工程师面试
- Android摄像头:只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整(原理:底层SurfaceView+上层绘制ImageView)...
- Web前端期末大作业-化妆品商城网页设计(HTML+CSS+JS)
- 扑克牌顺子(C++)