mysql 集成模式_mysql基础学习整合

database包含tables(具体数据库中包含各个表)

tables包含columns(具体表中包含各个列)

describe 表名是查看表格结构;

清空表中数据:truncate 表名;

set sql_safe_updates=0;(取消安全模式)

修改数据语句:update 表名 set 列名1='',列名2='' 记得一定要加where表达式来限定条件

select *表示取出所有列,后面加where表达式 来限定行的条件

字符串和日期常数需要单引号括起来 '',数字常数可以直接书写

整型——int系列默认有符号;unsigned是无符号;int(M)中的M代表限制了字符宽度,M位宽度 数据类型存储列int的大小从小到大:tinyint

float——浮点型(小数),decimal——定点型,decimal比float更精确。float(M,D)或decimal(M,D);M,D分别代表:M代表小数总位数,而D代表小数点右边的位数 例如float(6,2)就是-9999.99~9999.99

字符串类型:char (定长字符串);varchar (变长字符串) text(文本类型)一版存储文章内容,不需要后缀的默认值和非空限制;blob(二进制类型)一般存储图像音频等信息

alter增加列;语句是:alter table 表名 add 列名 列数据类型 列参数;常用的列参数是unsigned--无符号类型(unsigned的数据范围是0~255);

列参数:zerofill和M配合使用,比如学号列,需要000## 填充;另外zerofill有0的填充,必同时是unsigned类型

如果要加在固定列后面,利用after 语句:alter table 表名 add 列名 列数据类型 列参数 after 某列;

如果把新列放在列的最前面,利用first语句:alter table 表名 add 列名 列数据类型 列参数 first;

新建表格:

事务:新建多条数据是时 :1)START TRANSACTION; 2)insert into 表名 values(数据1,数据2…数据N);……insert into 表名 values(数据A,数B…数据N);COMMIT;

删除列:alter table 表名 drop 列名;修改列:alter table 表名 modify 列名新的列数据类型 列参数 同时注意modify不能改列名,应该用change修改列名,语句是:alter table 表名 change 旧列名 新列名 新的列数据类型 新列参数

删除多行:delete from 表名 where表达式;

删除多列,语句中需要加column 如图:日期型 dateYYYY-MM-DD;datetime YYYY-MM-DD HH:MM:SS ;timestamp YYYY-MM-DD HH:MM:SS;year YYYY

建立相同结构的表:create table 新数据表名 like 原数据表名

整个表格的数据复制语句:insert into 新数据表名 select 列名1,2,3…N from 原数据表名

注释的书写(--注释 或者/*注释*/)

And运算符的优先级高于Or,如果想优先执行Or,可以使用括号;

where price between 100 and 500包括等于100等于500 的数据;where price>100 and shop_price <500 相当于 100

<=之类的符号不但能比较数字,也能按照字典顺序来比较字符串

左连接 left——语法:A left join B on 条件 ;理解为A表在左不动 ,B表在A右边滑动取值,A表与B表通过一个关系来关联筛选 条件为真,则B表对应的行取出 它的形成可以看作一个结果集(一张表)可以对其结果集进行再查询(A、B表的列都可以查询)

左连接根据左边的表 右表中找不到的结果 用 null补齐该行

右连接和左连接相同,相当于B right join A on 条件 ;一般用左连接即可 A left join B on 条件 就等价于 B right join A on 条件

内连接inner join——语法:A inner join B on 条件 ;内连接可以看作是左右连接的交集

外连接可以看作是左右连接的并集 ,但在mysql中不支持,用union合并左右连接的效果就是并集

设置别名:select 列名 as 列别名;或者select…from 表名 as 表别名

合并union——语法:SQL1 union SQL2;可以通过as设置别名让两张表的结果集中列名一致 但如果不统一列名,结果集的列名将以第一张表的列名为准 另外 union 会对结果集自动去重;如果不想被去重,使用 union all ;union使用条件:只要两个表的列数相同,即可合并取出结果集

order by 注意事项:内层 order by 语句单独使用,不会影响结果集,只是排序,在执行时会被mysql优化掉失去其排序意义,所以不起作用;但在影响结果集的时候,就有意义,比如配合limit 使用,内层 order by 排序功能可用

聚合函数删除重复值,用select count(distinct 列名)from 表名 或者select distinct count(列名)from 表名

count 只是计数功能,不能count(表达式)来筛选但可以用 sum(表达式)来计数

Group by 优先于select 语句执行,所以不能使用select的别名

where语句中不能有聚合函数,需要利用having语句来限制条件,order by可以使用聚合函数排序

order by 语句通常写在select语句的末尾 默认是升序,DESC是降序,order by 列名 DESC;多条件排序就是order by 列名1,order by 列名2【列名1优先于列名2】

限制条数用limit:放在order by 后面,语法:limit[offset,N] offset是偏移量 默认值为0;N是取出的条目 ;例如:limit3是直接取出前三条数据;而 limit 2,3就是得到第三到第五的三条数据 跳过2条数据偏移量是2,然后再取3条, 是'3 4 5' 三条数据被取出

字句顺序:where>group>having>order by>limit

多行数据插入语法:1)START TRANSACTION 2)INSERT INTO 表名 VALUES (插入的内容,用 '' 和 , 分隔开)语句用, 结尾 3)重复INSERT INTO 表名 VALUES (插入内容); 4)COMMIT; 5)完成数据插入查看表的编码:show full columns from 表名

修改表编码至支持中文: alter table 表名 convert to character set utf8;子查询:

1.where型子查询:把内层的查询结果作为外层的查询条件;如果where列=内层SQL,那么子查询的返回必须是单个值;如果where列 in 内层SQL,那么返回值只能是单列 【典型题:查询最大商品、查询最贵商品等】

2.from 型子查询:把内层的查询结果作为临时表,供外层SQL继续查询 【典型题:查询每个分组下最新商品、最贵商品等】

3.exist型子查询:把外层的查询结果代到内层,看内层查询是否成立,如成立则取出值【典型题:查询有商品的分组】拼接字符串的代码用 concat,select 列A,列B, concat(列A,列B) as str_concat from 表名;

null:单独的null是空类型 无法进行比较,需要用到 is null和is not null;碰到其他运算符一律返回null——所以在建表时,会加上 not null default ''或 not null default 0的限制

length('字符串')可以计算字符串长度;replace(对象字符串,替换前字符串,要替换成的字符串)是字符串替换函数;substring 是字符串截取函数(对象字符串,from从第几位截取,for是截取字符数)

case when then函数来判断,例如:select case 列名 when数据1 then '返回值1' when数据2 then '返回值2' …end from 表名;或者if函数:if(表达式) 例如:select * if(表达式,'返回值1','返回值2')

current date 是当前时间;extract(日期元素 from日期),例如extract(minute from current_timestamp);cast(转换前的值 AS 转换后的数据类型)是类型转换函数,例如cast('0001',AS interger)

DEFAULT是指默认值

coalesce(数据1,数据2,数据3)是可以将Null转换为其他值的函数,返回参数中第一个非空值,例如coalesce(Null,1),就返回1

inner join是指取A、B表的交集;outer join获得的是A和B的并集;union 是表格的加法;union all是包含重复值的表格加法

view 视图;CREATE view as select语句 ; 视图可以理解为表的影子映射来的;某些情况下,视图和表的数据一一对应的时候,视图的修改会影响到表,可理解为有反函数

algorithm 有三种形式 algorithm=merge 是合并查询语句;algorithm=temptable 是建立临时表;algorithm=undefined 是未定义,由系统判断

algorithm的语句例如:1)create algorithm=merge view v2(视图名) as select*from 表名 where >200; → (列名表达式1) 2)select*from v2 where <500; → (列名表达式2) 这样的algorithm比view 查询效率更快

ROUND(X,D)函数:表示将值 X 四舍五入为小数点后 D 位的数值,D为小数点后小数位数。若要保留 X 值小数点左边的 D 位,可将 D 设为负值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值