mysql基础知识
2017-02-07 16:32:29 0 举报
AI智能生成
mysql基础知识
作者其他创作
大纲/内容
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
update
更新记录:update tb set tb.a=1 [where 条件]
delete
删除记录:delete from tb [where 条件]
select
查询不重复记录:distinct
多条件查询: >、<、>=、<=、!= 连接使用and或or
排序:order by(desc 降序 asc 升序)
聚合:group by(with rollup 指对聚合后的结果在汇总、 having 指对聚合后的结果进行条件过滤)
表连接
左连接:以左表列为准
右连接:以右表列为准
内连接:以两表相同列为准
子查询:where 条件内嵌套select,表连接很多时候可以优化子查询
联合
union all:直接将结果集合并
union:在union all的结果集进行去重
示例: select * from tb1 union select * from tb2
DCL
grant
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
bigint :8字节 范围:-2^64至2^64-1
浮点型
float:4字节
double:8字节
定点数型
位类型
bit(M):1-8字节
日期时间类型
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成员
运算符
算数运算符
比较运算符
=,<,<=,>,>=
<>或!=
<=> 类似于= 但是这个可以进行比较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由低至高
常用函数
字符串函数
lower(str) 将字符串str中所有的字符串字符变为小写
upper(str)将字符串str中所有的字符串字符变为大写
ltrim(str) 去掉字符创str最左侧的空格
rtrim(str) 去掉字符创str最右侧的空格
trim(str) 去掉字符串行头与行尾的空格
数值函数
abs(x) 返回x的绝对值
cell(x) 返回大于x的最小整数
floor(x) 返回小于x的最小整数
rand() 返回0~1内的随机数
时间日期函数
curdate() 返回当前日期
curtime() 返回当前时间
now() 返回当前日期和时间
unix_timestamp(date) 返回日期date的unix时间戳
from_unixtime(x) 返回时间戳为x的时间
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
子主题
流程函数
if
ifnull
case then
case then else
其他常用函数
datebase()
version()
user()
password(str)
md5()
net_aton(ip) 获取ip地址的数字代表
net_ntoa(num) 获取数字代表的IP地址
收藏
收藏
0 条评论
下一页