> CREATE TABLE user(
id INT,
name VARCHAR(255),
passwd VARCHAR(255),
birthday DATE
)CHARACTER SET utf8 COLLATE utf8_bin ENGINE innodb;
删除表
drop table 表名; 添加列
alter table 表名 add 列名 数据类型; 修改列名
alter table 表名 change column 原名 新名 数据类型; 修改列数据类型
alter table 表名 modify 列名 数据类型; 删除列
alter table 表名 drop 列名; 修改字符集
alter table 表名 character set 字符集; 修改表名
rename table 表名 to 新表名; 查看表结构
desc table_name; 查询表
select from 表名;
数据库的增删查改(CRUD) 插入insert 语句
insert into 表名(column1,column2....)
VALUES(值1,值2...),(值1,值2...); 更新update语句
update 表名 set [列名1 = 值1,列名2 = 值2...] [where 条件] 注:没有where条件默认全部设置 删除delete语句
delete from 表名 [where 条件];
注:没有where条件默认全部设置 查询select语句 基本语句
select [distinct] | {column1,column2...} from 表名;
注: | 表示或则,distinct 去重复 ,* 表示所有列,也可以指定 column1,column2... 使用as别名
select 列 as 别名 from 表名; 查询并运算
select | {column1,column2...},(运算式) from 表名;
条件-where 排序-order by
select from 表名 [where 条件] order by 列名 asc|desc;
默认升序asc/desc降序 合计/统计函数count/sum/avg/max/min 函数-count
select count(*)|count(列名) from 表名 [where 条件];
返回行的总数 函数-sum
select sum(列名1),sum(列名2)... from 表名 [where 条件];
返回满足where条件的行的和 函数-avg
select avg(列名1),avg(列名2)... from 表名 [where 条件];
返回满足where条件的列平均值 函数-max/min
select max(列名1), max(列名2)... from 表名 [where 条件];
返回满足条件的最大/最小值 分组-group by
select 列名1,列名2... from 表名 group by 列名 having 条件 注:不可以使用where
group by 对列进行分组
having 对分组后的结果进行过滤 字符串函数
字符串函数-charset
select charset(列名) from 表名;
返回字符串集 字符串函数-concat
select concat(列名1,字符串,列名2...) from 表名;
连接字符串,将多个列和字符拼接成一列 字符串函数-instr
select instr(列名/string ,substring) from 表名;
返回substring在列名/string中出现的位置,没有则返回0 字符串函数- ucase
select ucase(列名) from 表名;
转成大写 字符串函数-lcase
select lcase(列名) from 表名;
转成小写 字符串函数 left/right
select left(string , length) from 表名
从string的左/右中取length个长度的字符显示 字符串函数- length
select length(列名) from 表名;
返回字符串长度 字符串函数-replace
select replace(列名,search_str,replace_str) from 表名;
在列名中用replace_str替换search_str 字符串函数-strcmp
select strcmp(列名1/string1,列名2/string2) from 表名;
比较两个字付串的大小,大于1,小于-1,等于0 字符串函数-substring
select substring(str,position,length) from 表名
从str的position[1开始计算]开始,取length个字符 字符串函数-ltrim/rtrim/trim
select ltrim/rtrim/trim(列名) from 表名;
去除左/右/左右两端的空格 数学函数
数学函数bs
select abs(列名) from 表名;
返回列数值的绝对值 数学函数-bin
select bin(列名) from 表名;
返回列数值的十进制; 数学函数-ceiling\floor
select seiling\floor(列名) from 表名;
返回向上\向下取整; 数学函数-conv
select conv(列名,原进制,现进制) from 表名;
返回列的现进制 数学函数-format
select format(列名,number) from 表名;
返回列数值四舍五入后的number位小数位数 数学函数-least
select least(列名1,列名2...) from 表名;
返回列中每行的最小值; 数学函数-mod
select mod(列名,number) from 表名;
返回列名数值对number求余后的值; 数学函数-rand
select rand([seed]) from dual;
返回随机数/有seed(数值)则返回固定随机数 日期函数
日期函数-current_date
select current_data() from dual;
返回当前的日期 日期函数-current_time
select current_time() from dual;
返回当前的时间 日期函数-current_timestamp
select current_timestamp() from dual;
返回当前的时间戳(年月日 时分秒) 日期函数-now
select now() from dual;
返回当前时间(年月日 时分秒) 函数-date
select date(列名(时间类型)) from 表名;
放回列的日期 日期函数-date_add
select from 表名 where date_add(列名,interval 数值minute) >= now();
返回列时间加上数值后大于当前时间的行 日期函数-date_sub
select from 表名 where date_sub(now(),interval 数值 year/month/day) <= 列名; 日期函数-datediff/timediff
select datediff(列名1,列名2) from 表名;
返回两列差(天数差)/(时间差) 日期函数-year/month/day
select year/month/day(列名) from 表名;
返回列名时间的(年/月/日) 日期函数-unix_timestamp
select unix_timestamp() from dual;
返回从1970-01-01 00:00:00 到现在的秒数 日期函数-from_unixtime
select from_unixtime(时间戳,格式) from dual;
返回格式的时间戳 加密/系统函数 系统函数-user
select user() from dual;
返回用户@IP地址 系统函数-database
select datebase();
返回当前使用的数据库名称 加密函数-md5
select md5(str) from dual;
为字符串算出一个MD5 32位的字符串,(用户密码)加密 加密函数-password
select password(str) from dual;
为str密码加密(数据库的密码就是这种加密) 流程控制函数
流程控制函数-if
select if( 判断,结果1,结果2) from 表名;
判断为真返回结果1,为假返回结果2 流程控制函数-ifnull
select ifnull(列名,结果) from 表名
如果列值为空返回结果,不为空返回列的值 流程控制函数-case
> select ename,job from emp;
+--------+-----------+
| ename | job |
+--------+-----------+
| SMITH | CLERK |
| ALLEN | SALESMAN |
| WARD | SALESMAN |
| JONES | MANAGER |
| MARTIN | SALESMAN |
| BLAKE | MANAGER |
| CLARK | MANAGER |
| SCOTT | ANALYST |
| KING | PRESIDENT |
| TURNER | SALESMAN |
| JAMES | CLERK |
| FORD | ANALYST |
| MILLER | CLERK |
+--------+-----------+
13 rows in set (0.07 sec)
mysql> select ename,(select case
-> when job = 'CLERK' then '职员'
-> when job = 'MANAGE' then '经理'
-> when job = 'SALESMAN' then '销售人员'
-> else job end) as new_job from emp;
+--------+-----------+
| ename | new_job |
+--------+-----------+
| SMITH | 职员 |
| ALLEN | 销售人员 |
| WARD | 销售人员 |
| JONES | MANAGER |
| MARTIN | 销售人员 |
| BLAKE | MANAGER |
| CLARK | MANAGER |
| SCOTT | ANALYST |
| KING | PRESIDENT |
| TURNER | 销售人员 |
| JAMES | 职员 |
| FORD | ANALYST |
| MILLER | 职员 |
+--------+-----------+
13 rows in set (0.07 sec)
索引 增加索引
alter table 表名 add index [索引名] (列名);
alter table 表名 add unique [索引名] (列名);
alter table 表名 add primary key (列名);
create [unique] index 索引名 on 表名(列名); 删除索引
alter table 表名 drop primary key;
alter table 表名 drop index 索引名;
drop index 索引名 on 表名; 查询索引
SHOW INDEX FROM 表名
SHOW INDEXES FROM 表名
SHOW KEYS FROM 表名
DESC 表名
左右连接
select * from 表1 left join 表2 on 条件
select from 表1 right join 表2 on 条件
左连接表1全部显示
右连接表2全部显示