一、数据类型
数据类型 | 含义 |
---|---|
char (n),varchar(n) | 长度为n的定长字符串(最多 255 个字符。varchar如果长度大于255,则会转换为text类型) |
tinyint | -128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。 |
smallint | -32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。(短整数) |
mediumint | -8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。 |
int | -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。 |
bigint | -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。 |
float(size,b) | 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
double(size,b) | 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
decimal(a,b) | 作为字符串存储的 DOUBLE 类型,允许固定的小数点。 |
date | 日期。格式:YYYY-MM-DD(支持的范围是从 ‘1000-01-01’ 到 ‘9999-12-31’) |
datetime | *日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS(支持的范围是从 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’) |
timestamo | *时间戳。TIMESTAMP 值使用 Unix 纪元(‘1970-01-01 00:00:00’ UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS(支持的范围是从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC) |
time | 时间。格式:HH:MM:SS 注释:支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’ |
year | 2 位或 4 位格式的年。(4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。) |
注:* 即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在 INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。
二、定义语句
create 语句
create database <数据库字>; --创建一个数据库
create table <表名>(<列名> <数据类型> [<列级完整性约束条件>],
<列名> <数据类型> [<列级完整性约束条件>],
...
<列名> <数据类型> [<列级完整性约束条件>]);
--创建一个表
eg1:
CREATE TABLE student(
Sno CHAR(20) PRIMARY KEY,-- 列级约束条件,主码
SName CHAR(20) UNION, -- sname值唯一
Sex CHAR(2));
eg1:
CREATE TABLE course(
Cno CHAR(4) PRIMARY KEY, -- 列级约束条件,主码
Cname CHAR(40) NOT NULL ,-- 列级约束条件,不能为空
CPno CHAR(4), -- 先修课
FOREIGN KEY (CPno) REFERENCES course(CNo)
-- 表级约束条件,CPno是外码,被参照表course。被参照列为Cno);
drop 语句
drop database <数据库名>; --删除数据库
drop table <表名>; -- 删除表
INSERT 语句
INSERT INTO table_name
( field1, field2,...fieldN ) --列名
VALUES
( value1, value2,...valueN ); -- 要插入的内容
注:field和value 的数量一定要对齐,value可以为空
select 语句
select li_name from bi_name; --从表中查找某列的数据
select * from bi_name; --从表中查找全部数据
select distinct 语句
select distinct li_name from bi_name; --查询时去除重复值
where 语句
select li_name from bi_name where li_name 运算符 值; --有条件的选取表中的数据
操作符如下
= 等于、<> 不等于、> 大于、< 小于、>= 大于等于、<= 小于等于、between 在某个范围内、like 搜索某种模式
注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。
and & or 运算符
and 和 or 可以在where子语句中把俩个或多个条件结合起来
and:如果第一条件和第二条件都成立,则and显示一条数据
or:如果第一条件和第二条件中有一条成立,则or显示一条数据
select * from bi_name where 第一条件 and 第二条件;--and运算符
select * from bi_name where 第一条件 or 第二条件; --or运算符
select * from bi_name where (第一条件 or 第二条件) and 第三条件; --and 和 or运算符结合
update 更新语句
update bi_name set li_name = new_value1,li_name = new_value1
[where 选择条件];
delete 语句
delete from bi_name [where 选择条件];
-- 如果没where语句表中的数据全部删除
like 语句
select * from bi_name
where li_name like '%关键字';
select * from bi_name
where li_name like '%关键字%';
select * from bi_name
where li_name like '关键字%';
-- 可以使用LIKE子句代替等号 =
group by语句
select count(*) from bi_name where 选择条件 group by li_name;
order by语句
order by语句用于指定的列队结果集进行排序,默认为升序排列(asc),降序使用desc关键字。
注:单纯的select 语句是以第一列的升序显示(无order by语句)
select name,id from sc order by name;
--以字母升序显示
select name,id from sc order by name desc;
--以字母降序显示
select name,id from sc order by name DESC;
--以数字升序显示
select name,id from sc order by id desc;
--以数字降序显示
注:如果第一列中有些值为 nulls 时,排序也是这样的。
null值处理
select * from bi_name where li_name is NULL;
select * from bi_name where li_name is NOT NULL;
注:!= 和 = 在这处不起作用
alter语句
alter table bi_name drop x; -- 删除x字段
注:如果表中只剩一个记录则无法删除
alter table bi_name add y; -- 增加y字段
连接查询
select bi_name1.*,bi_name2.*
from bi_name,bi_name2
where bi_name1.x = bi_name and
bi_name1.z = m and bi_name2.l > n;
注:运算符有>,<,<>,=,>=,<=
自身连接
select x.m,y.n
from bi_name x,bi_name y
where x.m = y.n;
外连接
select file1,file2,...,file3
from bi_name1
left join bi_name2
on bi_name1.x=bi_name2.x;
嵌套查询
select file1,file2
from bi_name1
where x in (
select x
from bi_name1
where 选择条件);
-- 子查询条件不依赖父查询,称为不相关子查询
-- 子查询条件依赖父查询,称为相关子查询
select file1,file2
from bi_name1
where x in 比较运算符(
select x
from bi_name1
where 选择条件);
注:运算符有>,<,<>,=,>=,<=
基于派生表的查询
select file1,file2,...,file3
from bi_name1,(select file from bi_name1 [where 选择条件]) as x
where bi_name1.file = x.file;