Mysql的sql语句操作

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

一、数据库的相关操作

1. 创建数据库
1)create database db_name
2. 删除数据库
1)drop database db_name
3. 修改数据库相关信息
1)修改指定数据库的编码方式				alter database db_name character set charset  
4. 查询数据库相关信息
1)得到当前打开的数据库					select database()		                            

2)查看指定数据库的详细信息				show create database db_name                         

3)查看当前服务器下的全部数据库 		    show databases;   
5. 其他
1)打开指定数据库  						use db_name	

二、数据表相关操作

1. 创建表
1)创建表格式

	create table table_name(
		字段名 字段类型 [完整性约束条件]
		字段名 字段类型 [完整性约束条件]
		...
	)engine=存储引擎 charset=编码方式;	

2)完整性约束条件

	(1)not null 			非空约束

	(2)default            默认值

	(3)primary key        主键

	(4)auto_increment     自动增长,只能用于数值列

	(5)unique_key         唯一性   

	(6)foreign key        外键约束

2. 删除表
1)drop table talbe_name
3. 修改表结构
1)添加			

	(1)添加字段  							alter table tb_name add 字段名 字段类型 [完整性约束条件]

	(2)添加默认值         				    alter talbe tb_name alter 字段名称 set default 默认值

	(3)添加主键  							alter talbe tb_name add primary key(字段名)

	(4)添加唯一  							alter table tb_name add unique| [index_name](字段名)

2)删除

	(1)删除字段           				    alter table tb_name drop 字段名

	(2)删除默认值         				    alter table tb_name alter 字段名 drop default

	(3)删除主键                            alter table tb_name drop primary key

	(4)删除唯一                            alter table drop index index_name

3)修改

	(1)修改字段类型、字段属性    			alter table tb_name modify 字段名 字段类型[字段属性]

	(2)修改字段名、字段类型、字段属性        alter table tb_name change 原字段名称 新字段名称 字段类型 字段属性

	(3)修改数据库表名称                     alter table tb_name rename to new_talbe_name / rename table tb_name to new_table_name

	(4)修改auto_increment的值              alter table tb_name auto_increment=值 

4)查看

	(1)查看当前数据库下已有数据表            show tables

	(2)查看表详细信息                       show create table tb_name    

	(3)查看表结构                           desc tb_name / decsribe tb_name / show columns from tb_name  

三、数据操作

1. 新增
1)指定字段插入                               insert into tb_name(字段名1,字段名2, ...) values(值1,值2, ...) 

2)不指定字段名称插入(按创建表的字段顺序)      insert into tb_name (值1,值2,, ...)

3)insert ... set 形式                        insert tb_name set 字段名=值, ...

4)insert ... select 形式                     insert tb_name1(字段名1,字段名2, ...) select 字段名1,字段名2,... from tb_name2
2. 删除
1)删除所有记录                               delete from tb_name 

2)删除指定记录                               delete from tb_name [where 条件句]

3)彻底情况数据库表(重置auto_increment的值)   truncate tb_name

3. 修改
1)修改所有记录                               update tb_name set 字段名=值

2)修改指定记录的数据                         update tb_name set 字段名=值 [where条件]
4. 查询
1)简单查询

	(1)查询所有记录                         select * from tb_name

	(2)查询指定字段记录                     select 字段1,字段2,... from tb_name

	(3)库名.表名                            select * from db_name.tb_name

	(4)给字段起别名                         select 字段名 [as] 字段别名 from tb_name

	(5)给表起别名                           select * from tb_name [as] 表别名

2)where条件

	(1)比较运算符                           =, >, <, <=, >=,!=, <>

	(2)是否为空                             is null / is not null

	(3)指定集合                             in () / not in()	

	(4)逻辑运算符                           and / or

	(5)匹配字符                             like / not like (%任意长度  _任意一个)

3)group by	(一般配合聚合函数使用)

	(1)count()                              统计记录总数

	(2)sum()                                求和

	(3)max()                                最大值

	(4)min()                                最小值

	(5)avg()                                求平均值

4) order by

	(1)asc                                  升序排列,默认

	(2)desc                                 降序排列	

5)多表查询

	(1)笛卡尔形式

	(2)内连接形式                           select 字段1, ... from tb_name1 inner join tb_name2 on 条件 (两个表=也属于内连接)

	(3)左外连接的形式                        select 字段1,	... from tb_name1 left [outer] join tb_name2 on 条件

	(4)右外连接的形式                        select 字段1,	... from tb_name1 right [outer] join tb_name2 on 条件   

6) 子查询(内层语句查询的结果作为外层语句查询的条件)

	(1)常见子查询                            select 字段名称 from tb_name where col_name=(select col_name from tb_name)	     

7) 联合查询(将多次查询(多条select语句), 在记录上进行拼接(字段不会增加),联合查询只要求字段一样, 跟数据类型无关)	

	(1)去掉重复的                            select * from tb_name1 union select * from tb_name2

	(2)保留所有的                            select * from tb_name1 union all select * from tb_name2

四、其他sql操作

1. 视图操作
1)查看创建视图sql                           show create view view_name

2)创建视图                                  create view view_name(字段) as  [select语句]

3)修改视图                                  create or replace /alter view view_name(字段) as [select语句] 

4)更新视图(通过视图更新数据其实就是在更新基本表中的数据,但是一般视图都不允许更新,而且更新满足的要求有很多)

	(1)使用update 语句更新视图             update view_name set 字段=值;

	(2)使用insert 语句更新视图             insert into view_name(字段) values(值)

	(3)使用delete 语句更新视图             delete from view_name [where条件]

5)删除视图                                  drop view view_name	
2. 存储过程(一组为了完成特定功能的SQL 语句集)
1)创建

	create procedure pro_name
	@sname varchar(100)
	as
	begin
		select * from where sanme = @sname
	end
	go

2) 调用

	exec pro_name '参数'	

五、Mysql常用函数

1. 日期和时间函数
1)curdate()                                 返回当前日期

2)curtime()                                 返回当前时间

3)now()                                     返回当前的日期和时间

4)unix_timestamp(date)                      返回日期date的unix时间戳

5)from_unixtime                             返回unix时间戳的日期值

6)week/year/hour/minute/monthname(time)     返回一年中的第几周/年份/小时值/分钟值/月份值

7)date_format(date, fmt)                    返回按fmt字符串格式化日期date的值

8)date_add(date, interval expr type)        返回一个日期或时间值加上一个时间间隔的时间值     

9)datediff(expr, expr2)                     expr-expr2的值

10)to_days(date) - to_days(date)            一般用来获取某个时间段(比如大于7天)
2. 数学函数
1)ceil()                                    进一取整

2)floor()                                   舍掉小数点部分

3)round()               					 四舍五入

4)truncate()                                截取小数点后几位

5)mod()                                     取余数

6)abs()                                     取绝对值

7)power() 									 幂运算

8)pi()                                      圆周率
3. 字符串函数
1)lower()                                   将字符串参数值转换为全小写字母后返回

2) upper()                                   将字符串参数值转换为全大写字母后返回

3) concat()                                  将多个字符串参数首尾相连后返回

4) concat_ws(separator,str1,str2,...)        将多个字符串参数以给定的分隔符separator首尾相连后返回

5)replace(str, from_str, to_str)            在源字符串str中查找所有的子串form_str(大小写敏感),找到后使用替代字符串

6) repeat(str, count)                        将字符串str重复count次后返回

7) format(X, D, [locale])                    以格式‘#,###,###.##’格式化数字X, D指定小数位数,locale指定国家语言(默认的locale为en_US)
4. 流程控制函数
1)if(v,t,f)                                 如果v为真返回t,否则返回f, 示例: select if(1!=1,'1','2') FROM DUAL,结果为2

2)ifnull(v1,v2) 							 如果v1不为null返回v1,否则返回v2, select ifnull(NULL,'1') FROM DUAL, 结果为1

3)case when v then v1 end                   判断如果v为真返回v1, 示例:select case when 1!=1 then 'true' when 2=2 then 'test' else 'false' end from dual
5. 其他函数
1)database()                                返回当前数据库名称

2) version()                                 返回当前数据库版本

3) md5(s)                                    返回md5加密的值

4)case(x as type)                           将x变成type类型

5) convert(x, type)                          将x变成type类型(整数:SIGNED,浮点数:DECIMAL,日期时间型:DATETIME)

6) user()                                    系统登录的用户

六、Mysql数据类型

1. 整数类型
1)tinint(m)                                 1个字节  范围(-128~127)

2) smallint(m)                               2个字节  范围(-32768~32767)

3)mediumint(m)                              3个字节  范围(-8388608~8388607)

4)int(m)                                    4个字节  范围(-2147483648~2147483647),m显示几位数

5)bigint(m)                                 8个字节  范围(+-9.22*10的18次方)
2. 浮点型
1)float(m,d)	                             单精度浮点型    8位精度(4字节)     m总位数,d小数位

2) double(m,d)                               双精度浮点型    16位精度(8字节)    m总个数,d小数位
3. 定点数(浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值)
1)decimal(m,d)                              参数m<65 是总个数,d<30且 d<m 是小数位
4. 字符串
1)char(n)                                   固定长度,最多255个字符

2)varchar(n)                                固定长度(可变?),最多65535个字符

3) tinytext                                  可变长度,最多255个字符

4) text                                      可变长度,最多65535个字符

5) mediumtext                                可变长度,最多2的24次方-1个字符

6) longtext                                  可变长度,最多2的32次方-1个字符

5. 二进制数据(_Blob)
1)_BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写

2)_BLOB存储的数据只能整体读出

3)_TEXT可以指定字符集,_BLO不用指定字符集
6. 日期时间类型
1)date                                       3字节,日期 '2008-12-2'

2)time                                       3字节,时间 '12:25:36'

3) datetime                                   8字节,日期时间 '2008-12-2 22:06:44'

4) timestamp                                  4字节,时间戳
7. 数据类型的属性
1)null 									  数据列可包含NULL值

2) not null                                   数据列不允许包含NULL值

3) default                                    默认值

4) primary key                                主键

5) auto_increment                             自动递增,适用于整数类型

6) unsigned                                   无符号

7) character set name                         指定一个字符集

七、select语句的执行顺序

1. 书写顺序
SELECT DISTINCT
    < select_list >
FROM
    < left_table > < join_type >
JOIN < right_table > ON < join_condition >
WHERE
    < where_condition >
GROUP BY
    < group_by_list >
HAVING
    < having_condition >
ORDER BY
    < order_by_condition >
LIMIT < limit_number >
2. 执行顺序
1)from 				对FROM左边的表和右边的表计算笛卡尔积,产生虚表VT1

2)on                   对虚表VT1进行ON过滤,只有那些符合<join-condition>的行才会被记录在虚表VT2中

3)join                 如果指定了OUTER JOIN(比如left join、 rightjoin),那么保留表中未匹配的行就会作为外部行添加到虚拟表VT2中,产生虚拟表VT3	

4)where                对虚拟表VT3进行WHERE条件过滤。只有符合<where-condition>的记录才会被插入到虚拟表VT4中

5)group by             根据group by子句中的列,对VT4中的记录进行分组操作,产生VT5

6)having               对虚拟表VT5应用having过滤,只有符合<having-condition>的记录才会被 插入到虚拟表VT6中

7)select               执行select操作,选择指定的列,插入到虚拟表VT7中

8)distinct             对VT7中的记录进行去重。产生虚拟表VT8

9)order by             将虚拟表VT8中的记录按照<order_by_list>进行排序操作,产生虚拟表VT9

10)limit               取出指定行的记录,产生虚拟表VT10, 并将结果返回

参考网址

MySQL常用日期时间函数

MySQL常用字符串函数

MYSQL中数据类型介绍

MySQL数据库学习笔记(三)----基本的SQL语句

MySQL用户管理及SQL语句详解

MySQL里面的子查询

步步深入:MySQL架构总览->查询执行流程->SQL解析顺序

注:文章是经过参考其他的文章然后自己整理出来的,有可能是小部分参考,也有可能是大部分参考,但绝对不是直接转载,觉得侵权了我会删,我只是把这个用于自己的笔记,顺便整理下知识的同时,能帮到一部分人。
ps : 有错误的还望各位大佬指正,小弟不胜感激

猜你喜欢

转载自blog.csdn.net/Stream_who/article/details/86220901