表相关语句:

创表相关

CREATE TABLE `Student`(
`s_id` VARCHAR(20),
`s_name` VARCHAR(20) NOT NULL DEFAULT '',
`s_birth` VARCHAR(20) NOT NULL DEFAULT '',
`s_sex` VARCHAR(10) NOT NULL DEFAULT '',
PRIMARY KEY(`s_id`)
);

  mysql常用数据类型

int        #整型,4个字节  一般不需要指定宽度,(8):只是显示为8位,默认有负号设置无负号: unsigned
double #浮点型,例如double(5,2),标识最多5位,其中2位为小数,即最大为999.99
varchar #可变长度字符串类型。例如:varchar(10) 'aaa' 占3位
char #固定长度字符串类型。例如:char(10) 'aaa' 占10位
text #大文本字符串类型。
blob #字节类型。例如:
datetime #日期时间类型。例如:datetime(yyyy-MM-dd hh:mm:ss)
date #日期类型。例如:date(yyyy:MM:dd)
time #时间类型。例如:time(hh:mm:ss)
timestamp #时间戳类型。例如:timestamp(yyyy-MM-dd hh:mm:ss) 会自动赋值
enum #枚举 多选一 enum('male','female'),default为默认值
例如:sex enum('male','female') not null default 'male'
set #集合 多选多,可以选一个 set('read','DJ','DBJ','run')
注:字符串类型和时间类型都要用单引号括起来,空值为null

  mysql字段约束

#主键约束:PRIMARY KEY              要求被装饰的字段:唯一和非空
#唯一约束:UNIQUE 要求被装饰的字段:唯一,
# .联合唯一:在结尾:unique(字段1,字段2)
#非空约束:NOT NULL 要求被装饰的字段:非空
#外键约束:FOREIGN KEY 某主表的外键
#自动增加:AUTO_INCREMENT 自动增加(需要和主键 PRIMARY KEY 同时用)
#设置默认值:DEFAULT 为该属性设置默认值
# 在int、char中:zerofill 不足位数默认填充0

删除表相关

  删除表

#drop table 数据库表名
drop table Python

修改表相关

  修改表字段 

alter table 表名 add 字段名 类型(长度) [约束]; -- 添加列
alter table 表名 modify 字段名 类型(长度) [约束]; -- 修改列的类型长度及约束
alter table 表名 change 旧字段名 新字段名 类型(长度) [约束]; -- 修改列表名
alter table 表名 drop 字段名; -- 删除列
alter table 表名 character set 字符集; -- 修改表的字符集
rename table 表名 to 新表名; -- 修改表名

查看表相关

  查看表结构

show create table 表名; -- 查看表的创建细节
desc 表名; -- 查看表结构 语句的结尾处(分号前面)添加\g或者\G参数可以改变展示形式。

mysql引擎设置

# 查看所有的存储引擎
show engines; # 查看不同存储引擎存储表结构文件特点
create table t1(id int)engine=innodb; -- MySQL默认的存储引擎,支持事务,支持行锁,支持外键。有且只有一个主键,用来组织数据的依据
create table t2(id int)engine=myisam; -- 不支持事务,不支持外键,支持全文索引,处理速度快。
create table t3(id int)engine=blackhole; -- 黑洞,写入它的任何内容都会消失
create table t4(id int)engine=memory;-- 将表中的数据存储在内存中。表结构以文件存储于磁盘。 insert into t1 values(1);
insert into t2 values(1);
insert into t3 values(1);
insert into t4 values(1);

mysql开启远程连接

  新建用户远程连接mysql数据库

    • grant all on *.* to admin@'%' identified by '123456' with grant option;
    • flush privileges;    

  允许任何ip地址(%表示允许任何ip地址)的电脑用admin帐户和密码(123456)来访问这个mysql server。注意admin账户不一定要存在。

mysql字段操作相关

mysql添加字段

insert into 表(字段名1,字段名2..) values(值1,值2..);-- 向表中插入某些列
insert into 表 values(值1,值2,值3..); -- 向表中插入所有列

mysql删除字段

delete from 表名  -- 删除表中所有记录
delete from 表名 where 条件 -- 删除符合 where条件的数据
truncate table 表名; -- 把表直接drop掉,重新建表,auto_increment将置为零。删除的数据不能找回。执行速度比delete快

mysql修改数据

update 表名 set 字段名=值,字段名=值...; -- 这个会修改所有的数据,把一列的值都变了
update 表名 set 字段名=值,字段名=值... where 条件; -- 只改符合where条件的行

mysql查询

  单表查询

#----综合使用
书写顺序
select distinct * from '表名' where '限制条件' group by '分组依据' having '过滤条件' order by limit '展示条数'
执行顺序
from -- 查询
where -- 限制条件
group by -- 分组
having -- 过滤条件
order by -- 排序
limit -- 展示条数
distinct -- 去重
select -- 查询的结果 正则:select * from emp where name regexp '^j.*(n|y)$';
集合查询:max 、min 、avg 、sum 、count 、group_concat 。
拼接:concat、concat_ws、group_concat
内连接:inner join
左连接:left join
右连接:right join
全连接: 左连接 union 右连接

  where查询

# between 在...之间
select id,name from emp where id >= 3 and id <= 6;
相当于:
select * from emp where id between 3 and 6; # or 或者
select * from emp where id >= 3 or id <= 6; # in,后面可以跟多个值
select * from 表名 where 字段名 in (条件1,条件2,条件三); # like (见上18)
# char——length() 取字符长度
select * from 表名 where char_length(需要获取长度的字段名) = 4; not 配合使用
注意:判断空不能用 = ,只能用 is

  group by 分组

select 查询字段1,查询字段2,... from 表名
where 过滤条件
group by分组依据 # 分组后取出的是每个组的第一条数据

  聚合查询 :以组为单位统计组内数据>>>聚合查询(聚集到一起合成为一个结果)

# max 最大值
# 每个部门的最高工资
select post,max(salary) from emp group by post; # min 最小值
# 每个部门的最低工资
select post,min(salary) from emp group by post; # avg 平均值
# 每个部门的平均工资
select post,avg(salary) from emp group by post;
# 每个部门的工资总和 # sum 求和
select post,sum(salary) from emp group by post; # count(需要计数字段) 计数
# 每个部门的人数
select post,count(id) from emp group by post; # group_concat(需要分组后的字段) # 不仅可以用来显示除分组外字段还有拼接字符串的作用
select post,group_concat(name) from emp group by post;
-- post:分组字段,name 需要分组后显示的字段
拼接:
concat(不分组时用)拼接字符串达到更好的显示效果 as语法使用
举例:
select concat("NAME: ",name) as 姓名 from emp;
concat_ws: 如果拼接的符号是统一的可以用
举例:
select concat_ws(':',name,age,sex) as info from emp;
group_concat:
举例:
select post,group_concat(name,'DSB') from emp group by post; 补充:as语法 起别名
select name as 姓名,salary as 薪资 from emp;

  having 过滤查询

# having的语法格式与where一致,只不过having是在分组之后进行的过滤,即where虽然不能用聚合函数,但是having可以!

# 用法
select 查询字段1,查询字段2,... from 表名
where 过滤条件1
group by分组依据
having avg(过滤条件2) > 10000;

  distinct 去重

# 对有重复的展示数据进行去重操作
select distinct 需取重字段 from 表名;

  order by 排序

select * from emp order by salary asc; #默认升序排
select * from emp order by salary desc; #降序排 # 多条件排序
#先按照age降序排,在年轻相同的情况下再按照薪资升序排
select * from emp order by age desc,salary asc;

  limit 限制展示条数

# 限制展示条数
select * from emp limit 3;
# 查询工资最高的人的详细信息
select * from emp order by salary desc limit 1; # 分页显示
select * from emp limit 0,5; # 第一个参数表示起始位置,第二个参数表示的是条数,不是索引位置
select * from emp limit 5,5;

  正则

select * from emp where name regexp '^j.*(n|y)$';

  replace替换

replace(str1,old,new) -- str1:需要替换的字段名
update gd_km set mc=replace(mc,'土地','房子')
说明:new替换str1中出现的所有old,返回新的字符串,如果有某个参数为NULL,此函数返回NULL
该函数可以多次替换,只要str1中还有old存在,最后都被替换成new
若new为空,则删除old

  多表查询

  内连接、左连接、右连接、全连接

1、内连接:只取两张表有对应关系的记录(只拼两个表共有的)
左表 inner join 右表 on 条件
select * from emp inner join dep on emp.dep_id = dep.id
where dep.name = "技术"; 2、左连接:在内连接的基础上,保留左边的数据,右边没有就为空
左表 inner left 右表 on 条件
3、右连接:在内连接的基础上,保留右边的数据,左边没有就为空
左表 inner right 右表 on 条件
4、全连接:左右连接都有,用union连接
左表 inner left 右表 on 条件 union 左表 inner right 右表 on 条件
select * from emp left join dep on emp.dep_id = dep.id
union
select * from emp right join dep on emp.dep_id = dep.id;

  子查询

# 就是将一个查询语句的结果用括号括起来当作另外一个查询语句的条件去用

select name from where id in(select dep_id from emp where age>25);

mysql练习50题:https://blog.csdn.net/fashion2014/article/details/78826299

 

msql语句的更多相关文章

  1. 数据库-转换sql语句

    文章描述:主要说明转换成SQL语句的过程.----必要信息(数据库名,表名,条件)转换成SQL语句 一些界面上数据增删改查的操作往往只需要输入一数据库名,表名,加条件就可以进行数据查询了,在这背后是怎 ...

  2. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  3. whdxlib

    1 数据库系统实现 实 验 指 导 书 齐心 彭彬 计算机工程与软件实验中心 2016 年 3 月2目 录实验一.JDBC 应用程序设计(2 学时) ......................... ...

  4. MSQL基本增删改语句汇总练习

    删除约束注意: 网上说是 ALTER TABLE 表名 DROP CONSTRAINT 约束名; 这里的CONSTRAINT 是指primary key,foreign key,unique,等实际的 ...

  5. sql 动态语句

    如果动态语句有表变量 例子如下: declare @mS varchar(10) declare @mE varchar(10) declare @mSQL nvarchar(500) --SQL语句 ...

  6. 免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE)

    SQLite数据库是中小站点CMS的最佳选择 SQLite 是一个类似Access的轻量级数据库系统,但是更小.更快.容量更大,并发更高.为什么说 SQLite 最适合做 CMS (内容管理系统)呢? ...

  7. TDSQL“相似查询工具MSQL+”入选VLDB论文

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云数据库 TencentDB发表于云+社区专栏 作者介绍:王晓宇,腾讯数据库TDSQL团队成员,目前参与TDSQL数据库内核研发工 ...

  8. Msql浅析-基础命令(二)

    篇幅简介 一.Msql数据类型 1.整型 tinyint,  占 1字节 ,有符号: -128~127,无符号位 :0~255 smallint, 占 2字节 ,有符号: -32768~32767无符 ...

  9. Msql入门实战之下

    前面一章主要解说了mysql的select的使用方法.将select的大部分使用方法进行分别解说.本章主要解说Msql约束表的建立,以及存储过程的实现,附带其它介绍.临时就算入门了,Mysql索引之后 ...

随机推荐

  1. python开发基础(二)运算符以及数据类型之str(字符串)

    # encoding: utf-8 # module builtins # from (built-in) # by generator 1.147 """ Built- ...

  2. Java入门(2)

    阅读书目:Java入门经典(第7版) 作者:罗格斯·卡登海德 一个简单的计算平方根的程序: 1 package com.java24hours; 2 3 public class Root { 4 p ...

  3. PHP博客

    创建数据库 用户表 blog_user userid int 用户id username varchar(50) 用户名 password varchar(30) 密码 type tinyint(2) ...

  4. Linux C 获取本机所有网卡的 IP,Mask

    0 运行环境 本机系统:Windows 10 虚拟机软件:Oracle VM VirtualBox 6 虚拟机系统:Ubuntu 18 1 代码 #include <sys/ioctl.h> ...

  5. 力扣 - 146. LRU缓存机制

    目录 题目 思路 代码 复杂度分析 题目 146. LRU缓存机制 思路 利用双链表和HashMap来解题 看到链表题目,我们可以使用头尾结点可以更好进行链表操作和边界判断等 还需要使用size变量来 ...

  6. Java实现FTP跨服务器文件操作

    在过去的几年工作中,曾经多次需要把文件上传到单独的服务器,而程序是在单独的服务器上部署的,在进行文件操作的时候就需要跨服务器进行操作包括:文件上传.文件下载.文件删除等.跨服务器文件操作一般是需要FT ...

  7. [MIT6.006] 6. AVL Trees, AVL Sort AVL树,AVL排序

    之前第5节课留了个疑问,是关于"时间t被安排进R"的时间复杂度能不能为Ο(log2n)?"和BST时间复杂度Ο(h)的关系.第6节对此继续了深入的探讨.首先我们知道BST ...

  8. tcp 客户端 synack的接收 以及 相互connect

    接收入口 tcp_v4_rcv    |--> tcp_v4_do_rcv               |-> tcp_rcv_state_process                  ...

  9. 8.java设计模式之装饰者模式

    基本需求: 咖啡的种类有很多种,调料也有很多种,下单时,可以点单品咖啡也可以点单品咖啡+调料的组合,并计算下单时花费的金额 传统方式: 方式一 创建一个抽象类Drink,让所有的单品咖啡和组合咖啡都继 ...

  10. Python项目1:自动添加标签

    本项目取材自<Python基础教程(第三版)>人民邮电出版社 目标: 本项目给纯文本文件添加格式,使文档转换成其他类型的文档(以HTML为例) 思路: 从原文件提取有用信息: 文档结构-- ...