SQL语句基本语法及函数方法

常用查询语句本语句(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;            查看当前数据库的所有编码格式的集合

有什么问题欢迎下方留言交流

 

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值