本文共 4764 字,大约阅读时间需要 15 分钟。
net start mysql
mysql -h 地址 -P 端口 -u 用户名 -p 密码
select databases;
select now() ,user() ,version() ;
create database [if not exists] 数据库名 数据库选项
CHARACTER SET charset_name
COLLATE collation_name
show databases;
show create database 数据库名
alter database 库名 选项信息
drop database [ if exists] 数据库名
create [temporary] table [if not exists] [库名.]表名 (表的结构定义) [表选项]
SHOW TABLES [LIKE 'pattern']
,SHOW TABLES FROM 库名
SHOW CREATE TABLE 表名
或 DESC 表名
ALTER TABLE 表名 表选项
, 例子:ALTER TABLE 表名 ENGINE = MYISAM;
RENAME TABLE 原表名 TO 新表名
ALTER TABLE 表名 操作名
,有如下操作名:操作名 | 说明 |
---|---|
ADD [COLUMN] 字段名 字段类型 | 增加字段 |
ADD PRIMARY KEY(字段名) | 增加主键 |
ADD UNIQUE [索引名] (字段名) | 创建唯一索引 |
ADD INDEX [索引名] (字段名) | 创建普通索引 |
DROP[ COLUMN] 字段名 | 删除字段 |
MODIFY[ COLUMN] 字段名 字段属性 | 支持对字段属性进行修改 |
CHANGE[ COLUMN] 原字段名 新字段名 字段属性 | 支持对字段名进行修改 |
DROP PRIMARY KEY | 删除主键 |
DROP INDEX 索引名 | 删除索引 |
DROP FOREIGN KEY | 删除外键 |
DROP TABLE [IF EXISTS] 表名
DELETE FROM 表名 [where ...];
,不会清空自增TRUNCATE [TABLE] 表名
,清空所有数据,不能带条件,会清空自增CREATE TABLE 表名 LIKE 要复制的表名
CREATE TABLE 表名 [AS] SELECT * FROM 要复制的表名
INSERT [INTO] 表名 [(字段列表)] VALUES(值列表) [,(值列表),...]
DELETE FROM 表名 [删除条件子句]
,没有删除条件子句会删除这个表所有的数据UPDATE 表名 SET 字段名 = 新值 [,字段名2 = 新值...] [更新条件]
MySQL 数据库 表 字段 均可设置编码,数据编码与客户端编码不需一致
SHOW VARIABLES LIKE 'character_set_%'
: 查看所有字符集编码 character_set_client
: 客户端向服务器发送数据时使用的编码 character_set_results
: 服务器端将结果返回给客户端时使用的编码 character_set_connection
:连接层编码 SET 变量名 = 变量值;
:如下, SET character_set_client = gbk;
SET character_set_results = gbk;
SET character_set_connection=gbk;
SET NAMES gbk;
相当与上面三条语句执行 语法: SELECT [ALL|DISTINCT] select_expr from ->where ->group by [合计函数] ->having ->order by ->limit
SELECT amount,1+2,NOW() FROM a;
select * from a,b;
操作符名称 | 语法 | 描述 |
---|---|---|
AND 或 && | a AND b 或 a && b | 逻辑与,同时为真才为真 |
OR 或|| | a OR b 或 a || b | 逻辑或,一个为真则为真 |
NOT 或! | NOT a 或 !a | 逻辑非,若操作数为假,结果则为真 |
IS NULL | a IS NULL | 若操作符为NULL,则结果为真 |
IS NOT NULL | a IS NOT NULL | 若操作符不为NULL,则结果为真 |
BETWEEN | a BETWEEN b AND c | 若a范围在b与c之间则结果为真 |
LIKE | a LIKE b | SQL模式匹配,若a匹配b,则结果为真,其中通配符% 代表0或多个字符,_ 代表一个字符 |
IN | a IN (a1,a2,a3,….) | 若a等于a1,a2…中的某一个,则结果为真 |
exists | exists(select * from a) | 只要子句中结果大于等于1行则结果就为真 |
ASC
,降序:DESC
count()
返回不同的非NULL值数目,如count(*),count(1),count(字段)sum()
求和max()
求最大值min()
求最小值avg()
求平均值group_concat()
返回一个带有来自一个组的连接的非NULL值的字符串结果,为组内字符串连接注:SQL标准要求having子句必须引用group by 子句中的列或用于聚合函数中的列
limit 起始位置, 获取条数
limit 获取条数
(表示直接从第一条数据(索引为0)开始)SELECT ... UNION [ALL|DISTINCT] SELECT ...
Union [DISTINCT]:distinct为默认方式可不写,对两个结果集进行并集操作,不包括重复行即返回所有行都是唯一的,同时进行默认规则的排序;
Union All:对两个结果集进行并集操作,包括重复行,不进行排序;注:建议对每个select查询加上小括号.需要各select查询的字段数量一样,即每个select查询的字段列表(数量,类型)应该一致,因为结果中的字段名以第一条select语句为准
1)from型
from要求后面是一个表,必须给子查询结果取个别名,简化每个查询内的条件 例如:select * from (select * from a where id>0) b;
2)where型 子查询返回一个值不需要给子查询取别名 例如:select * from a where money = (select max(money) from a);
3)列子查询 使用in或not in子查询,查询结果返回单列 使用exists和 not exists条件,返回1或0,常用于判断条件,例如:select column1 from t1 where exists (seelct * from t2);
1)内连接(inner join)
默认就是内连接,可省略inner 只有数据存在时才可发送连接请求,即连接结果不能出现空行,on表示连接条件,其表达式与where类似 2)交叉连接(cross join) 没有条件的内连接,例如:select * from a cross join b;
3)外连接(outer join) 如果数据不存在,也会出现在连接结果中包括左外连接和右外连接 注:可省略outer,但不能省略left或right,在关键字左边的为左表,在右边的为右表
转载地址:http://ucjxi.baihongyu.com/