关于SQL语句,这里有很详细的介绍https://blog.youkuaiyun.com/peng12290/article/details/78977589
这篇只有创建、修改和删除表,但是很详细https://www.cnblogs.com/sqbk/p/5806797.html
SQL 语句对大小写不敏感,所有空格都被忽略
help或\h获得帮助
quit或exit退出命令行实用程序
mysql -h localhost -u root -p 登陆MySQL数据库管理系统
句末千万不要加’;’,会报错!!!
1.创建:
(1)创建数据库:
先查看已有数据库 show databases;
创建 create database 数据库名;
删除已有数据库 drop database 数据库名;
(2)创建表:
创建之前要先输入use 数据库名;
否则
创建:
create table 表名 (
属性名1 数据类型 完整约束条件,
属性名2 数据类型 完整约束条件,
……
属性名n 数据类型 完整约束条件
);
注意:
标点必须是英文状态下的
最后一条属性名后不加","
create不是creat,varchar不是verchar
命令用;或\g结束,按Enter不执行命令
这里是SQL数据类型的详细介绍:http://www.w3school.com.cn/sql/sql_datatypes.asp
完整约束条件(第二篇博客中有详细介绍):
(3)删除表
drop table 表名;
永久删除已存在的表,没有确认,无法撤销
(4)重命名表
rename table 旧表名1 to 新表名1,旧表名2 to 新表名2,…,旧表名n to 新表名n;
(5)更新表
alter table 已存在的表名; 更改表结构
增加列: alter table 表名 add 列名 数据类型 约束条件;
删除列: alter table 表名 column 列名;
注意:使用alter table前做完整备份,防止数据丢失
2.查看表:
(1)查看数据库中可用的表:
show tables;
(2)查看表基本结构:
describe 表名;
也可以是desc 表名;
show columns from 表名;
也可以显示表列,和describe效果相同
(3)查看表详细结构(可以查看表的详细定义,除了字段名、字段的数据类型、约束条件外,还可以查看表的默认存储引擎和字符编码):
show create table 表名;
show语句还有:
show status; 显示广泛的服务器状态信息;
show create database; 显示创建特定数据库;
show grants; 显示授权用户(所有用户或特定用户)的安装权限;
show errors和show warnings; 显示服务器错误或警告消息。
3.联结表:
用单条select语句检索存储在多个表中的数据
select 列名1,…,列名n from 表名1,表名2 where 条件 order by 列名;
4.复制表:
https://www.cnblogs.com/zhangjpn/p/6231662.html
全部复制
create table 新表表名 select * from 原表名;
部分复制
create table 新表表名 select 列名1,列名2,… from 原表名;
4.select语句:
selectd的子句有:from,order by,where,group by,having
(1)检索:
检索单个列 select 列名 from 表名;
检索多个列 select 列名1,列名2,…,列名n from 表名;
检索所有列 select * from 表名;
检索不同的行 select distinct 列名 from 表名; 指示MySQL只返回不同的值
限制结果
select 列名 from 表名 limit n; limit n指示MySQL返回不多于n行
select 列名 from 表名 limit m,n; m为开始位置,n为要检索的行数
注意:
行0:检索出来的第一行为行0而不是行1
行数不够时,limit中指定要检索的行数为检索的最大行数
MySQL 5的limit语法:
limit m offset n意为从行m开始取n行,与limit m,n相同
使用完全限定的表名 select 表名.列名 from 数据库名.表名
(2)排序:
排序数据select 列名 from 表名 order by 列名;对列以字母顺序排序数据
按多个列排序select 列名1,列名2,…,列名n from 表名 order by 列名a,列名b,…;先排列a,再排列b……排序完全安照所规定的顺序进行,仅在列a有多个相同值时按列b排序,若列a中所有值都是唯一的,则不按列b排序
指定排序方向:order by默认升序排序(asc(ascending)),指定desc关键字进行降序排序select 列名1,列名2,…,列名n from 表名 order by 列名a desc,列名b,…;desc关键字只应用到直接位于其前面的列,在多个列降序排序必须对每个列指定desc关键字
limit必须位于order by之后,使用子句次序不对将产生错误消息
(3)过滤
select 列名1,… from 表名 where 条件(列名n=m)
检索表中几个列,但不返回所有行,只返回列n值为m的行
order by放在where之后
条件中使用单引号限定字符串,与数值比较的值不用引号
where子句操作符:
空值检查where is null
通过过滤选择出不具有特定值的行时,不会返回具有null值的行。在过滤数据时,一定要验证返回数据中确实给出了被过滤列具有null的行。
where子句操作符:
and 指示检索满足所有给定条件的行
or 指示检索匹配任一条件的行,不是同时匹配两个条件
在处理or前优先处理and,可以使用圆括号明确地分组相应的操作符
in用来指定条件范围,范围中每个条件都可以进行匹配。in取合法值的由逗号分隔的清单,全都括在圆括号中
not 否定它之后的任何条件,MySQL中支持使用not对in、between和exists子句取反,这与多数其他DBMS允许使用not对各种条件取反有很大的差别
like指示MySQL后跟的搜索模式允许利用通配符匹配而不是直接相等匹配进行比较
通配符:
%:在搜索串中,%表示任何字符出现的任意次数
例:where 表名 like 'abc%'检索任意以abc起头的词,MySQL检索区分大小写
通配符可在搜索模式中任意位置使用,并可以使用多个通配符
‘%abc%‘表示匹配任何位置包含文本abc的值
‘a%b’表示搜索以a开头b结尾的值
注意:%不能匹配null,where 表名 like ‘%‘也不可以
%能匹配0个字符
_只能匹配单个字符
通配符能不用则不用,置于搜索模式的开始处搜索最慢
group by
having
select子句顺序:
selcet 要返回的列或表达式 必须使用
from 从中检索数据的表 仅在从表选择数据时使用
where 行级过滤
group by 分组说明 仅在按组计算聚集时使用
having 组级过滤
order by 输出排列顺序 ASC正序排列 DESC 倒序排列
limit 要检索的行数
5.正则表达式:
6.创建计算字段:
7.函数:
各种函数的使用在这里啦https://www.cnblogs.com/xuyulin/p/5468102.html
字符串连接:
select concat(name,’-’,score) from 表名;
数学函数:
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列的之和
8.插入数据(insert)
(1)插入完整的行
insert into 表名 values(‘数据1’,‘数据2’,‘数据3’,…); 简单但不安全,尽量避免使用
数据值允许为空(null)
插入数据必须加单引号’ ’
insert into 表名(列名1,列名2,…,列名n) values (‘数据1’,‘数据2’,’…’,‘数据n’); 更安全
(2)插入多个行
insert into 表名 values(‘数据1’,‘数据2’,‘数据3’,…),(‘数据a’,‘数据b’,‘数据c’,…);
注意:每条insert语句中的列名和次序相同时才可以使用该语句
(3)插入检索出的数据
insert into 表名1(列名1,列名2,…,列名n) select 列名1,列名2,…,列名n from 表名2;
9.更新和删除数据
注意:MySQL没有撤销(undo),使用update和delete要慎重!!!
(1)更新数据
update 表名 set 列名1=‘指定值1’,列名2=‘指定值2’ where 条件;
注意:update要小心使用,否则容易更新所有行
update更新多行时,这些行中的一行或多行出现错误,整个update操作被取消(错误发生前更新的所有行被恢复到原来的值),使用ignore关键字即使发生错误仍继续更新
update ignore 表名…
删除某列的值可设置其为null(表定义允许null值时)
update 表名 set 列名=null where 条件;
(2)删除数据
delete from 表名 where 条件;
注意:delete不需要列名或通配符,删除整行而不是列,删除指定列使用update
可以从表中删除所有行但是不删除表本身
删除所有行使用truncate table速度更快(删除原来的表并重建一个新表)
10.用户管理:
(1)新建用户
create user name identified by ‘用户名’;
(2)更改密码
set password for =password(‘新密码’);
(3)权限管理
show grants for 用户名; 查看用户权限
grant select on 数据库名.* to 用户名; 给用户数据库的权限
revoke select on 数据库名.* to 用户名; grant的反操作,去除权限
(4)删除用户
drop user ‘用户名’@‘localhost’;
SQL语句总结
最新推荐文章于 2021-08-25 17:03:27 发布