之前整理的,比较零乱,但很实用(适合初学者)。
show databases; 查看数据库中有哪些数据库
create database 库名; 创建数据库
drop database 库名; 删除数据库
use 库名; 进入这个库
exit 退出数据库
\s; 当前状态
select version(); 查看MySQL的版本
show global variables like 'port'; 查看MySQL的端口号
? create table; 创建表的帮助
? contents; 查帮助
create table 表名(字段名 类型, 字段名 类型。。。); 创建表(类型有: int char(字符长度) )
if/if not exists 判断表和库是否存在
create table if not exists 表名(字段名 类型, 字段名 类型。。。); 如果此表不存在则创建
类型后面加 unsigned 表示无符号,不能为负,范围0-整数的1倍
加zerofill前导0,数据位数不够长度的话,前面放0(自动应用unsigned)
auto_increment设置自动增长,增长速度为1(从最大值开始增加,只能是整数,一般用于id,字段值不允许重复,后面要加索引,不然创建不成功)
not null 非空(创建表时,可以加在类型后面,表示字段值不能为空)
default缺省值(如果字段值为空,显示的值)
\c; 在创建表时,用在字段中直接结束
drop table 表名; 删除表
delete from 表名 where 条件; 删除表里边的一行
show tables; 查看当前库里边有哪些表
alter table 表名 add 字段名 类型; 添加表字段
alter table 表名 add 字段名 类型 after 字段名; 在指定字段后添加表字段
alter table 表名 add 字段名 类型 first; 添加表字段在第一行
alter table 表名 modify 字段名 更改后的类型; 更改字段类型
alter table 表名 change 字段名 更改后的字段名 类型 更改字段名
alter table 表名 rename as 新表名 更改表名
alter table 表名 drop 字段名 删除字段
rename table 表名 to 新表名 更改表名
desc 表名; 查看表结构
set 乱码字段名'gbk'; 字段值乱码后改 编码
update 表名 set 字段名=值; 修改全部
update 表名 set 字段名=值 where 条件; 条件修改(可以修改多处,多个字段,中间逗号隔开)
insert into 表名(字段名...) values(数据),(数据,添加多行数据)); 添加数据(超出范围为错)
select user(); 查看当前登录的用户名
select * from 表名; 查看表中数据
select 字段名1,字段名2 from 表名; 查看指定字段的内容
select 字段名1 别名,字段名2 别名 from 表名; 给列起别名,表也可以起别名(别名可以用双引号引起了,也可以不用,字段名和别名之间可以加as)
distinct 排出重复的(后面只能有一个字段名) 语法:select distinct 字段名 from 表名;
索引:
1.主键索引(primary key)
一个表只能定义一个主键索引,最好每一个表都定义一个主键索引
定义主键索引的值不能为空或重复
2.唯一索引(unique)
唯一索引的值不能重复
每个表可以定义多个唯一索引
show engines 查看MySQL中有哪些表类型
show character set; 查看MySQL支持的所有字符集
+ - * / 运算,一般用在计算年薪。
where 条件
having 条件
having和where区别
having是在分组后使用
where是的分组前使用
having后面可以使用分组函数(统计函数)
where后面不可以使用分组函数。
and 或 && 并且
or 或 || 或
not 或 ! 非(取反)
is null; 为空
is not null; 不为空
between and 范围查找 语法:select * from 表名 where 字段名 between 值1 and 值2;
in 范围查询 语法:select * from 表名 where 字段名 in(数据值1, 数据值2....);
like 模糊查询 语法:select * from 表名 where 字段名 like '%M%';
_:只能通配当前位置的一个字符
%:可以通配任意多个字符
%%:匹配所有的内容
like可以使用在任何类型的字段上
not like 用法和like一样(作用相反),不包含的
regexp 正则表达式 语法:select * from 表名 where 字段名 regexp 'S$'; S$表示最后一个字母为S的
= > >= < <= <> != <=> 操作符
<>, != 不等于操作符,
<=> 和=作用一样,可以用于和null比较
多表查询(链接查询)
可以把条件where关键字换成left join 字段 on 字段 (表示相等的两个字段)
子查询(嵌套查询)
show create database 库名; 查看数据库的编码
show variables like 'character%'; 查看当前安装数据库的编码
show character set; 查看当前数据库的所有编码格式的集合
limit 查询个数(limit 3), 可以指定从第几个开始(limit 0, 1)
select count(*) from 表名; 表有几行内容
group by 字段名 按字段分组(在表名和where后面)
UPPER(string) 可以将字符转成大写 语法:select upper(字段名) from 表名;
lower(string) 将字符转成小写
INITCAP(string) 将单词的第一个字母大写
create table 新表 select * from 旧表; 复制表结构及数据
creata table 新表 select * from 旧表 where 1 = 2; 只复制表结构到新表
create table 新表 like 旧表; 只复制表结构到新表
concat(string1,String2) 拼接字符串 语法:select concar(字段1,字段2)/(字段1,'字符串') from 表名;
substr(string,start,length) 截取字符串。
start开始截取位置,length截取长度
insert(str, x, y, insert); 将字符串str的x位置开始,y个字符替换为字符串insert
LENGTH(string) 计算字符的长度。
replace(string,'要替换的字符','替换的字符') 对指定内容进行替换
round(number,[index])按指定位置对数字进行四舍五入运算
Index为正:表示小数点右边的位置
Index为负:表示小数点左边的位置
left(str, x) right(str, x) 分别返回最左/右边的x个字符, 如果第二个参数为null则返回为null
lpad(str, n, pad), rpad(str, n, pad); 用字符串pad对str最左边和最右边进行填充,直到长度为n个字符长度.
trim(str) ltrim(str) rtrim(str) 去掉字符串两边/左边/右边字符的空格
strcmp(s1, s2) 如果s1比s2小,返回-1,大,返回1,等于返回0 字符串,ASCII比较
mod(number1,number2) 求模(取余)运算
abs() 绝对值
ceil(x) 返回大于x的最小整数
floor(x) 返回小于x的最大整数
rand() 生成0-1之间的小数
truncate(x,y) 返回数字x截断y为小数的结果
max() 计算最大值
min() 计算最小值
sum() 计算总和
avg() 计算平均值
count() 计算有都少人
curdate(); 返回当前日期
curtime(); 返回当前时间
now(); 返回当前日期和时间
unix_timestamp(date) 把当前时间转为秒
from_unixtime(秒) 把秒转为日期和时间
week() 周
year() 年
hour() 小时
minute() 分钟
if(条件, true, false); 条件为真,返回true,为假返回false 语法:select if(条件,true,false) from 表名;
ifnull(字段名, 值1) 字段值为null,返回值1
database(); 查看当前数据库名
version(); 查看当前数据库版本
user(); 查看登录用户
password('密码') 加密(一般用于MySQL数据库)
md5('密码') 加密(一般用于程序加密码)
order by 排序查询 语法:select * from 表名 where 条件 order by 字段名 asc/desc, 字段名1 asc/desc;
asc表示升序(默认) desc表示降序 where可以不要