mysql基础知识
2017-02-07 16:32:29 0 举报
AI智能生成
mysql基础知识
作者其他创作
大纲/内容
sql语句分类
DDL
create
创建数据库:create database dbname
创建表:create table tbname ( a int(4) not null)
drop
删除数据库:drop database dbname
删除表:drop table tbname
alter
修改字段类型: alter table tbname modify column_name column_definition
增加字段:alter table tbname add column column_name column_definition
删除字段:alter table tbname drop column column_name
修改字段名称:alter table tbanme change column_old_name column_new_name colum_definition
修改字段排列顺序
1、新增字段顺序:lter table tbname add column column_name column_definition after column_name
2、修改字段并变更顺序:alter table tbname modify column_name column_definition first
变更表名 :alter table tb_old_name rename tb_new_name
添加索引:alter table tbname add index `idx_a`(`a`);删除索引:alter table tb drop index `idx_a`
添加唯一建:alter table tbname add unique `uniq_a`(`a`);删除唯一建:alter table tb drop index `uniq_a`
添加主键:alter table tbname add primay key (`tmp`);删除主键:alter table tb drop primary key
DML
inster
插入记录:inster into tbname(feild1,feild2,...,feildn) values (values1,values2,...,valuesn)
update
更新记录:update tb set tb.a=1 [where 条件]
delete
删除记录:delete from tb [where 条件]
select
查询不重复记录:distinct
多条件查询: >、<、>=、<=、!= 连接使用and或or
排序:order by(desc 降序 asc 升序)
限制:limit 3:前三条,limit 1,3: 从第二条记录开始的三条)
聚合:group by(with rollup 指对聚合后的结果在汇总、 having 指对聚合后的结果进行条件过滤)
表连接
左连接:以左表列为准
右连接:以右表列为准
内连接:以两表相同列为准
子查询:where 条件内嵌套select,表连接很多时候可以优化子查询
联合
union all:直接将结果集合并
union:在union all的结果集进行去重
示例: select * from tb1 union select * from tb2
DCL
grant
授增删查改权限:grant select ,insert,update,delete on sakila.* to 'z1'@'localhost' identified by '123'
revoke
回收权限:revoke insert on sakila.* to 'z1'@'localhost'
数据类型
数值类型
整数型
tinyint:1字节 范围:-2^8至2^8-1
smallint:2字节 范围:-2^16至2^16-1
mediumint:3字节 范围:-2^24至2^24-1
int、integer:4字节 范围:-2^32至2^32-1 默认为int(11), int zreofill 位11位自动补0
bigint :8字节 范围:-2^64至2^64-1
浮点型
float:4字节
double:8字节
定点数型
decimal(M,D) 默认decimal(10,0) M+2字节
位类型
bit(M):1-8字节
注意:如int(10) 10是限定位数;浮点型(M,D) M限定总位数,D限定小数位,四舍五入;bit 查询select bin(id),hex(id) from tb bin() 2进制 hex() 十六进制
日期时间类型
date:4字节 范围:1000-01-01至9999-12-31
datetime:8字节 范围:1000-01-01 00:00:00至9999-12-31 23:59:59
timestamp:4字节 范围:1970010180001(共19位)至2038年的某时间 但是回显是"YYYY-MM-DD HH:MM:SS"
time:3字节 范围: -838:59:59至838:59:59
year:1字节 范围:1901至2155
注意:current_timestamp1、类型字段只有存在一列默认值;2、根据不同的系统时区进行转化;3、插入时间上限是写入为:'0000-00-00 00:00:00'
字符创类型
char(m): M字节 M:0~255 定长
vachar(M):M+1字节 M:0~65535 变长
tinytext:0~2^8 +2 字节
text:0~2^16 +2字节
mediumtext:text:0~2^16 +3字节
longtext:text:0~2^32 +4字节
ENUM类型
1、1~255成员存储1字节,255~65535成员需2字节;2、枚举忽略大小写;3、对于不存在的成员,填充第一个成员;4、枚举只能取集合中的单个值,不能取多值
set类型
等同枚举类型,但1、一次可取多成员;2、重复成员聚合;3、超出范围不需写;4、占用字节:1~8 1字节、9~16 2字节 17~24 3字节 25~32 4字节 33 ~64 8字节 5、最多64成员
运算符
算数运算符
+,-,*,(/、DIV),(%、MOD)
比较运算符
=,<,<=,>,>=
<>或!=
<=> 类似于= 但是这个可以进行比较NULL
between 格式:a between min and max
in
IS NULL \ IS NOT NULL
like: like %a% 、like a%,like %a
pegexg或rlike:正则表达式匹配
比较运算符
=,<,<=,>,>=
<>或!=
<=> 类似于= 但是这个可以进行比较NULL
between 格式:a between min and max
in
IS NULL \ IS NOT NULL
like: like %a% 、like a%,like %a
pegexg或rlike:正则表达式匹配
逻辑运算符
not 或! 逻辑非
and 或&& 逻辑与
or and || 逻辑或
xor 逻辑异或
位运算符
& 位与
| 位或
^位异或
~位取反
>> 位右移
<< 位左移
注意:位运算是将给定的操作数转化为二进制进行运算的
优先级
1、:= 赋值
2、 ||、or、xor
3、&&、and
4、NOT
5、between、case、when、then、else
6、=、<=>、>=、>、<=、<、<>、!=、is、like,regexp,in
7、|
8、&
9、<<、>>
10、-、+
11、*、/、DIV、%、MOD
12、^
13、-、~
14、!
ps:1~14由低至高
常用函数
字符串函数
concat(s1,s2,...,sn) 连接s1,s2,...,sn为一个字符串
insert(str,x,y,instr) 将字符串str从第x位置开始,y个字符长的子串替换为字符串instr
lower(str) 将字符串str中所有的字符串字符变为小写
upper(str)将字符串str中所有的字符串字符变为大写
left(str,x) 返回字符串str 最左边的x个字符
right(str,x) 返回字符串str 最右边的x个字符
lpad(str,n,pad) 用字符串pad对str最左边进行填充,直到长度为n个字符长度
rpad(str,n,pad) 用字符串pad对str最右边进行填充,直到长度为n个字符长度
ltrim(str) 去掉字符创str最左侧的空格
rtrim(str) 去掉字符创str最右侧的空格
repeat(str,x) 返回str重复x次的结果
replace(str,a,b) 用字符串b替换字符串str中所有出现的字符串a
strcmp(s1,s2) 比较字符串s1,s2
trim(str) 去掉字符串行头与行尾的空格
substing(str,x,y) 返回从字符串str x位置起y个字符长度的字符串
数值函数
abs(x) 返回x的绝对值
cell(x) 返回大于x的最小整数
floor(x) 返回小于x的最小整数
mod(x,y) 返回x/y的模
rand() 返回0~1内的随机数
truncate(x,y) 返回数字x截断为y位小数的结果
时间日期函数
curdate() 返回当前日期
curtime() 返回当前时间
now() 返回当前日期和时间
unix_timestamp(date) 返回日期date的unix时间戳
from_unixtime(x) 返回时间戳为x的时间
date_add(date,interavl expr type) 返回一个日期或时间加上一个时间间隔的时间值 expr是表达式并对应相应的type
expr type
'hh' hour
'mm' minute
'ss' second
'yy' year
'mm' month
'dd' day
'yy_mm' rear_mouth
'dd hh' day_hour
'dd hh:mm' day_minute
'dd hh:mm:ss' day_second
'hh:mm' hour_minute
'hh:ss' hour_second
'mm:ss' minute_second
示例:select date_add(now(),interval -31 day),date_add(now(),interval '1_2' year_month);
子主题
子主题
datediff(expr,expr2) 返回起始时间expr和结束时间expr2之间的天数 示例:select datediff('2000-07-03 01:01:01','2017-02-07');
流程函数
if
ifnull
case then
case then else
其他常用函数
datebase()
version()
user()
password(str)
md5()
net_aton(ip) 获取ip地址的数字代表
net_ntoa(num) 获取数字代表的IP地址

收藏

收藏
0 条评论
下一页