SQL语法记录(阿⾥云)
1.对数据库的操作
show databases; #可以看到现实数据库这⾥的databases是带s的
create database 数据库名;
drop database 数据库名;
2.数据类型
CHAR(size)保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。
VARCHAR(size)保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最⼤长度。最多 255 个字符。注释:如果值的长度⼤于 255,则被转换为 TEXT 类型。
TINYTEXT存放最⼤长度为 255 个字符的字符串。
TEXT存放最⼤长度为 65,535 个字符的字符串。
BLOB⽤于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。MEDIUMTEXT存放最⼤长度为 16,777,215 个字符的字符串。
MEDIUMBLOB⽤于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。LONGTEXT存放最⼤长度为 4,294,967,295 个字符的字符串。
LONGBLOB⽤于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。
ENUM(x,y,z,etc.)允许你输⼊可能值的列表。可以在 ENUM 列表中列出最⼤ 65535 个值。如果列表中不存在插⼊的值,则插⼊空值。注释:这些值是按照你输⼊的顺序存储的。
可以按照此格式输⼊可能的值:ENUM('X','Y','Z')
SET与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储⼀个以上的值。
字符类⾥⾯最常⽤的数据类型是VARCHAR(),TEXT,LONGTEXT
varchar好⽤在于这是⼀个可变长度的,char⽤来存放的是布尔类型的0或1
Text的长度⼏万也是够⽤的,存⼏⼗万字的⼩说⽤LONGTEXT
TINYINT(size)-128 到 127 常规。0 到 255 ⽆符号*。在括号中规定最⼤位数。
SMALLINT(size)-32768 到 32767 常规。0 到 65535 ⽆符号*。在括号中规定最⼤位数。
MEDIUMINT(size)-8388608 到 8388607 普通。0 to 16777215 ⽆符号*。在括号中规定最⼤位数。
INT(size)-2147483648 到 2147483647 常规。0 到 4294967295 ⽆符号*。在括号中规定最⼤位数。
BIGINT(size)-9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 ⽆符号*。在括号中规定最⼤位数。
FLOAT(size,d)带有浮动⼩数点的⼩数字。在括号中规定最⼤位数。在 d 参数中规定⼩数点右侧的最⼤位数。
DOUBLE(size,d)带有浮动⼩数点的⼤数字。在括号中规定最⼤位数。在 d 参数中规定⼩数点右侧的最⼤位数。
数字类型⾥⾯,最常⽤的这么⼏个,Tinyint表⽰布尔的0和1,int是常⽤的不是很⼤的数字,Bigint存放id号,万⼀过长呢,浮点型⼀般⽤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'
TIMESTAMP()*时间戳。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。
关于时间⾥⾯常⽤的,DATE是年⽉⽇,DATETIME是年⽉⽇时分秒,第三个时间戳可妙极了。
3.创建和删除表
CREATE TABLE tablename( #创建表的时候命令不太难
id bigint(20), #⾸先是表名,然后⾥⾯的数据名,数据类型
createTime datatime
);
drop table table_name; #删除表名字就很简单
use 数据库名 #最开始的时候选择⼀个数据库使⽤
show tables #选完数据库之后看⼀下这个数据库下⾯的表名
describe 表名 #看⼀下这个表下⾯有哪些字段以及这些字段的数据结构
4.在某⼀个表⾥⾯创建和删除列
alter table account add c1 int(11) not null default 1; #在某个表⾥⾯添加⼀个新的列
alter table account drop c1; #在某个表⾥⾯删除列
这个对列的操作和对数据表的操作有⼀点区别,对于表,不存在属于的问题,直接说创建删除表就可以了,但操作某⼀个数据库的时候,存在多个表,还要说明表是哪⼀个table才能去操作它。
5.更改某个表⾥⾯的某⼀个列的信息
alter table tablename change ⽼的列名 新的列名 数据类型
#后三项就决定了这⼀次怎么改,只改列名,只改数据类型或者两个都改
#以及前⼏个都是alter table tablename,指定某⼀个表的这⼏个都是同⼀个操作
6.查看或者插⼊表数据
select * from 数据表的名字 #*查看所有列
select 列名,列名,列名 from 数据表的名字
插⼊
insert into 表名字 value1,value2,value3 #如果不指定哪⼀列,那就是插⼊⼀条新数据,必须表⾥有⼏列就查⼏个数
insert into 表名字(列名1,列名2) value1,value2 #制定了那⼀列,就只插那⼀个呗
7.满⾜某些条件的查询
select * from table_name where col_name 运算符 't';
常⽤的运算符 = != > < >= <=
多个查询条件的组合
select * from table_name where col1 = '1' and (col2 = '2' or col3 = '3');
8.null值的判断
对于null字段的查询不能⽤ = 或者 != 字段来判断,要⽤is null或者is not null字段判断
selecr * from table_name where id is null;
9.去除重复的值
select distinct col1,col2 from table_name #distinct可以查看⼏列组合起来的不同值
select distinct col_name from table_name #查看某⼀列的不同的值
10.使⽤order by对查询结果进⾏排序
select distinct col1,col2 from table_name order by col1 asc,col2 desc
前⾯的查询⼀段该怎么写怎么写,select ....from .... 这些什么东西全都写完了之后,在后⾯加上order by 就⾏了
order by的使⽤⽅法是在后⾯跟上列名,asc表⽰升序,desc降序,不写默认asc
多列排序的办法,⾸先按照第⼀列进⾏排序,后⾯的在第⼀列的基础上,针对第⼀列⾥⾯的重复字段再次重排,⼤的顺序不能改变,有重复字段就把重复的按照第⼆列再排⼀下
11.limit截取部分查询结果(操纵起⽌)
select * from table order by ... limit 0,2 #从1开始⼀直到2
limit 2 #默认不写就没有第⼀个限制,就要前两个
12.insert命令和select命令的结合
insert into table1 select * from table2 #select那句话该怎么写怎么写,只要看清⼀共⼏列就⾏了
insert into table1(col1,col2) select col3,col4 from table2 #从第⼀个表或者第⼆个表⾥⾯抽某⼏列插⼊
这个命令平时⽤的最多的就是数据迁移,把⼀个表⾥⾯的数据迁移到另⼀个表⾥⾯去
13.update语句
update 表名 set 列名 = 新值 #这就直接把这⼀列全都变成了被修改的值
update 表名 set 列名 = 新值 ,列名=新值 where .... #也可以⽤where来选中某些⾏,或者⼀次改很多列
update是⼀个⼀⾏为单位的,怎么说,前⾯的change只是在列名列的数据类型上粗粗⼀改,update是真的可以修改⾥⾯存储的值,只是好像只能改成某⼀个值
14.筛选操作中where语句和in操作符的使⽤
sql语句查询结果取反select * from 表名 where 列名 in () #搜索这⼀列⾥⾯值等于后⾯括号⾥其中之⼀的
select * from 表名 where 列名 in (select 列名 from 表名) #把括号⾥⾯提取的值变成了从其他表⾥提取出来的值15.where语句中between操作符的使⽤
select * from 表名 where 列名 between 值1 and 值2 #between表⽰的是⼤于等于左边,⼩于等于右边
#between是包含了等于号的,左右边界都包含select * from 表名 where 列名 not between 值1 and 值2 #⼩于左边或者⼤于右边,上⾯取反区间
16.where语句中like操作符的使⽤,like⽤于字符串的模糊匹配
select * from 表名 where 列名 [not] like pattern
pattern:匹配模式,⽐如'abc',匹配这个字符串
'%abc',以这个字符串结尾
'abc%',以这个字符串开头
'%abc%',中间带了这么个字符串
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论