package mysql;
public class mysql {
// \G
//unsigned只能用于数字类型
//停止 启动mysql net start mysql net stop mysql
//登陆退出mysql
//退出 exit quit \q
//显示版本 select version()
//显示日期 select now()
//显示当前用户 select user()
//创建数据库create database 数据库名
//查看数据库 show databases
//创建其他编码格式的数据库 create database if not exists 数据库名 default character set gbk
//查看show create database 数据库名
//修改数据库 alter database 数据库名 default character set 编码名
//删除数据库 drop database (if exists) 数据库名
//mysql默认端口3306 超级用户root
//数据类型 整型tinyint smallint mediumint int bigint
//浮点float单精度(精确大约七位小数) double双精度
//日期时间型 YEAR(1970-2069) TIME DATA DATETIME TIMESLEEP(1970-2037)
//字符型CHAR(M)(定长) VARCHAR(M)(变长) TINYTEXT TEXT MEDIUMTEXT longtext ENUM(value1,value2)(枚举) SET集合(最多64个)
//数据表 1.打开数据库(use 数据库)
//显示当前打开的数据库 select database()
//查看数据表 show tables(from 数据库名)
//创建数据表 create table(if not exists) 数据表名(列名 数据类型(大小),列名 数据类型(unsigned),...)
//查看数据表结构 show columns from 数据表名
//插入记录 insert into 数据表名 [(字段名)]values(val1,val2);
//记录查找 select expr,... from 数据表名 select * from 数据表名 全部查找
//空值与非空 null字段可空 not null禁止空 数据表名(列名 数据类型(大小) not null
//自动编号 auto-increment 自动编号,必须定义为主键 默认起始值为1,每次增量1
//主键primary key 默认not null m每张数据表只有一个
//id int(10) auto-increment primary key
//唯一约束unique key 一张表可以存在多个,可以存在空值
//默认约束default 如果没用明确为字段赋值 则自动赋予默认值
//约束(表级约束和列级约束)
//外键约束 foreign key 保持数据一致完整 数据表存储引擎必须为INNODB
//外键列和参照列必须具有相似的数据类型
//外键列和参照列必须创建索引
//外键 foreign key (本表某列名) references 外面的数据表(外置的数据表的某个列名)
//外键必须保证数据类型相同 长度相同等
//外键列和参照列必须创建索引
//外键约束的参照操作
//1.cascade 从父表删除或更新时同时自动删除或更新字表中匹配的行
//2.set null 从附表删除或更新行,并设置子表中的外键列为null
//3.restrict 拒绝对父表的删除或更新操作
//4.no action标准sql关键字 在mysql中与restrict相同
//添加单列 alter table 数据表名 add[column]列名 列定义 [first|after 某个列名]ca
//列名 数据类型 数据大小或者unsigned (default) not null primary key
//添加多列 alter table 数据表名 add [column] (列名 列定义,列名 列定义)
//添加多列不能指定位置关系 多列要加括号
//删除列 alter table 数据表名 drop[column] 列名
//删除多列alter table 数据表名 drop 列名,drop 列名
//添加主键约束alter table 数据表名 add [constraint[symbol]]primary key[index_type](index_col_name主键名)
//添加唯一约束alter table 数据表名 add[constraint[symbol]] unique [index|key][index_name][index_type](index_col_name)
//唯一约束 alter table 数据表名 add UNIQUE (列名即为唯一约束名)
//添加外键约束alter table 数据表名 foreign key(外键名) references 父表名(父表某列名)
//添加/删除默认约束 alter table 数据表名 alter 要修改的那一列名 set default 某个值
//atler table 数据表名 alter 列名 drop default
//删除主键约束 alter talbe tablename drop primary key
//删除唯一约束 alter table tablename drop index 约束名
//删除的是约束不是字段
//删除外键约束 alter table tablename drop foreign key 外键约束名
//修改列定义和更名数据表 alter table tablename modify 列名 smallint unsigned not null first 修改位置
//修改列定义就是加modify 大类型改小类型有可能造成数据丢失
//修改列名称 alter table tablename change old列名 new列名 新列定义 [first|after 列名]
//修改数据表名alter table tablename rename new 新表名
//修改数据表名方法2 rename table tablename to 新表名
//尽量少修改表名 列名
//记录操作
//插入记录 insert into 数据表名(列名称)values() 如果省略列名,所有都要赋值
//插入可以写入数学表达式
//插入记录2 insert (into) 数据表名 set 列名='具体值',
//插入记录3 insert 数据表名 列名 select
//update tablenames set 列名=某个值
//单表更新 update 数据表名 set age=age+5;
//update tablenames set age=age-id,sex=0;
//undate tablenames set age=age+10 where id%2=0;
//删除记录(单表删除) delete from tablenames [where 条件]如果没用条件 全部删除
//select_expr
//select 列名1,列名2 from 表名 select *from tables
//多个表 select 表名.列名 from table
//AS字段的别名 select id as userid, username as 1 from tablenames
//查询结果分组group by asc升序 desc降序
//查询分组结果 select 列名 from tablenames GROUP BY 列名
//分度条件HAVING where_condition
//分组条件必须为聚合函数 或者having的条件写在select里
//分组条件 select 列名,having的列名 from tablenames GROUP BY 列名 having (列名+条件);
//对查询结果排序 order by select *from tablenames ORDER BY 列名 DESC; asc升序 desc降序
//限制查询结果返回的数量 select *from tablenames limit 2;
//limit a,b 第一个位置是0 从a开始查 查b条
//插入记录 查询结果写入指定表 insert 要插入的表 select 列名 from 有记录的表
//子查询,连接 子查询就是一个条件 写在括号里
// set names gbk; 把utf8变成gbk
//子查询 1.比较运算符= > < select avg(good price) from tablenames
//ANY= SONME 符合一个 ALL全部符合
//select 列1 from tablenames where > any (select price from tablenames)
//子查询2 IN NOT IN !ALL
//3 [not]exists
//INSERT...SELECT插入记录 将查询的结果写入数据表 insert tablenames[列名] select 列名 from tablenames group by 列名
//多表更新 连接类型 1.inner join 内连接 update tablenames inner join tablenames2 ON tablenames里的列1=tablenames2里的列2 set 条件
//多表更新(高级)create select 创建数据表的同时将查询结果写入数据表
//create table[if not exists]tablenames []
//create table tablenames(字段名 条件等)select 列名 from tablenames2 group by 列名;
//连接语法结构 tablenamesA as 别名 连接类型(例如inner join) tablenamesB ON 连接条件
//内连接 inner join==join=cross join
//左外连接 left join
//右外连接 right join
//用ON关键字来设定连接条件 也可以where
//内连接 仅显示符合两个表条件的内容 a交b
//内连接 select 列1 表1.列2from talbenamesA inner join tablenamsB ON 表1.字段名=表2.字段名 两个字段名相同 连接两个表
//外连接outer join 左外:显示左表全部和右表符合条件的
//右外连接:显示右表全部和左表中符合条件的
//多表连接 同理
//无限极分类表设计(分类id 分类名称 父类id)
//自身连接
//多表删除
//字符函数 concat()字符连接! concat_ws() select concat('','',...) select concat(列1,列2)from tablenames as 别名
//concat_ws 多一个分隔符 select concat_ws('分割符','','')
//format数字格式化 select format(12312313.12441,n) 保留小数点后n位
//lower() upper() 大小写转换 select lower('MMYSQL')
//left() right() 左侧右侧开始获取 select left('字符',需要的数量)
//length() 获取字符串长度 包含空格 必须是字符串要加引号
//ltrim()删除第一个字符之前的空格
//rtrim()删除最后一个字符后的空格
//Trim() 删除所有空格 删除某些特定的字符串 select trim(leading'a'from'abca')删除前导指定字符
//select trim(traiing'a' from'abca' ) 删除指定后导字符
//select trim(both'a'from'abca') 删除指定前导和后导字符
//replace()字符串替换 select replace('avaad','a','A') a为需要替换的 A为替换成的
//substring() 字符串截取 select substring('字符串',截取位置,截取数量) 截取位置从1开始 最后一个位置是-1
//[not]like select'mysql' like 'M%' 1是true 'escape'
//%代表任意字符 _代码任1个字符
//数值运算符和函数
//ceil() 进一取整 select csil(3.01) floor()向下取整
//div 整数除法 select 3 div 4 结果只取整数部分
//mod 取余数 select 5%3 =select 5mod 3
//power 幂运算 select power(3,2)=9
//round()四舍五入 round(3.652,1)=3.7 round(3.652,0)=4
//truncate()数字截取 select truncate(125.89,1)=125.8 截取小数位数 select(125,-1)截取第一位数 负数代表小数点左边
//比较运算符 [not]between...and... select 35 between 45 and 50; 1=true 0=false
//[not[ in() 是否在列出值范围内 select 10 in(10)true select 5 in (1,2,3) false
//is[not]null 是否为空 select 10 is null select null is null
//select * from test where first is null;
//日期时间函数 now()打印当前日期时间 curdate()当前日期 curtime()当前时间
//date_add()日期增加减少 select date_add('2014-3-12',interval 365day) select date_add('2014-3-12', interval 356year) week
//dateiff()得到两个日期之间差 select datadiff('日期1','日期2')
//date_format()日期格式化 select date_format('2014-3-12','%m/%d/%Y')
//信息函数 select datebase() 返回当前数据库
//connection_id() 返回连接id
//last_insert_id() 最后插入记录的id号
//select version() 版本信息
//select user() 返回当前用户
//聚合函数:只有一个结果 avg() count() max() min() sun()
//select count(列名)from tablenames
//加密函数 MD5() PASSWORD()
//select MD5('ADMIN') SELECT PASSWORD('ADMIN')
//修改数据库密码 select password=password(' ')
//自定义函数必要条件 参数(<1024),返回值
//create FUNCTION functionname RETURNS 返回值类型 return 任意合法sql语句
//create function f1() returns varchar(30) return date_format(now(),'%Y年%m月%d日 %H点:%i分:%s秒')
//函数有中文时 set names gbk;
//删除自定义函数 drop function 函数名;(函数名后不要括号)
//带有参数的自定义函数
//create function f1(n1 smallint unsigned,n2 smallint unsigned)
//returns float(10,2)unsigned 10代表最大位数 2代表小数点后位数
//return num1+num2;
}