表相关语句:

创表相关

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. Java Spring Cloud服务间调用

    A服务是用户服务,B服务某个需求需要用户信息,而B服务无法连接用户的数据库(分库),需要让A服务查询用户信息. 在B服务写一个接口去调用A服务的某个请求 /** * 访问A服务 */ @FeignCl ...

  2. XJOI NOIP501/511训练22 ttt学字符串

    ttt学字符串 题目大意 大法师ttt 最近在学习字符串,有一天他看到魔力xtx左手拿着A字符串,右手拿着B字符串,两个字符串的长度都是一样的,而且都由abc三种字符构成,大法师ttt的灵力值为C,现 ...

  3. Vue3教程:一个基于 Vue 3 + Vant 3 的商城项目开源啦!

    之前发布过一篇文章,告诉大家我要开发一个 Vue3 的商城项目并开源到 GitHub 上,供大家练手和学习,随后也一直有收到留言和反馈,问我开发到哪里了,什么时候开源之类的问题,今天终于可以通知大家, ...

  4. Servlet程序访问jsp文件404的一种情况

    启动Jsp Run on Server的时候出现404的错误,如下图: 检查一下是否文档目录如下图:jsp应该在WebContent下,而不是WEB_INF下,访问放在WEB_INF下的jsp文件就会 ...

  5. 安卓快速关机APP

    目录 自说自话 使用方法 自说自话 像我这样每天晚上睡觉关机的人不知道有多少,反正我每天都有关机的需求.因此我特别讨厌长按关机键进行关机,感觉浪费我好几秒的生命. 因此我开发了这款APP,主要是自用, ...

  6. 服务网格istio概念应知应会

    一.背景 最近架构组基于istio开发了服务网格(Service Mesh)平台,借此机会把相关的背景知识做一次学习和记录,方便回头查看. 初版的效果: 二.istio 官方手册:https://is ...

  7. maven install 时 pom中skip test

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-suref ...

  8. 我发现了一个特别Man的Linux工具!!!

    Linux命令不用我多说吧,谁还不会几个?但是一个命令可能有几十种用法,就拿最简单也是最常用的ls来举例,它就有将近20种options用法 比如 ls -a :现实所有文件及其隐藏文件 ls -t ...

  9. python3中我所了解的print()的用法

    1.最基础的用法:打印调试信息等字符串语句.而且在3里面,打印中文的时候不需要加u了. 2.打印变量 打印默认换行的: 打印出来不想要他换行的:参数end='',这样打印出来就可以不换行了,这种骚操作 ...

  10. linux定时任务(crontab和at)

    查看定时任务:crontab -l [root@localhost test]# crontab -l no crontab for root 创建编辑定时任务:crontab -e [root@lo ...