设为首页 收藏本站
查看: 1251|回复: 0

[经验分享] 常用SQL语句(Mysql)总结

[复制链接]

尚未签到

发表于 2018-10-22 11:09:24 | 显示全部楼层 |阅读模式
  1.库
  1)创建数据库:create Database  database_name;
  database_name:(1)首字母不能是数字、$、空格、特殊字符、保留字
  (2)最大128字节
  (3)由字母、数字、下划线、@和$组成
  2)查看数据库:show databases;
  3)选择数据库:use  database_name ;
  4)删除数据库:drop database  database_name;
  2.存储引擎
  1)查看所支持存储引擎:(1)show engines   (2)show variables like 'have%';
  2)查看默认的存储引擎:show variables like 'storage_engine%';
  3.表
  1)创建表:create table table_name (属性名数据类型…)
  2)查看表结构:
  (1)表定义信息:describe  table_name   desc table_name
  (2)表详细定义:show  create table  table_name
  3)删除表:drop table  table_name
  4)修改表(alter table):
  (1)修改表名:alter table  老表名 rename新表名
  (2)增加字段:(最后)alter table  表名 add 属性名属性类型
  (第一位置)alter table  表名 add 属性名属性类型 first
  (指定字段后)alter table  表名 add 属性名属性类型 after 属性名
  (3)删除字段:alter table  表名 drop 属性名
  (4)修改字段:
  (修改数据类型)alter table  表名 modify 属性名属性类型
  (修改字段名)alter table 表名change 旧属性名新属性名旧类型
  (同时修改)alter table 表名change 旧属性名新属性名新类型
  (修改字段顺序)alter table 表名modify 属性名1 数据类型 FIRSE|AFTER 属性名2
  4.数据操作
  1)插入数据
  (1)INSERT INTO  table_name(field1….field n) VALUES(value1…value n)
  (2)INSERT INTO  table_name (field1….field n)
  VALUES(value1…valuen)…(value11…value mn)
  (3)插入查询结果:INSERT INTO  table_name1 (field11….field 1n)
  SELECT  (field21….field 2n)
  FROM table_name2
  WHERE…
  2)更新数据:UPDATE table_name SETfield1=value1…fieldn=value n WHERE CONDITION
  3)删除记录:DELETE FROM  table_name  WHERE CONDITION
  5.单表数据查询
  1)SELECTfield1,field n FROM table_name
  2)避免重复查询:SELECT DISTINCT field1,field n FROM table_name
  3)四则运算:用AS定义别名,或省略AS关键字
  4)显示格式查询:SELECT CONCAT(field格式) 【AS 别名】FROM table_name
  5)条件数据查询:SELECT field1,field n FROM table_nameWHERE CONDITION
  _通配符:匹配单一字符
  %通配符:任意长度字符
  6)排序查询:SELECT field1,field n FROM table_nameWHERE CONDITION
  ORDER  BY filedldm1 [ASC|DESC] [,filedldm1 [ASC|DESC],]
  7)限制数据记录查询数量:SELECT field1,field n FROM table_nameWHERE CONDITION
  LIMIT  OFFSET_START,ROW_COUNT
  8)统计函数和分组数据记录查询:COUNT()函数、AVG()函数、SUM()函数、MAX()函数、MIN()函数
  9)分组数据查询:SELECT function() FROM table_nameWHERE CONDITION GROUP BY field
  10)实现统计功能的分组数据查询:SELECT GROUP_CONCAT(field)  FROMtable_nameWHERE CONDITION GROUP BY field
  11)多字段分组查询:SELECT GROUP_CONCAT(field), function(field)
  FROMtable_name
  WHERE CONDITIONGROUP BY field1,field2……fieldn
  12)HAVING子句限定分组查询:SELECT function(field)  FROM table_name
  WHERECONDITION
  GROUP BYfield1,field2……fieldn
  HAVINGCONTITION
  6.多表数据查询:
  1)FROM子句利用(,)区分多个表,在WHERE子句中通过逻辑表达式来实现匹配条件
  2)FROM子句用 ”JOIN ON”,ON后接条件
  7.操作表的约束
  1)设置非空约束(NOT NULL,NK):create table table_name (属性名类型 NOT NULL );
  2)设置字段默认值(DEFAULT):create table table_name (属性名类型 DEFAULT 默认值);
  3)设置唯一约束(UNIQUE,UK):create table table_name (属性名类型 UNIQUE L );
  4)设置主键约束(PRIMARY KEY,PK):
  单字段主键:create table table_name (属性名类型 PRIMARY KEY );
  多字段主键:create table table_name (属性名类型 ,…【CONSTRAINT 约束名】 PRIMARY KEY(属性名,属性名…) );
  5)设置字段值自动增加(AUTO_INCREMENT):
  create table table_name (属性名类型 AUTO_INCREMENT,… );
  6)设置外键约束(FOREIGNKEY,FK):
  create table table_name (属性名类型; 属性名类型;…
  CONSTRAINT 外键约束名 FOREIGN (属性名1)
  REFERENCES 表名(属性名2));
  8.索引
  1)创建普通索引
  (1) CREATE TABLE table_name (
  属性名数据类型,属性名数据类型,……属性名数据类型,
  INDEX |KEY 【索引名】(属性名1【(长度)】【ASC|DESC】));
  注:INDEX 或KEY参数用来指定字段为索引
  不同存储引擎定义了表的最大索引数和最大索引长度
  Mysql所支持的存储引擎对每个表至少支持16个索引,总索引长度至少256
  (2)CREATE INDEX  索引名
  ON 表名(属性名1【(长度)】【ASC|DESC】));
  (3)ALTERTABLE  table_name
  ADDINDEX | KEY 索引名(属性名1【(长度)】【ASC|DESC】)
  2)创建唯一索引
  (1)CREATE TABLE table_name (
  属性名数据类型,属性名数据类型,……属性名数据类型,
  UNIQUE INDEX| KEY 【索引名】(属性名1【(长度)】【ASC|DESC】));
  (2)CREATE UNIQUE INDEX  索引名
  ON 表名(属性名1【(长度)】【ASC|DESC】));
  (3)ALTER TABLE  table_name
  ADDUNIQUE INDEX | KEY 索引名(属性名1【(长度)】【ASC|DESC】)
  3)创建全文索引、
  (1)CREATE TABLE table_name (
  属性名数据类型,属性名数据类型,……属性名数据类型,
  FULLTEXTINDEX | KEY 【索引名】(属性名1【(长度)】【ASC|DESC】));
  (2)CREATE FULLTEXT INDEX  索引名
  ON 表名(属性名1【(长度)】【ASC|DESC】));
  (3)ALTER TABLE  table_name
  ADDFULLTEXT INDEX | KEY 索引名(属性名1【(长度)】【ASC|DESC】)
  4)创建多列查询
  (1) CREATE TABLE table_name (
  属性名数据类型,属性名数据类型,……属性名数据类型,
  INDEX |KEY 【索引名】(属性名1【(长度)】【ASC|DESC】)
  …….
  属性名n【(长度)】【ASC|DESC】));
  (2)CREATE INDEX  索引名
  ON 表名(属性名1【(长度)】【ASC|DESC】)
  …….
  属性名n【(长度)】【ASC|DESC】));
  (3)ALTERTABLE  table_name
  ADDINDEX | KEY 索引名(属性名1【(长度)】【ASC|DESC】)
  …….
  属性名n【(长度)】【ASC|DESC】));
  5)查询索引:EXPLAIN
  6)删除索引:DROP  INDEX  index_nameON table_name
  9.视图
  1)创建视图reate view view_name AS 查询语句
  2)查看视图:
  (1)名称:USE 库; SHOW TABLES;不仅会显示表名,还会显示视图名
  (2)详细信息:SHOW TABLE  STATUS 【FROM 库】【LIKE ‘关键字’】
  (3)设计信息:DESCRIBE|DESC view_name
  (4)系统数据库information_schema中视图信息的表格views
  3)删除视图:DROP VIEW view_name1, view_name1……
  4)修改视图:
  (1)替换的创建:create OR REPLACE view view_name AS 查询语句
  (2)修改语句:ALTER VIEW view_name AS 查询语句
  10.触发器
  1)创建有一条语句的触发器
  Create trigger  trigger_name
  BEFORE|AFTER  trigger_EVENT
  ON table_name  FOR EACH ROW  trigger_STMT
  trigger_EVENT:触发事件,即触发执行的条件(DELETE、INSERT、UPDATE)
  FOR EACHROW:任何一条记录上的操作满足触发事件都会触发该触发器
  trigger_STMT:激活触发器后执行语句
  2)创建包含多条执行语句的触发器
  Create trigger  trigger_name
  BEFORE|AFTER  trigger_EVENT
  ON  table_name FOR EACH ROW
  BEGIN
  trigger_STMT
  END
  3)查看触发器:show triggers
  4)删除:drop trigger trigger_name
  

  11.存储过程
  CREATE  PROCEDUREprocedure_name([procedure_parameter[,…]])
  [characteristic…]  routine_body
  注释:(1)procedure_parameter:存储过程的参数
  [IN|OUT|INOUT] procedure_name type
  (2)characteristic:存储过程的特性
  (3)routine_body:SQL语句主体,可用BEGIN…END开始和结束
  12.函数
  CREATE  FUNCTIONfunction_name([function_parameter[,…]])
  [characteristic…]  routine_body
  function_parameter中每个参数的语法格式:parameter_name  type
  13.DOS连接mysql:mysql –h hostname|hostIP –p port –uusername –p DatabaseName –e “sql”
  直接输入密码:在-p后直接输入密码不用加空格
  14.mysql创建普通用户账户
  1)CREATEUSER username [IDENTIFIED BY [PASSWORD] ‘password’]…
  关键字PASSWORD实现对密码加密
  2)INSERT INTO user(host,user,password)VALUES(‘hostname’,’user’, PASSWORD (‘password’));
  (1)由于该语句是向mysql_user插入用户账号数据,ssl_cipher、x509_issuer、x509_subject无默认值,所以还需要设置这些字段。
  (2)对于Password字段的值一定要用PASSWORD()函数加密
  第二步,执行FLUSH PRIVILEGES使账号生效
  3)GRANT创建账户可以对账户赋权限
  GRANT priv_type ONdatabasename.tablename
  TO username [IDENTIFIED BY[PASSWORD] ‘password’]…
  databasename.tablename:表示该用户只能对该表的权限
  15.修改root密码:
  (1)mysqladmin–u username –p password “new_password”
  (2)进入root用户,再SET PASSWORD=PASSWORD(“new_password”)
  (3)更新mysql.user数据修改
  UPDATE user SET password= PASSWORD(“new_password”)
  WHERE user=”root” AND host=”hostname”;
  

  16.利用超级用户更改普通用户密码
  (1) GRANT priv_type ON databasename.tablename
  TO username [IDENTIFIED BY[PASSWORD] ‘new_password’]
  (2)SET PASSWORD FOR
  ‘username’@’hostname’=PASSWORD(“new_password”)
  (3) UPDATE user SET password=PASSWORD(“new_password”)
  WHERE user=”” AND host=”hostname”;
  (4)进入普通用户,再SET PASSWORD=PASSWORD(“new_password”)
  17.数据库备份
  Mysqldump  -u username –p  dbname [table1…table n]  >  backupname.sql
  Mysqldump  -u username –p  dbname1…dbname n >  backupname.sql
  Mysqldump  -u username –p  --all –databases >  backupname.sql


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-624903-1-1.html 上篇帖子: mysql数据类型 和 sql_mode 下篇帖子: MDT 2013 从入门到精通之SQL Computer Unattended Files
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表