SQL语句基本语法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40205116/article/details/88419308

之前整理的,比较零乱,但很实用(适合初学者)。

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可以不要

猜你喜欢

转载自blog.csdn.net/qq_40205116/article/details/88419308