MySQL 
 services.msc命令行打开系统服务 或者控制面板服务 
 第二种方式DOS打开服务 管理员权限打开CMD net start/stop mysql 
 mysql -h服务器主机地址 -u用户名 -p密码结构化查询语言SQL structured query language 
 DML数据操作语言 用来操作数据库中所有包含的数据 insert update delete 
 DDL 数据定义语言 用于创建和删除数据库对象等操作 create drop alter 
 DQL 数据查询语言 用于对数据库中的数据进行查询 select 
 DCL 数据控制语言 用来控制数据库组件的存取许可,存取权限的等 crant commit rollback 
 SQL也存在运算符 跟java类似 
 赋值运算符 set@name=’王华’ 
 逻辑运算发 AND OR NOT 
 算术运算符 + -* / % 
 比较运算符 = > < >= <= (!= <> 都是不等于 ) 
 为减少数据查找的麻烦,允许数据有一定的冗余DDL 
 create database 数据库名; 创建数据库 以分号为结束符,不可缺 
 show databases 查看数据库列表 
 use 数据库名; 选择数据库 
 drop database 数据库名 ; 删除数据库MySQL数据类型–数值类型 
 TINYINT 非常小的数据 -2的七次方到2的七次方-1 有符号0–2的八次方-1SMALLINT 较小的数据 有符值: -215 ~ 215-1 无符号值: 0 ~ 216-1 2字节 
 MEDIUMINT 中等大小的数据 有符值: -223 ~ 223-1 无符号值: 0 ~ 224-1 3字节 
 INT 标准整数 有符值: -231 ~ 231-1 无符号值:0 ~ 232-1 4字节 
 BIGINT 较大的整数 有符值: -263 ~263-1 无符号值:0 ~264-1 8字节 
 FLOAT 单精度浮点数 ±1.1754351e -38 4字节 
 DOUBLE 双精度浮点数 ±2.2250738585072014e -308 8字节 
 DECIMAL 字符串形式的浮点数 Decimal(M,D) M+2个字节 
 UNSIGNED 标识为无符号数 
 ZWROFILL属性 宽度不足以0填充 如被指定自动添加UNSIGNED单行注释 – 单行注释(有一个空格) /**/多行注释
非空约束 NOT NULL 字段不允许为空 
 默认约束 DEFAULT 赋予某字段默认值 
 唯一约束 UNIQUE KEY(UK) 设置字段的值是唯一的 允许为空,且可以包含多个空值, 可设置为not null 为非空 
 主键约束 PRIMARY KEY(PK) 设置该字段为表的主键 可唯一标识该表记录 
 外键约束 FOREIGN KEY(FK) 用于在两表之间建立关系, 需要指定引用主表的哪一字段 
 自动增长 AUTO_INCREMENT 设置该列为自增字段 默认每条自增1 通常用于设置主键 
 charset=字符集名 
 set names ‘GBK’ 命令行告诉数据库给我gbk 避免乱码 
 desc 表名 查看表定义 
 DROP table 
 修改表名 alter table oldtable rename to newtable 
 添加字段 alter table 表名 Add 字段名 数据类型 [属性] 
 修改字段 alter table 表名 change 原字段名 新字段名 数据类型[属性] 
 删除字段 alter table 表名 drop 字段 
 添加主键 alter table 表名 add constraint (约束) [主键名] primary key 表名 (主键字段) 
 添加外键 alter table 表名 add constraint [外键名] foreign key (外键字段) references 
 关联表名 (关联字段) 
 like子句 查找包含某字符”com” %表示任意字符 like ‘%com’ 
 union 连接多个个查询语句 
 支持正则表达式 
 临时表 temporary table 当前连接可见 关闭连接 删除表 释放资源 
 char[m] 长度不足补充空格,浪费内存 
 存储引擎 九种 MyISAM InnoDB Memory CSV 
 MyISAM多由于全文检索 当表与表之间存在关联时InnoDB更加适合 
 show engines 查看数据库搜索引擎 
 insert into 表名 [(字段名列表)] values(值列表) 
 如果插入部分字段 那么字段名一定要写 且与值对应 
 从一张表中取数据,创建一个新表,把数据插入新表 只执行一次 因为这是创建表不能重复创建 
 create table newtable(select .. … … from table);从一个表中取数据,存入一个已经存在的表中(可执行多次数据冗余) 
 insert into tablename(select … … .. from tablename2);数据更新(千万别乱用 尽量条件约束) 
 update tablename set … … ..where 条件删除数据 
 delete from tablename 全部删除数据 
 delete from tablename where 条件 一条一删 产生日志 
 1 truncate table tablename 一次性全删除不产生日志 (删表再创建新表) 
 2 delete 和 truncate 都会保留表的结构(字段、索引、约束保持不变),delete不会重置自增列,truncate会重置自增列注意:一般数据库中数据不会真的删除,会假删除 
 数据中有一个字段,表示数据是否已经删除 0正常 1删除select * from tablename 查询所有列 
 select 字段1 as 别名,字段2 as 别名 from tablename 
 where 条件 
 as可以省略把查询出的数据 合并为一列 concat()函数 
 select concat(字段1,字符串,字段2,字段3) 
 +号适合int 相加 null的判断用的是is null 
 查询添加常量列 
 ,’要添加的’ as 别名 数据库不会改变这只是查询出来的注意以下函数基本上都是select时使用的!!!!!! 
 聚合函数 
 avg() 返回字段的平均值 
 count() 个数 * 0 1 都是一样的 
 max() 
 min() 
 sum() 
 合并一起写 
 select avg(),max(),…,from tablename字符串函数 
 concat()字符串连接 
 insert(“这是sql server数据库”,1,10,”mysql”) 字符串替换 
 14,0 是在14后面插入 
 lower()转为小写 
 upper()转为大写 
 substring(‘字符串’,5,5)截取 从5位置截取5个日期函数 
 curdate 当前日期 
 curtime 当前时间 
 now 当前日期和时间 
 week(时期) 当前第几周 
 year(时期) 
 hour(时期) 
 minute(时期) 
 datediff(date1,date1)两个日期相差的时间 
 adddate(add天数)数学函数 
 ceil 
 floor 
 rand() 返回0-1之间的随机数 
 order by 
 实现俺一定顺序显示查询结果 
 desc 降序asc升序 
 带条件排序 条件在排序前面 
 limit 显示输出分页 0偏移量 2取两条记录limit分页 3条记录一页 5条记录
子查询 
 一个查询里面嵌套另一个查询如果使用比较运算符子查询结果只能有一个值 
 in 子查询 查询结果可以使多个 
 not in 不在(取反in的) 
 Exists子查询 
 select …from 表名 while exists (子查询) 
 exists子查询结果为true 外层查询执行,查询结果为false则外层不查询 
 分组查询group by在where后面 
 分组后只能吧包含1,分组的列 2,聚合函数 
 多列分组 eg每个年级的男女人数 
 group by gradeId,sex; 
 分组筛选 having 
 where先进行判断,获得结果后0 group by进行分组 , having再对分组的信息进行过滤 
 多表查询 
 内连接 inner join(不区分主附表) 
 select * from a inner join b on判断条件 可以进行多个表内连接select * from a,b;(没有什么意义不适用) 
 外连接(区分主附表) 
 左外连接left join 只能两个表之间建立外表 
 右外连接right join