赞
踩
常用查询语句本语句(SQL语句不区分大小写):
insert into 表名(字段名...) values(数据),(数据,添加多行数据)); 添加数据(超出范围为错)
添加一条数据和添加多条数据
INSERT INTO t_user(username, password, name, sex) VALUES("admin1", "admin", "张三1", "男");
- INSERT INTO t_user(username, password, name, sex) VALUES("admin1", "admin", "张三1", "男"),
- ("admin2", "admin", "张三2", "男");
update 表名 set 字段名=值; 修改全部数据
update 表名 set 字段名=值 where 条件; 条件修改(可以修改多处,多个字段,中间逗号隔开)
- UPDATE t_user set sex="女";
- UPDATE t_user set sex="女" WHERE id > 10;
delete from 表名 where 条件; 删除表里边的数据
delete FROM t_user WHERE id>10;
select * from 表名; 查看表中数据
- SELECT * FROM t_user;
- SELECT * FROM t_user WHERE id>10;
select 字段名1,字段名2 from 表名; 查看指定字段的内容
select 字段名1 别名,字段名2 别名 from 表名; 给列起别名,表也可以起别名(别名可以用双引号引起了,也可以不用,字段名和别名之间可以加as)
- select username, password from t_user;
- select username "用户名", password AS "密码" from t_user;
外链接
通过下面这两种方法就可以把不同的表连接到一起,变成一张大表
左连接 left join 或 left outer join,数据连接到左边那张表中
右连接 right join 或 right outer join,数据链接到右边那张表中
- #通过下面这两种方法就可以把不同的表连接到一起,变成一张大表
- #左连接 left join 或 left outer join,数据连接到左边那张表中
- select * from user left join job on user.id=job.user_id;
- select * from user left outer join job on user.id=job.user_id;
-
- #右连接 right join 或 right outer join,数据链接到右边那张表中
- SELECT * from user RIGHT JOIN job on `user`.id = job.user_id;
join 或 inner join内连接
- #join 或 inner join内连接
- select * from user join job on `user`.id = job.user_id;
-
- #相当于下面这条语句
- SELECT * from user, job where `user`.id = job.user_id;
交叉链接,cross join,没有where指定查询条件的子句的交叉联接将产生两表的笛卡尔积。
- #交叉链接,cross join,没有where指定查询条件的子句的交叉联接将产生两表的笛卡尔积。
- SELECT * from user CROSS join job;
常用函数:
distinct 排出重复的(后面只能有一个字段名) 语法:select distinct 字段名 from 表名;
- #distinct去重
- select DISTINCT age, name from user;
limit 分页查询
- #查询第几条数据,表示从索引为0开始,查询4条记录
- select * from user LIMIT 4;
-
- #查询id为3~7数据,从索引为2开始,查询5条数据
- SELECT * from user LIMIT 2,5;
count获取表数据行数 , select count(*) from 表名;
SELECT COUNT(*) from user;
group by 分组 按字段分组(在表名和where后面)
SELECT * from user GROUP BY age;
order by 排序查询 语法:select * from 表名 where 条件 order by 字段名 asc/desc, 字段名1 asc/desc;
asc表示升序(默认) desc表示降序 where可以不要
- #默认asc排序
- SELECT * from user ORDER BY age;
UPPER(string) 可以将字符转成大写 语法:select upper(字段名) from 表名;
lower(string) 将字符转成小写
- #将字符转为大写
- SELECT UPPER(job) from user;
- #将字符转为小写
- SELECT LOWER(job) from user;
like 模糊查询 语法:select * from 表名 where 字段名 like '%M%';
_:只能通配当前位置的一个字符
%:可以通配任意多个字符
%%:匹配所有的内容
SELECT * from `user` where name like '%张%';
not like 用法和like一样(作用相反),不包含的
SELECT * from `user` where name not LIKE '%张%';
in 范围查询 语法:select * from 表名 where 字段名 in(数据值1, 数据值2....);
SELECT * from `user` where age in(18, 20);
and 或 && 并且
or 或 || 或
not 或 ! 非(取反)
is null; 为空
is not null; 不为空
between and 范围查找 语法:select * from 表名 where 字段名 between 值1 and 值2;
regexp 正则表达式 语法:select * from 表名 where 字段名 regexp 'S$'; S$表示最后一个字母为S的
= > >= < <= <> != <=> 操作符
<>, != 不等于操作符,
<=> 和=作用一样,可以用于和null比较
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比较
运算符:
+ - * / 运算,一般用在计算年薪。
- #salary月工资*12,其他运算同理
- select name, salary*12 from user;
max() 计算最大值
min() 计算最小值
sum() 计算总和
avg() 计算平均值
- #查询年龄最大的
- SELECT MAX(age) from user;
- #查询年龄最小的
- SELECT MIN(age) FROM user;
- #查询年龄总和
- SELECT sum(age) from user;
- #查询平均年龄
- SELECT avg(age) FROM user;
md5('密码') 加密(一般用于程序加密码)
SELECT `md5`(age) from user;
mod(number1,number2) 求模(取余)运算
abs() 绝对值
ceil(x) 返回大于x的最小整数
floor(x) 返回小于x的最大整数
rand() 生成0-1之间的小数
truncate(x,y) 返回数字x截断y为小数的结果
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数据库)
常用索引:
1.主键索引(primary key)
一个表只能定义一个主键索引,最好每一个表都定义一个主键索引
定义主键索引的值不能为空或重复
2.唯一索引(unique)
唯一索引的值不能重复
每个表可以定义多个唯一索引
数据库和表的基本操作:
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; 在创建表时,用在字段中直接结束
show tables; 查看当前库里边有哪些表
drop table 表名; 删除表
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'; 字段值乱码后改 编码
select user(); 查看当前登录的用户名
show engines 查看MySQL中有哪些表类型
show character set; 查看MySQL支持的所有字符集
show create database 库名; 查看数据库的编码
show variables like 'character%'; 查看当前安装数据库的编码
show character set; 查看当前数据库的所有编码格式的集合
有什么问题欢迎下方留言交流
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。