博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql基础语句
阅读量:5093 次
发布时间:2019-06-13

本文共 9259 字,大约阅读时间需要 30 分钟。

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

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

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

1、说明: --进入mysql

1  mysql -u root -p

2、说明: --停止mysql 

1 net stop mysql

3、说明:  --开启mysql

net start mysql

4、说明:  --创建数据库

1  create database shop character set utf8 collate utf8_general_ci;

5、说明:  --删除数据库

 
1  drop database shop;

6、说明: --查看当前数据库链接进程情况

1 show processlist;

7、说明: --修改数据库   *只能修改字符集或者校验规则*

1  alter database shop character set gbk collate gbk_general_ci;

8、说明:  --备份数据库 (注意 要在默认指令下输入命令)

mysqldump -u root -p  shop>c:/mysql.sql

9、说明:  --恢复数据库 *单库*

1  ①create database shop1;2  ②use shop1;3  ③source c:/mysql.sql;4  ④show tables; -- *查看数据是否完整*

10、说明: --备份指定数据库的某张表

1  mysqldump -u root -p  shop(数据库名) goods(表名)>c:/mysql_goods.bak

11、说明:  --恢复表 *跟单库恢复一样*

1  source c:/mysql_goods.bak;

12、说明: --一次备份多个库

1  mysqldump -u root -p -B shop(数据库一) shop1(数据库二) > c:/mysql.bak

13、说明: --恢复多个库备份

source c:/mysql.bak;

14、说明: --创建表

create table goods(    id int not null unsigned auto_increment default 0 primary key    name varchar(32) not null,    class_id int(6) zerofill )character set utf8 engine=myisam;

*说明: --enum(枚举) set(集合)  枚举类型近似单选 集合类型近似多选

1  create table people(2     id int not null unsigned auto_increment default 0 ,3     name varchar(32) not null,4     sex enum('男','女') not null,5     hobby set('打球','玩游戏','泡妞','赌博')  not null6  )character set utf8 engine = innodb;

15、说明: --添加数据

1  insert into people values(1,"张三","男","玩游戏,泡妞,赌博");2 3  --存放 图片 视频 音频等文件4  create table shop2(5     img varchar(64) not null "/imgs/01.jpg"6  )charset=utf8 engine=innodb;7 8  --插入9  insert into shop2 values('imgs/abc.jpg');

 --**********************************         mysql 用户管理          ***************************************

1  create user "用户名"@"主机名" identified by "密码"         --创建mysql用户2  drop user "用户名"@"主机名";                        --删除用户3  set password = password("密码");                   --给自己修改密码4  set password for "用户名"@"主机名" = password("密码");      --给别人修改密码5 6  grant 权限列表 on 库.表名 to "用户名"@"主机名" ;            --给权限7  revoke 权限列表 on 库.表名 from "用户名"@"主机名"          --回收权限8  show grant for "用户名"@"主机名";                       --查看有什么权限

 --************************************ 视图***************************************

1  create view 视图名 as select 语句      --创建视图2  drop view 视图名                                     --删除视图3  alter view 视图名 as select 语句         --修改视图

 --********************************** 表 ***************************************

1 --修改表 2  --修改表之增加列    *后可跟 after 排在那个列之后* 3  alter table stu_info(表名) add hobby(新加列名) set('游泳','戏水','跳舞') not null after sex ; 4  --修改表之删除列 5  alter table stu_info(表名) drop hobby(列名); 6  --修改表之修改列 7  alter table stu_info(表名) change hobby(旧列名) hob(新列名) set('赌博','抽烟') not null; 8  --修改表之增加主键 9  alter table stu_info(表名) add primary key (增加主键的列);10  --修改表之删除主键11  alter table stu_info drop primary key;12  --修改表之删除外键13  alter table stu_info drop foreign  key(外键名);14  --修改表之增加索引15  alter table stu_info add (index/unique) (索引名/列名);16  --修改表之删除索引17  alter table stu_info drop index (索引名);18  --修改表之清空表数据19  truncate table stu_info;20  --修改表之更改表名  21  rename table stu_info to stu;22  --修改表之更改字符集23  alter table stu_info charset = gbk;24  25  --查看表结构26  desc stu_info;27  show create table stu_info;

 --********************************** 数据 ***************************************

1  --添加数据 2  insert into stu_info values(1,"张三","男","吃饭,打架",'2016-03-04','2014-03-04','能吃能打能睡觉'); 3  --修改数据 4  update stu_info(表名) set name="李四"(修改的字段/值) where(通过条件找到更改的数据) id =1 ; 5  --删除数据 6  delete from stu_info(表名) where(通过条件找到删除的数据列) id = 1; 7  --查询数据 8  select distinct(去重复) * from stu_info; 9 10  --查询数据可以带运算11  select (salary = salary*3) from goods;12  --查询数据可以起别名13  select (salary = salary*3) as sal  from goods;14  --查询数据可以有函数15  select avg(salary) as avg_sal from goods;

 --**********************************  where子句 ***************************************

1  --条件过滤2  select * from stu_info where id =1;3  --可以使用and or not4  select * from goods where sal > 1500 and id <4;5  select * from goods where sal>500 or sal <2000;6  select * from goods where not (sal > 100);7  --可以使用 between ... and ... 显示某一区间的值8  select sal from goods where sal between 500 and  2000;

 --**********************************         order by子句         ***************************************

1  --排序   *desc 降序  asc 升序*2  select * from stu order by yuwen;

 --**********************************         group by子句         ***************************************

1  --分组统计 *对于分组统计后的数据用having 过滤  *2  select * from stu group by yuwen;3 4  select deptno,avg(sal) as avg_sal from emp group by deptno having avg_sal<2000;

--**********************************         like子句         ***************************************

1  --%表示任意0到多个字符2  select * from stu where name like "王%";3  -- _ 表示任意单个字符4  select * from stu where name like "_三%";

   mysql函数     

  --**********************************         聚合函数        ***************************************

1 --count() *记录满足条件的记录数 count(*)统计所有 count(列名) 不会统计null值* 2  select count(*) from stu; 3  select count(*) from stu where yuwen>50; 4  5  --sum() *记录总和  sum(列名)  ()内不能用*  null+任何值都为null  * 6  select sum(yuwen) from stu; 7  8  --avg() *记录平均值 ()内不能为*  * 9  select avg(yuwen) from stu;10 11  --max(最大值)/min(最小值)12  select max(yuwen) from stu;13  select min(yuwen) from stu;

 --**********************************         日期函数        ***************************************

1  --current_date() *查询当前日期 显示年月日* 2  select current_date(); 3  --current_time() *查询当前时间 显示时分秒* 4  select current_time(); 5  --current_timestamp() *查询当前时间戳 显示当前年月日时分秒* 6  select current_timestamp(); 7  --now() *获取当前时间 显示年月日时分秒* 8  9  --date *返回datetime的年月日部分*10  date(datetime)11  --date_add(date,interval val typ)  *在date时间上加上val,typ是val的类型 可以是 年 月 日 时 分 秒*12  date_add(now(),interval 10 day);13  --date_sub(date,interval val typ) *在date时间上减去val, typ是val的类型 可以是 年 月 日 时 分 秒*14   date_sub(now(),interval 10 day);15  --datediff(date1,date2) *date1和date2的差 返回值类型为 天*16  datediff(now(),  date_sub(now(),interval 10 day))17 18  --timediff(date1,date2) *date1和date2的时间差 返回值是 多少时多少分多少秒*19  timediff(now(),date_sub(now(),interval 10 minute));20  --year/month/day/date(datetime) *返回  年/月/日/年-月-日*21  year(now());  month(now()); day(now()); date(now());22 23  --unix_timestamp() *返回一个 1970-1-1 0:0:0 到现在时间的一个时间戳 秒*24  select unix_timestamp();25  --from_unixtime(val,格式) *将val转换成一个你想要的时间格式  val是秒数,格式由程序员自己定  %Y-%m-%d %h-%i-%s *26  select from_unixtime(unix_timestamp(),'%Y-%m-%d');

个人总结:在数据库中,日期和时间均采用相应的数据类型和特殊的格式存储,以便能快速和有效地排序或过滤,并且节省物理存储空间。 

--**********************************         字符串函数       ***************************************

1  --charset(str) *返回字符集* 2  select charset('abc'); 3  --concat(str str str) *链接字符串* 4  select concat(name,"语文分数是",yuwen) from stu_info; 5  --ucase(str)/lcase(str)   *转换成大写/小写* 6  ucase("abc");    lcase("ABC"); 7  --length(str) *计算str的长度 单位 字符* 8  length('abc') 9  --replace(str,str1,str2) *把str里面的str1换成str2*10  replace("abc",b,d);11  --substring(str,val,val2) *在str里 从val开始截取val2个字符 val,val2为整数*12  substring("abcdefg",2,4);

 --**********************************         数学函数       ***************************************

1  --abs(int) *求int的绝对值* 2  abs(-90); 3  --ceiling(num) *向上求num的整数* 4  ceiling(34.1456);      35 5  --floor(num) *向下求num的整数* 6  floor(34.1456);          34 7  --format(num,val) *保留小数位数    val是小数后保留几位* 8  format(78.329,2);      78.33 9  --mod(num1,num2) *求num1和num2的余数*10  mod(10,3)                  余 111  --rand()  *返回一个随机数 范围是 0到1.0*12  select floor(rand()*100);

 --**********************************         流程控制函数       ***************************************

1  --if(ex1,ex2,ex3) *如果ex1为真那么返回ex2否则返回ex3*2  if(0==0,1,2);3  --ifnull(ex1.ex2) *如果ex1不为null返回ex1 否则返回ex2*4  ifnull(null,0);5  --case   when ex1  then ed1 else ed2 end *ex1为条件,ed为表达式*6  select case7  when sal<100 then sal*108  else sal9  end

 --**********************************         其他函数       ***************************************

1  --user() *查看当前用户* 2  select user(); 3  --database() *查看当前使用的是那个数据库* 4  select database(); 5  --md5() *加密方式* 6  md5("abc"); 7  --password *加密方式* 8  password("abc"); 9  --mysql_num_fields() *取得结果集中字段的数量*10  --mysql_field_name() *取得结果中指定字段的字段名*

 --**********************************        limit  分页查询     ***************************************

1  --先设定好 每页显示的条数  $pagesize=10;2  --在计算好从第几条开始显示 (你要取出第几页的数据 -1) * 每页显示的条数     $pagenow 代表你要取出第几页的数据3  ($pagenow-1)*$pagesize,$pagesize4  select * from emp limit 8,4;

 --**********************************         查询加强--多表多条件查询       ***************************************

1 select avg(sal),deptno2 from emp3 group by deptno;

 --事物 

1  --开启事物2  start transaction3  -- 自动提交关闭4  set autocommit=false;5  --设置保存点6  savepoint  名称7  --退回8  rollback to 名称
  • 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
  • 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
  • 事务用来管理 insert,update,delete 语句

一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性

  • 1、事务的原子性:一组事务,要么成功;要么撤回。
  • 2、稳定性 :有非法数据(外键约束之类),事务撤回。
  • 3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
  • 4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit 选项 决定什么时候把事务保存到日志里。

总结说明:在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。因此要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。

转载于:https://www.cnblogs.com/we-jack/p/8351802.html

你可能感兴趣的文章
java 中的线程(一)
查看>>
秒杀9种排序算法(JavaScript版)
查看>>
素数判断BFS之“Prime Path”
查看>>
Activiti入门 -- 环境搭建和核心API简介
查看>>
struts.convention.classes.reload配置为true,tomcat启动报错
查看>>
IOS push消息的数字不减少的问题
查看>>
mysql报错Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage
查看>>
MySQL的并行复制多线程复制MTS(Multi-Threaded Slaves)
查看>>
Django中间件
查看>>
javascript 简单实现对两个数组相似度的检验
查看>>
017. ADO.NET Connection和command及DataReader
查看>>
mysql导入导出.sql文件备份还原数据库[mysql导入导出sql命令行] .
查看>>
Rational Rose 2007 安装
查看>>
Coding配合git使用时遇到的问题
查看>>
java 字体+颜色综合使用示例
查看>>
ios开发之级联菜单(两个tableView实现)
查看>>
tft屏图像文字一起显示
查看>>
java 泛型
查看>>
第六章函数和宏定义
查看>>
杨森翔的书法-19
查看>>