个人总结的mysql基础语句(包括视图、函数、子句等)

很多初学者可能跟我一样在刚接触SQL语句的时候想勤加练习却总是忘记语句格式,为了解决这个让人非常恼火的事情所以我决定,尽可能将所有的 ddl dml dql dcl 语句包括MySQL函数详细的列出来,以供后来的新手们学习。

话不多说 让我们进入到 MySQL的世界

1  --进入mysql
2  mysql -u root -p 
3 
4  --停止mysql 
5  net stop mysql
6 
7  --开启mysql
8  net start mysql
 1  --创建数据库
 2  create database shop character set utf8 collate utf8_general_ci;
 3 
 4  --删除数据库
 5  drop database shop;
 6 
 7  --查看当前数据库链接进程情况
 8  show processlist;
 9 
10  --修改数据库   *只能修改字符集或者校验规则*
11  alter database shop character set gbk collate gbk_general_ci;
12 
13  --备份数据库
14  --在默认指令下
15  mysqldump -u root -p  shop>c:/mysql.sql
16 
17  --恢复数据库 *单库*
18create database shop1;
19use shop1;
20  --在mysql指令下
21  ③source c:/mysql.sql;
22  ④show tables; -- *查看数据是否完整*
23 
24  --备份指定数据库的某张表
25  mysqldump -u root -p  shop(数据库名) goods(表名)>c:/mysql_goods.bak
26 
27  --恢复表 *跟单库恢复一样*
28  source c:/mysql_goods.bak;
29 
30  --一次备份多个库
31  mysqldump -u root -p -B shop(数据库一) shop1(数据库二) > c:/mysql.bak
32  
33  --恢复多个库备份
34  source c:/mysql.bak;
 1  --创建表
 2  create table goods(
 3     id int not null unsigned auto_increment default 0 primary key
 4     name varchar(32) not null,
 5     class_id int(6) zerofill
 6  )character set utf8 engine=myisam;
 7 
 8  --enum(枚举) set(集合)
 9  create table people(
10     id int not null unsigned auto_increment default 0 ,
11     name varchar(32) not null,
12     sex enum('','') not null,
13     hobby set('打球','玩游戏','跑步','开车')  not null
14  )character set utf8 engine = innodb;
15 
16  --添加数据
17  insert into people values(1,"张三","男","玩游戏,开车,跑步");
18 
19  --set   enum数据查找
20  select * from shop where sex="男";
21  select * from shop where find_in_set('泡妞',hobby);
22 
23  --存放 图片 视频 音频等文件
24  create table shop2(
25     img varchar(64) not null "/imgs/01.jpg"
26  )charset=utf8 engine=innodb;
27 
28  --插入
29  insert into shop2 values('imgs/abc.jpg');
30 
31  --联系创建一张学生信息表
32  create table stu_info(
33     id int unsigned not null auto_increment default 0,
34     name varchar(32) not null,
35     sex enum('','','不知道')  not null,
36     brithday date not null,
37     entry_day date not null,
38     job varchar(32) not null,
39     salary decimal(10,2) not null,
40     resume text not null
41  )charset=utf8 engine=innodb;
1  --**********************************         mysql 用户管理          ***************************************
2  create user "用户名"@"主机名" identified by "密码"     创建mysql用户
3  drop user "用户名"@"主机名";         删除用户
4  set password = password("密码");     给自己修改密码
5  set password for "用户名"@"主机名" = password("密码");    给别人修改密码
6 
7  grant 权限列表 on 库.表名 to "用户名"@"主机名" ;      给权限
8  revoke 权限列表 on 库.表名 from "用户名"@"主机名"    回收权限
9  show grant for "用户名"@"主机名";               查看有什么权限
1  --************************************ 视图***************************************
2  create view 视图名 as select 语句      创建视图
3  drop view 视图名                                     删除视图
4  alter view 视图名 as select 语句         修改视图
 1 --**********************************         表          ***************************************
 2  --修改表
 3  --修改表之增加列    *后可跟 after 排在那个列之后*
 4  alter table stu_info(表名) add hobby(新加列名) set('游泳','戏水','跳舞') not null after sex ;
 5  --修改表之删除列
 6  alter table stu_info(表名) drop hobby(列名);
 7  --修改表之修改列
 8  alter table stu_info(表名) change hobby(旧列名) hob(新列名) set('赌博','抽烟') not null;
 9  --修改表之增加主键
10  alter table stu_info(表名) add primary key (增加主键的列);
11  --修改表之删除主键
12  alter table stu_info drop primary key;
13  --修改表之删除外键
14  alter table stu_info drop foreign  key(外键名);
15  --修改表之增加索引
16  alter table stu_info add (index/unique) (索引名/列名);
17  --修改表之删除索引
18  alter table stu_info drop index (索引名);
19  --修改表之清空表数据
20  truncate table stu_info;
21  --修改表之更改表名  
22  rename table stu_info to stu;
23  --修改表之更改字符集
24  alter table stu_info charset = gbk;
25  
26  --查看表结构
27  desc stu_info;
28  show create table stu_info;
 1  --**********************************         数据         ***************************************
 2  --添加数据
 3  insert into stu_info values(1,"张三","男","吃饭,打架",'2016-03-04','2014-03-04','能吃能打能睡觉');
 4  --修改数据
 5  update stu_info(表名) set name="李四"(修改的字段/值) where(通过条件找到更改的数据) id =1 ;
 6  --删除数据
 7  delete from stu_info(表名) where(通过条件找到删除的数据列) id = 1;
 8  --查询数据
 9  select distinct(去重复) * from stu_info;
10 
11  --查询数据可以带运算
12  select (salary = salary*3) from goods;
13  --查询数据可以起别名
14  select (salary = salary*3) as sal  from goods;
15  --查询数据可以有函数
16  select avg(salary) as avg_sal from goods;
1  --**********************************         where子句         ***************************************
2  --条件过滤
3  select * from stu_info where id =1;
4  --可以使用and or not
5  select * from goods where sal > 1500 and id <4;
6  select * from goods where sal>500 or sal <2000;
7  select * from goods where not (sal > 100);
8  --可以使用 between ... and ... 显示某一区间的值
9  select sal from goods where sal between 500 and  2000;
1  --**********************************         order by子句         ***************************************
2  --排序   *desc 降序  asc 升序*
3  select * from stu order by yuwen;
1  --**********************************         group by子句         ***************************************
2  --分组统计 *对于分组统计后的数据用having 过滤  *
3  select * from stu group by yuwen;
4 
5  select deptno,avg(sal) as avg_sal from emp group by deptno having avg_sal<2000;
1  --**********************************         like子句         ***************************************
2  --%表示任意0到多个字符
3  select * from stu where name like "王%";
4  -- _ 表示任意单个字符
5  select * from stu where name like "_三%";
 1   --**********************************         聚合函数        ***************************************
 2  --count() *记录满足条件的记录数 count(*)统计所有 count(列名) 不会统计null值*
 3  select count(*) from stu;
 4  select count(*) from stu where yuwen>50;
 5 
 6  --sum() *记录总和  sum(列名)  ()内不能用*  null+任何值都为null  *
 7  select sum(yuwen) from stu;
 8 
 9  --avg() *记录平均值 ()内不能为*  *
10  select avg(yuwen) from stu;
11 
12  --max(最大值)/min(最小值)
13  select max(yuwen) from stu;
14  select min(yuwen) from stu;
 1  --**********************************         日期函数        ***************************************
 2 
 3  --current_date() *查询当前日期 显示年月日*
 4  select current_date();
 5  --current_time() *查询当前时间 显示时分秒*
 6  select current_time();
 7  --current_timestamp() *查询当前时间戳 显示当前年月日时分秒*
 8  select current_timestamp();
 9  --now() *获取当前时间 显示年月日时分秒*
10 
11  --date *返回datetime的年月日部分*
12  date(datetime)
13  --date_add(date,interval val typ)  *在date时间上加上val,typ是val的类型 可以是 年 月 日 时 分 秒*
14  date_add(now(),interval 10 day);
15  --date_sub(date,interval val typ) *在date时间上减去val, typ是val的类型 可以是 年 月 日 时 分 秒*
16   date_sub(now(),interval 10 day);
17  --datediff(date1,date2) *date1和date2的差 返回值类型为 天*
18  datediff(now(),  date_sub(now(),interval 10 day))
19 
20  --timediff(date1,date2) *date1和date2的时间差 返回值是 多少时多少分多少秒*
21  timediff(now(),date_sub(now(),interval 10 minute));
22  --year/month/day/date(datetime) *返回  年/月/日/年-月-日*
23  year(now());  month(now()); day(now()); date(now());
24 
25  --unix_timestamp() *返回一个 1970-1-1 0:0:0 到现在时间的一个时间戳 秒*
26  select unix_timestamp();
27  --from_unixtime(val,格式) *将val转换成一个你想要的时间格式  val是秒数,格式由程序员自己定  %Y-%m-%d %h-%i-%s *
28  select from_unixtime(unix_timestamp(),'%Y-%m-%d');
 1  --**********************************         字符串函数       ***************************************
 2  --charset(str) *返回字符集*
 3  select charset('abc');
 4  --concat(str str str) *链接字符串*
 5  select concat(name,"语文分数是",yuwen) from stu_info;
 6  --ucase(str)/lcase(str)   *转换成大写/小写*
 7  ucase("abc");    lcase("ABC");
 8  --length(str) *计算str的长度 单位 字符*
 9  length('abc')
10  --replace(str,str1,str2) *把str里面的str1换成str2*
11  replace("abc",b,d);
12  --substring(str,val,val2) *在str里 从val开始截取val2个字符 val,val2为整数*
13  substring("abcdefg",2,4);
 1  --**********************************         数学函数       ***************************************
 2  --abs(int) *求int的绝对值*
 3  abs(-90);
 4  --ceiling(num) *向上求num的整数*
 5  ceiling(34.1456);      35
 6  --floor(num) *向下求num的整数*
 7  floor(34.1456);          34
 8  --format(num,val) *保留小数位数    val是小数后保留几位*
 9  format(78.329,2);      78.33
10  --mod(num1,num2) *求num1和num2的余数*
11  mod(10,3)                  余 1
12  --rand()  *返回一个随机数 范围是 0到1.0*
13  select floor(rand()*100);
--**********************************         流程控制函数       ***************************************
 --if(ex1,ex2,ex3) *如果ex1为真那么返回ex2否则返回ex3*
 if(0==0,1,2);
 --ifnull(ex1.ex2) *如果ex1不为null返回ex1 否则返回ex2*
 ifnull(null,0);
 --case   when ex1  then ed1 else ed2 end *ex1为条件,ed为表达式*
 select case
 when sal<100 then sal*10
 else sal
 end
 1  --**********************************         其他函数       ***************************************
 2  --user() *查看当前用户*
 3  select user();
 4  --database() *查看当前使用的是那个数据库*
 5  select database();
 6  --md5() *加密方式*
 7  md5("abc");
 8  --password *加密方式*
 9  password("abc");
10  --mysql_num_fields() *取得结果集中字段的数量*
11  --mysql_field_name() *取得结果中指定字段的字段名*
1  --**********************************         查询加强--多表多条件查询       ***************************************
2  --
3 select avg(sal),deptno
4 from emp
5 group by deptno;
1  --事物 
2  --开启事物
3  start transaction
4  -- 自动提交关闭
5  set autocommit=false;
6  --设置保存点
7  savepoint  名称
8  --退回
9  rollback to 名称
1  --**********************************        limit  分页查询     ***************************************
2  --先设定好 每页显示的条数  $pagesize=10;
3  --在计算好从第几条开始显示 (你要取出第几页的数据 -1) * 每页显示的条数     $pagenow 代表你要取出第几页的数据
4  ($pagenow-1)*$pagesize,$pagesize
5  select * from emp limit 8,4;

 转载请注明出处  原文博客:http://www.cnblogs.com/we-jack/

版权声明:本文为we-jack原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/we-jack/p/8340956.html