SQL操作库操作表,SQL常用所有类型函数,SQL常用所有数据类型,sql约束,所有sql语句

1.数据库

1.创建数据库

CREATE DATABASE  `库名`;

2.显示所有数据库

SHOW DATABASE;

3.选择数据库

USE  `库名`;

4.删库

DROP DATABASE [IF EXISTS] `库名`;

5.退出

QUIT;

2.函数

1.聚合函数

功能 函数
计算总和 SUM()
平均数 AVG()
最大值 MAX()
最小值 MIN()
计数 COUNT()

2.字符串类函数

功能 函数
连接字符串 CONCAT(s1,s2,s3,.....)
将字符串s从x位置开始y个字符替换成form字符 INSERT(s,x,y,form)
将字符串全部变成小写 LOWER(s)
将字符串全部变成大写 UPPER(s)
返回字符串x位子开始y个字符与MID基本一样 SUBSTRING(s,x,y)
返回字符串x位置开始y个字符 MID(s,x,y)
去除字符串左侧的空格 LTRIM(s)
去除字符串右侧的空格 RTRIM(s)
去除字符串左右两侧的空格 TRIM(s)
用字符串pad来对s左侧进行填充,直至长度达到len LPAD(s,len,pad)
用字符串pad来对s右侧进行填充,直至长度达到len RPAD(s,len,pad)
将s重复x遍后返回 REPEAT(s,x)
将字符串s中包含form的字符替换成target REPLACE(s,form,target)
比较s1与s2,如果相同返回0,s2大于s1返回1,s2小于s1返回-1 STRCMP(s1,s2)
返回字符串左侧x个字符 LEFT(s,x)
返回字符串右侧x个字符 RIGHT(s,x)
返回s的长度 LENGTH(s)
返回s颠倒顺序 REVERSE(s)

3.数字类函数

功能 函数
返回大于n最小的整数 CEIL(n)
返回小于n最大的整数 FLOOR(n)
返回0到1的随机数 RAND()
将n四舍五入保留y位小数 ROUND(n,y)
将n非四舍五入保留y位小数 TRUNCATE(n,y)

4.日期类函数

功能 函数
返回当前日期时间 NOW()
返回当前日期 CURDATE()
返回当前时间 CURTIME()
返回日期date为一年中的第几周 WEEK(date)
返回日期date中的年 YEAR(date)
格式化日期 DATE_FORMAT(s,pattern)
返回d1与d2相差的天数 DATEDIFF(d1,d2)
返回date加上n天后的日期 ADDDATE(date,n)
返回time的小时值 HOUR(time)
返回time的分钟值 MINUTE(time)
获取月份 MONTH()

3.数据类型

1.整形

数据类型 字节
TINYINT 1
SMALLINT 2
MEDIUMINT 3
INT 4
BIGINT 8

2.浮点型

数据类型 精度
FLOAT[(M,D)] 小数点后6-7位(常用)
DOUBLE[(M,D)] 小数点后14-15位

3.日期时间类型

数据类型 字节 日期格式
datetime 8 YYYY-MM-DD HH:MM:SS
timestamp 4 YYYY-MM-DD HH:MM:SS
date 3 YYYY-MM-DD
year 1 YYYY
time 2 HH:MM:SS

4.字符型

类型 说明
CHAR(M) 1
VARCHAR(M) 2

4.属性约束

关键字 约束
NULL 可以为空
NOT NULL 非空约束
DEFAULT 默认约束
UNIQUE KEY(UK) 唯一约束
PRIMARY KEY(PK) 主键约束
FOREIGN KEY(FK) 外键约束
AUTO_INCREMENT 自动增加
COMMENT 注释
UNSIGNED 无符号

5.注释

单行注释:# 内容…
多行注释:/* 内容… */

6.表操作

1.创建表

CREATE TABLE `表名`(
       `列名1`  数据类型 [约束] [索引] [注释],
       `列名2`  数据类型 [约束] [索引] [注释],
       ………
      `列名n`  数据类型 [约束] [索引] [注释]
)[表类型] [表字符集] [注释];
#例子:
CREATE TABLE `表名`(
	`列名1` INT(4)[数据类型]  NOT NULL[不能为空]  COMMENT '学号'  PRIMARY KEY,
	`loginPwd` VARCHAR(20) NOT NULL COMMENT '密码',
	`studentName` VARCHAR(50) NOT NULL COMMENT '姓名' ,
	`sex` CHAR(2) DEFAULT '男' NOT NULL COMMENT '性别',
	`gradeId` INT(4) UNSIGNED COMMENT '年级',
	`phone` VARCHAR(50) COMMENT '电话' ,
	`address` VARCHAR(255) DEFAULT '地址不详' COMMENT '地址' ,
	`bornDate` DATETIME  COMMENT '出生日期' ,
	`email` VARCHAR(50) COMMENT '邮件账号',
	`identityCard` VARCHAR(18) UNIQUE KEY COMMENT '身份证号' 
)COMMENT = "学生表";

2.表及表中字段的操作

功能 语句
查看数据库中的表 SHOW TABLES;
删除表 DROP TABLE [IF EXISTS] 表名;
查看表的定义 DESCRIBE 表名 或 DESC 表名;
查看表的字段信息 SHOW COLUMNS FROM 表名;
查看表的所有信息 SHOW CREATE TABLE 表名;
查看字段的详细信息 SHOW FULL COLUMNS FROM 表名称;
查看字段的简要信息 SHOW COLUMNS FROM 表名称;
修改表名 ALTER TABLE 原表名 RENAME [TO] 新表名;
添加表字段 ALTER TABLE 表名称 ADD 字段名 数据类型 [属性];
修改表的字段名称 ALTER TABLE 表名称 CHANGE 原字段名 新字段名 数据类型 [属性];
修改某个表的字段类型 ALTER TABLE 表名称 MODIFY 字段名称 字段类型 [是否允许非空];
删除某一字段 ALTER TABLE 表名称 DROP 字段名;
添加非空约束 ALTER TABLE 表名称 MODIFY 字段名 INT(10) NOT NULL;
删除非空约束 ALTER TABLE 表名称 MODIFY 字段名 INT(10);
添加唯一键 ALTER TABLE 表名称 ADD UNIQUE ( 字段名) [字段属性];
删除唯一性约束 ALTER TABLE 表名称 DROP INDEX 字段名;
修改主键 ALTER TABLE 表名称 DROP PRIMARY KEY ,ADD PRIMARY KEY ( 字段名 );
添加主键约束 ALTER TABLE 表名 ADD CONSTRAINT 主键名称(形如:PK_表名) PRIMARY KEY 表名(主键字段);
删除主键约束 ALTER TABLE 表名 DROP PRIMARY KEY;
添加外键约束 ALTER TABLE 从表 ADD CONSTRAINT 外键名称(形如:FK_从表_主表) FOREIGN KEY (外键字段) REFERENCES 主表(主键字段);
解除外键约束 alter table 表名 drop foreign key 外键名称;
删除外键字段 alter table 表名 drop 外键字段名;
添加自增长: ALTER TABLE 表名 MODIFY 字段名 INT(10);
删除自增长 ALTER TABLE 表名 MODIFY 字段名 INT(10);
添加零填充 ALTER TABLE 表名 MODIFY 字段名 INT(10) ZEROFILL;
删除零填充 ALTER TABLE 表名 MODIFY 字段名 INT(10);
添加默认约束 ALTER TABLE 表名 MODIFY 字段名 INT(10) DEFAULT '值';
删除默认约束 ALTER TABLE 表名 MODIFY 字段名 INT(10);
添加无符号 ALTER TABLE t_user MODIFY user_id INT(10) UNSIGNED;
删除无符号 ALTER TABLE t_user MODIFY user_id INT(10);
添加单行 INSERT [INTO] 表名 [(字段名列表)] VALUES (值列表);
添加多行 INSERT [INTO] 表名 [(字段名列表)] VALUES (值列表),(值列表),(值列表),(值列表),……;

3.查询

1.查询结果插入到新表中

#语法1:(表必须先存在而且上下类型要相对)
INSERT [INTO] `新表名`(字段1,字段2,……,字段n) 
SELECT 字段1,字段2,……,字段n 
FROM `原表`;

#语法2:(一般用语法2)
CREATE TABLE `新表名`(
	SELECT 字段1,字段2,……,字段n 
	FROM `原表`;
);

2.基本查询

SELECT `字段列表`
FROM  `表名`或 视图
[ WHERE 查询条件]
[GROUP BY <分组查询的字段名>]
[ORDER BY <排序的字段名>[ASC升、DESC]];
[LIMIT [ 位置偏移量(按下标开始显示(从0开始)),]显示几行数据 ];

3.查询的所有条件

select 字段名1 [as 别名 ] , 字段名2 [as 别名 ] ,字段名3 [as 别名 ] ……
from 表名 [as 别名],表名 [as 别名]……
where 条件 
    =   >   <    >=   <=    !=   <>
    is
 
    like

    regexp 
        ^   开头
        &  结尾
        []  一个字符
        {}  字符个数
        |and or not   
    between and         
    in any all exists
       
      
        any 任意一个
            	select *
            	from country
            	#where Population >any(14786000,2943000,0)
            	where population >0;
        
        all  所有
            	select *
            	from country
            	where Population >all(14786000,2943000,0)
            	where population >14786000;
            
        exists
            #两个表 查询出有人的班
            select classname from class 
            where EXISTS (select * from stu4 where class.classid = stu4.classid);
order by
    asc 默认升序
    desc 降序
    单字段:
            #降序排列国家信息
        	select * 
        	from country
        	order by Population desc;
    
    多字段:
            #按照大洲升序排列,再按照人口降序排列
            	select * 
            	from country
            	order by Continent asc, Population desc;
    
group by
    聚合函数:avg() count() sum()  min()  max()
    #ifnull()函数 如果不为空采用自己的值,如果为null转换为0
    select avg(ifnull(score,0)) as 'ifnull平均分'
    from stu4;
having
(left|right|inner) join on
limit 0,10;
发布了43 篇原创文章 · 获赞 61 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43583693/article/details/100777622