mysqlfunction表名作为参数_mysql基础学习整合database包含tables(具体数据库中包含各个表)
tables包含columns(具体表中包含各个列)
describe 表名是查看表格结构;
清空表中数据:truncate 表名;
set sql_safe_updates=0;(取消安全模式)
修改数据语句:update 表名 set 列名1='',列名2='' 记得⼀定要加where表达式来限定条件
select *表⽰取出所有列,后⾯加where表达式 来限定⾏的条件
'',数字常数可以直接书写
sql中union多表合并
字符串和⽇期常数需要单引号括起来 '',
整型——int系列默认有符号;unsigned是⽆符号;int(M)中的M代表限制了字符宽度,M位宽度 数据类型存储列int的⼤⼩从⼩到⼤:tinyint<smallint<mediumint<int<bigint
float——浮点型(⼩数),decimal——定点型,decimal⽐float更精确。float(M,D)或decimal(M,D);M,D分别代表:M代表⼩数总
例如float(6,2)就是-9999.99~9999.99
位数,⽽D代表⼩数点右边的位数 例如float(6,2)就是-9999.99~9999.99
字符串类型:char (定长字符串);varchar (变长字符串) text(⽂本类型)⼀版存储⽂章内容,不需要后缀的默认值和⾮空限制;blob(⼆进制类型)⼀般存储图像⾳频等信息
unsigned--⽆符号类型(unsigned的数据alter增加列;语句是:alter table
add 列名 列数据类型 列参数;常⽤的列参数是unsigned--⽆符号类型(unsigned的数据alter table 表名 add
范围是0~255);
:zerofill和M配合使⽤,⽐如学号列,需要000## 填充;另外zerofill有0的填充,必同时是unsigned类型列参数:zerofill和M配合使⽤,⽐如学号列,需要000## 填充;另外zerofill有0的填充,必同时是unsigned类型
after 某列;
add 列名 列数据类型 列参数 after 某列;
如果要加在固定列后⾯,利⽤after 语句:alter table
利⽤after 语句:alter table 表名 add
first;
add 列名 列数据类型 列参数 first;
如果把新列放在列的最前⾯,利⽤first语句:alter table
利⽤first语句:alter table 表名 add
新建表格:
事务:
insert into 表名 values(数据1,数据2…数据N);……insert into 表新建多条数据是时 :1)START TRANSACTION; 2)insert into 表名 values(数据1,数据2…数据N);……insert into 表名 values(数据A,数B…数据N);COMMIT;
名 values(数据A,数B…数据N);
alter table 表名 modify 列名 新的列数据类型 列参数 同时注意modify不能改列删除列:alter table 表名 drop 列名
drop 列名;修改列:alter table 表名 modify 列名
alter table 表名 change 旧列名 新列名 新的列数据类型 新列参数名,应该⽤change修改列名,语句是:alter table 表名 change 旧列名 新列名 新的列数据类型 新列参数
删除多⾏:delete from 表名 where表达式;
删除多列,语句中需要加column 如图:
⽇期型 date YYYY-MM-DD;datetime YYYY-MM-DD HH:MM:SS ;timestamp YYYY-MM-DD HH:MM:SS;year YYYY
⽇期型 date
create table 新数据表名 like 原数据表名
建⽴相同结构的表:create table 新数据表名 like 原数据表名
insert into 新数据表名 select 列名1,2,3…N from 原数据表名
整个表格的数据复制语句: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<price<500
<= 之类的符号不但能⽐较数字,也能按照字典顺序来⽐较字符串
<=
左连接 left——语法:A left join B on 条件 ;
语法:A left join B on 条件 ;理解为A表在左不动 ,B表在A右边滑动取值,A表与B表通过⼀个关系来关联筛选
⼀个结果集(⼀张表)可以对其结果集进⾏再查询(A、B表的列都可以查询)
条件为真,则B表对应的⾏取出 它的形成可以看作⼀个结果集(⼀张表)
条件为真,
左连接根据左边的表 右表中不到的结果 ⽤ null补齐该⾏
就等价于 B right join A on 条右连接和左连接相同,相当于B right join A on 条件 ;
B right join A on 条件 ; ⼀般⽤左连接即可 A left join B on 条件 就等价于
A inner join
B 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[offset,N] offset是偏移量 默认值为0;N是取出的条⽬ ;例如:limit3是限制条数⽤limit:放在order by 后⾯,语法:limit[offset,N] offset是偏移量 默认值为0;N是取出的条⽬ ;例如:limit3 limit 2,3 就是得到第三到第五的三条数据 跳过2条数据偏移量是2,然后再取3条, 是'3 4 5' 三条数据被直接取出前三条数据;⽽ limit 2,3
取出
字句顺序: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继续查询 【典型题:查询每个分组下最新商品、最贵商品等】
拼接字符串的代码⽤ 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
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是包含重复值的表格加法
select语句 ; 视图可以理解为表的影⼦映射来的;某些情况下,视图和表的数据⼀⼀对应的时候,
视图和表的数据⼀⼀对应的时候,视view 视图;CREATE view as select语句 ;
图的修改会影响到表,可理解为有反函数
algorithm 有三种形式 algorithm=merge 是合并查询语句;algorithm=temptable 是建⽴临时表;algorithm=undefined 是未定义,由系统判断
(列名表达式1)
→ (列名表达式1) algorithm的语句例如:1)
(视图名) as select*from 表名 where >200; →
1)create algorithm=merge view v2(视图名)
(列名表达式2) 这样的algorithm⽐view 查询效率更快
→ (列名表达式2) 这样的
2)
2)select*from v2 where <500; →
运算符 www.runoob/mysql/mysql-operator.html
函数 www.runoob/mysql/mysql-functions.html
ROUND(X,D)函数:表⽰将值 X 四舍五⼊为⼩数点后 D 位的数值,D为⼩数点后⼩数位数。若要保留 X 值⼩数点左边的 D 位,可将 D 设
为负值。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。