记录少许mysql杂乱语法

一、初始mysql
启动数据库语法:net start mysql
停止数据库语法:net stop mysql
连接数据库语法:mysql -h(数据库服务[可以省略] -u (用户名) -p(密码))
-----------------------------------------------------------------------------------------------------------------------------------
重点:
1、它可以修改一张表的所有字段的编码格式:
alter table `tablename` convert to character set utf8;
2、修改表的编码格式的:
ALTER TABLE `table` DEFAULT CHARACTER SET utf8; 
------------------------------------------------------------------------------------------------------------------------------------
1、创建数据库:create database 数据库名;
2、查看数据库列表:show databases;
3、选择数据库:use 数据库名;
4、删除数据库:drop database 数据库名;
5、创建表:create table `数据库名`(
 字段1 数据类型【字段属性||约束】【索引】【注释】,
 字段2 数据类型【字段属性||约束】【索引】【注释】,
 .....s
);
6、非空约束:not null
7、默认约束:default
8、唯一约束:unique key(uk)
9、主键约束:primary key(pk){
 1>、单字段主键:
 create table student(
  `studentNo` INT(4),
  ...
  primary key('id')
 )
 2>、多字段主键
 create table[if not exists] 表名(
  ...
  primary key('id','name');
 );
}
10、外键约束:foreign key(fk)
11、自动增长:auto_increment
12、注释:comment{
 字段注释:comment '尼玛',
 表注释:comment = '信息表';
}
13、设置无符号:unsigned
14、编码格式设置:charset = 字符集名
15、查看表:{
 查看mysql数据库中的所有表:show tables;
 单独查看:desc 表名 或者 describe 表名
}
16、删除表:drop table [if exists] 表名;
二、高级查询(一)
1、修改表名:alter table <旧表名> rename[to] <新表名>;
2、添加字段:alter table 表名 add 字段名 数据类型 [属性];
3、修改字段:alter table 表名 change 原字段名 新字段名 数据类型 [属性];{
 注意:数据类型 不能为空
}
4、删除字段:alter table 表名 drop 字段名;
5、添加主键:alter table 表名 add constraint 主键名 primary key 表名(主键字段){
 例如:alter table `grade` add constraint  `pk_grade` primary key `grade` (`gradeid`)
}
6、添加外键:alter table 表名 add constraint 外键名 foreign key (当前表外键字段)references 关联表名(关联字段){
 例如:alter table `student` add constraint fk_student_grade foreign key(`gradeId`) references `grade`(`gradeId`)
}
三、DML语句回顾
1、插入单行数据:
insert into 表名 [(字段名列表)] values (值列表);
2、插入多行数据:
insert into 表名 [(字段名列表)] values (值列表),(值列表),(值列表);
3、将查询结果插入到新表{
 1)、句式1:
  insert into 新表(字段1,字段2,...)
  select 字段1,字段2,...
  from 原表;
 2)、句式2:
  select 字段1,字段2,...
  into 新表
  from 原表(在mysql中不支持)
  mysql中相同功能:
  create table 新表 (select 字段1,字段2,...from 原表);
}
4、更新数据记录:update 表名 set 字段1 = 值1,字段2 = 值2 [where 条件];
5、删除数据记录:{
 delete from 表名 [where 条件];
 删除所有记录:
 truncate table 表名;
}
6、limit子句
语法:
select [字段名列表]
from [表名或视图]
where [查询条件]
group by [分组的字段名]
having[用来筛选分组之后的条件]
order by [排序的列名 [ASC 或 DESC]]
limit [位置偏移量,]行数];

四、常用函数
1)、聚合函数:
avg(): 返回某字段的平均值。
count(): 返回某字段的行数。
max(): 返回某字段的最大值。
min(): 返回某字段的最小值。
2)、字符串函数:
concat(str1,strl..,strn) :连接字符串str1,str2..strn为一个完整字符串。 例如:select concat('my','s','ql');返回:mysql
insert(str,pos,len,newstr):将字符串str从pos位置开始,len个字符长的子串替换为字符串newstr。
lower(str):将字符串str中所有字符变为小写。
upper(str):将字符串str中所有字符变为大写。
substring(str,num,len):返回字符串str的第num个位置开始长度为len的子字符串。
3)、时间日期函数:
curdate():获取当前日期。
curtime():获取当前时间。
now():获取当前日期和时间。
week(date):返回日期date为一年中的第几周。
year(date) :返回日期date的年份。
hour(time):返回时间time的小时值。
minute(time):返回时间time的分钟值。
datediff(date1,date2):返回日期参数date1和date2之间相隔的天数。
adddate(date,n):计算日期参数data加上n天后的日期。
4)、数学函数:
ceil(x):返回大于或等于数值x的最小整数。
floor(x):返回小于或等于数值x的最大整数。
rand():返回0~1间的随机数。
五、子查询
select ·····from 表1 where 字段1 比较运算符 (子查询);
注意:将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个。
六、in和not in子查询
1)、in子查询:
只需将‘=’换成‘in’。
in后面的子查询可以返回多条记录。
2)、not in子查询:
用来查询否定的结果。

七、事务
1)、开始事务:begin 或者 start transaction
2)、提交事务:commit;
3)、回滚事务:rollback;
注释:set names gbk;//设置结果集以gbk编码格式显示
5)、设置自动提交关闭或开启
set autocommit = 0;//关闭
set autocommit = 1;//开启
八、视图
1)、如何创建视图:
create view 视图名(实例名:view_...)
as