二 sql语句,常用字段数据类型
MySQL中常用DDL命令 database definition language 与 DML命令 : database definition language
操作数据库:
- 创建数据库 : create database day1203 ;
- CREATE DATABASE bank1 CHARACTER SET utf8;
- 查看数据库: show databases;
- 查看数据库定义信息: show create database day1203;
- 将数据库的编码修改为utf8: alter database study2 character set utf8;
- 删除数据库: drop database 1day1203;
- 查看当前使用的数据库:select database();
- 切换数据库:use day1203;
常用的字段数据类型:
int:整型
double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char:固定长度字符串类型; char(10) 如果不足10位则会自动补足10位:'abc '
varchar:可变长度字符串类型;varchar(10) 如果不足10位不会补足:'abc',性能不如char高
text:字符串类型;适用于大文本内容。
blob:字节类型;
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss
操作表 :
- 查看数据库中的所有表: show tables;
- 查看表的创建细节: show create table students;
- 查看表的字段信息:desc students;
- 列增加Adress列: alter table students add Address Varchar(30);
- 列删除列: ALTER TABLE students DROP adress;
- 列修改列: alter table students Modify name varchar(32);
- 列修改列名:alter table emp change username name varchar(20);
- 表修改表名:rename table emp to NewEmp
- 表修改字符集:ALTER TABLE user CHARACTER SET gbk;
- 删除表: drop table students
- 添加:INSERT INTO emp(id,NAME,age) VALUES(4,'lisi',23);
- 批量添加:INSERT INTO emp (id,name,sex,birthday,salary) VALUES (4,'james','male','1985-08-10',50000), (5,'marry','female','1987-06-15',30000);
- 修改:UPDATE emp SET NAME = 'lisi' WHERE id = 4;
- 删除: DELETE FROM emp WHERE id = 4;
DQL查询:
- 简单查询:select id from emp;
- 查询全部:select * from emp;
- 中文显示:SELECT id,NAME,sal*12 AS '年薪' FROM play;
- 条件查询:语法:SELECT 字段名 FROM 表名 [WHERE –> GROUP BY –>HAVING–> ORDER BY];
- 不等于:SELECT sal FROM play WHERE sal <> 5000;
- between … and …:SELECT * FROM play WHERE id BETWEEN 7000 AND 7499;
- is null/not null:SELECT * FROM play WHERE comm IS NULL;
- 且 and: SELECT * FROM play WHERE job='manager' AND sal>2500;
- 或 or : SELECT * FROM play WHERE job='manager' OR sal>2500;
- in(s1,s2) 满足其一就可以:SELECT NAME,sal FROM play WHERE sal NOT IN (1600,3000);
- 模糊查询,在数据量较大的情况下,使用like会影响性能。
- _表示单个,%表示多个
- 查询姓名以M开头的所有员工:
select ename from emp where ename like 'M%';
- 查询姓名以N结尾的所有员工:
select ename from emp where ename like '%N';
- 查询姓名中包含O的所有员工:
select ename from emp where ename like '%O%';
- 查询姓名中第二个字母是A的所有员工:
select ename from emp where ename like '_A%';
- 排序:ORDER BY,默认采用升序(asc)
- SELECT NAME,sal FROM play ORDER BY sal ASC;
- SELECT NAME,sal FROM play ORDER BY sal DESC;
- 分组与聚合:聚合函数在计算时会自动忽略空值,不用手动写sql将空值排除,不能直接写在where语句的后面
- sum()求和函数:SELECT SUM(sal) FROM play;
- avg()取平均值函数:SELECT AVG(sal) FROM play;
- max()取得最大值函数/min最小值:SELECT MAX(sal) AS maxsal FROM play;
- count()取得数据总数:SELECT COUNT(id) FROM play;count()函数不会统计数据为null的记录
- sum、avg、max、min、count这些函数可以一起使用:
- SELECT COUNT(*),SUM(sal),AVG(sal),MAX(sal),MIN(sal) FROM play;
- distinct去重:distinct 字段名或 distinct字段名1, 字段名2…,只能出现在所有字段最前面,后面如果有多个字段及为多字段联合去重。
- SELECT COUNT(DISTINCT job) FROM play;
- group by分组:
- 找出每个职位的最高薪水:SELECT id,job,MAX(sal) AS maxsal FROM play GROUP BY job;
- 找出每个职位的最高薪水按照薪水逆序排序:SELECT NAME,job,MAX(sal) AS maxsal FROM play GROUP BY job ORDER BY maxsal DESC;
- having过滤:如果想对分组的数据进行过滤,需要使用having子句。过滤groupby生成的不符合条件的临时表,放在group后面
- SELECT job,AVG(sal) AS avgsal FROM play GROUP BY job HAVING avgsal>2000;
- where和having区别:
- where和having都是为了完成数据的过滤,它们后面都是添加条件;
- where是在 group by之前完成过滤;
- having是在group by之后完成过滤
- 子查询:select 语句嵌套 select 语句被称为子查询;可出现在select、from、where关键字后面
SELECT NAME,sal FROM play WHERE sal>(SELECT AVG(sal) FROM play)
- 合并查询:
SELECT * FROM emp WHERE id BETWEEN 1 AND 2
UNION
SELECT * FROM emp WHERE id >=6; - 交叉连接查询
- 笛卡尔积:查询出来的是两张表的乘积。没有意义。
- 过滤出有意义的数据:SELECT * FROM product,category WHERE cid=cno;
- SELECT * FROM product AS p , category AS c WHERE c.`cid`=p.`cno`;(或SELECT * FROM product p , category c WHERE c.`cid` = p.`cno`;)
- 内连接查询:查交集
- 隐式内连接:SELECT * FROM product p , category c WHERE c.`cid` = p.`cno`;
- 显式内连接:JOIN ON : SELECT * FROM product p JOIN category c ON p.`cno` = c.`cid`;
- 左外连接:查关于左表的并集
- SELECT * FROM product p LEFT OUTER JOIN category c ON p.`pid` = c.`cid`;
- 右外连接:查关于右表的并集
- SELECT * FROM category c RIGHT OUTER JOIN product p ON c.`cid` = p.`cno`;
- Limit分页:limit只在MySQL中起作用
SELECT * FROM emp WHERE id BETWEEN 1 AND 2
UNION
SELECT * FROM emp WHERE id >=6
ORDER BY id ASC
LIMIT 0,2;
- sql语句顺序:
- select xxxx
- from xxxx
- where xxxx
- group by xxxx
- having xxxx
- order by xxxx desc/asc
- limit
- from 将硬盘上的表文件加载到内存
- where:将符合条件的数据筛选出来。生成一张新的临时表
- group by :根据列中的数据种类,将当前临时表划分成若干个新的临时表
- having : 可以过滤掉group by生成的不符合条件的临时表
- select : 对当前临时表进行整列读取
- order by : 对select生成的临时表,进行重新排序,生成新的临时表
- limit : 对最终生成的临时表的数据行,进行截取
二 sql语句,常用字段数据类型的更多相关文章
- SQL语句修改字段类型与第一次SQLServer试验解答
SQL语句修改字段类型 mysql中 alert table name modify column name type; 例子:修改user表中的name属性类型为varchar(50) alert ...
- sql语句修改字段长度
sql语句修改字段长度 alter table <表名> alter column <字段名> 新类型名(长度) 例: alter table students alter c ...
- sql语句把字段中的某个字符去掉
sql语句把字段中的某个字符去掉 )),'http://demo.m-school.net','') 例如: )),'http://192.168.2.180','') )),'http://zpzx ...
- 用sql 语句给字段添加描述
用sql 语句给字段添加描述 IF not exists (SELECT * FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', ...
- mysql下sql语句 update 字段=字段+字符串
mysql下sql语句 update 字段=字段+字符串 mysql下sql语句令某字段值等于原值加上一个字符串 update 表明 SET 字段= 'feifei' || 字段; (postgr ...
- Sql 语句添加字段、修改字段类型、默认值语法
Sql 语句添加字段 ,) not null --修改类型 alter Table bbs ) Sql 语句修改默认值 alter table 表名 drop constraint 约束名字 --删除 ...
- sql中有一些保留字,当你的字段名是它的保留字时,这个时候sql语句的字段不加``就会报错
sql中有一些保留字,当你的字段名是它的保留字时,这个时候sql语句的字段不加``就会报错
- Oracle使用SQL语句修改字段类型
Oracle使用SQL语句修改字段类型 1.如果表中没有数据 Sql代码 1 2 3 alter table 表名 modify (字段名1 类型,字段名2 类型,字段名3 类型.....) alt ...
- 数据库学习之二--SQL语句以及数据类型
一.SQL语句种类: 1. DDL(Data Definition Language,数据定义语言)用来创建或者删除存储数据用的数据库以及数据库中的表;包含以下几种指令: a. CREATE:CREA ...
随机推荐
- zookeeper 源码(一) 选举和同步数据
前言 在开始阅读代码前我们先来了解一下zk 的大致结构,具体大概要实现的核心功能有那些,心中有个大概的框架阅读代码时再深入其中的细节,就会非常好懂,本人觉得这是一个阅读源码的好方法,可以最快地切入到源 ...
- 4 中文乱码 selenium的使用
# 中文乱码 #处理中文乱码 import requests from lxml import etree from urllib import request url = 'http://pic.n ...
- 洛谷 P1464 Function(简单记忆化)
嗯... 让一切从水开始吧... 水过初赛,但愿复赛能够接着水过... 这道题不记忆化会tle,所以用空间换时间,将每次的答案(只有20*20*20个)存下来,如果之前已经求过,就不需要重复求了... ...
- 第八届极客大挑战 Web-iPhone X
题目: 解题思路: 第一次看到html里只有字其他啥也没有的题,一脸懵逼,学长提示抓包改包,于是开始我的苦逼解题. 0x01 抓包 0x02 改包 由于题目说只有iphoneX才能接受这个websit ...
- Cisco AP-格式化AP
故障情况:APC11-AP04#sho capwap ip config LWAPP Static IP ConfigurationIP Address 172.17.239.204I ...
- Servlet里面request处理外部POST请求的输入流的工具类
package etcom.servlet; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...
- 02-16Android学习进度报告十六
今天主要学习了GridView(网格视图)的基本使用和一些基本概念. 下面是GridView中的一些属性: android:columnWidth:设置列的宽度 android:gravity:组件对 ...
- C语言-排序和查找
一 冒泡排序:算法特点:两层循环外层控制排序的趟数,内存控制相邻元素两两比较的次数.n个数共需n-1趟,(i=1;i<n;i++)趟数=n-1-1+1,其中第j趟需要相邻元素两两比较的次数为n- ...
- 【PAT甲级】1048 Find Coins (25 分)(二分)
题意: 输入两个正整数N和M(N<=10000,M<=1000),然后输入N个正整数(<=500),输出两个数字和恰好等于M的两个数(小的数字尽可能小且输出在前),如果没有输出&qu ...
- 解决CentOS下boost安装后不能使用的问题
先说一说整个经历. 因为之前没有注意到gcc4.8.5比较旧,就已经安装好boost了,当时已经可以使用了,后来发现gcc太老了,一些软件安装需要比较新的gcc支持,所以决定升级gcc,结果boost ...