MySQL-基础SQL执行语句


语句结束要加

命令行客户端登陆(mysql.exe路径添加到环境变量中)

mysql –u root –p

创建数据库CREATE DATABASE

CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] dbname

  [DEFAULT] CHARACTER SET [=] charset_name 

  指定数据库的字符集

  [DEFAULT] COLLATE [=] collation_name

  指定字符集的校对规则

例:mysql>CREATE DATABASE mysql_test

         >DEFAULT CHARACTER SET gb2312

         >DEFAULT COLLATE gb2312_chinese_ci;

选择数据库USE

USE name (操作数据库之前必须先选择数据库)

修改数据库ALTER DATABASE

(1)ALTER {DATABASE|SCHEMA} dbname

  [DEFAULT] CHARACTER SET [=] charset_name

  可指定数据库的字符集

  [DEFAULT] COLLATE [=] collation_name

  可指定字符集的校对规则


(2)ALTER DATABASE dbname  

  UPGRADE DATA DIRECTORY NAME(更新升级数据目录名称)

删除数据库DROP

DROP {DATABASE|SCHEMA} [IF EXISTS] dbname

查看数据库、存储引擎SHOW

SHOW {DATABASE|SCHEMA}   SHOW ENGINES(查看存储引擎)

创建表CREATE TABLE

CREATE TABLE tbname

(Create_definition定义列)

Table_options  表格选项(描述表的存储特性:例引擎)

Partition_options 分区选项

查看表名SHOW 

SHOW TABLES {FORM|IN} dbname

[LIKE ‘pattern’|WHERE expr]

表数据的更新ALTER TABLE

ALTER [ONLINE|OFFLINE] [IGNORE] TABLE tb_name

[alter_specification[,alter_specification]…]

[partition_options]

添加新列并可指定位置ADD[COLUMN]

ALTER TABLE dbname.tb_name

ADD COULUMN col_name char(10) NOT NULL DEFAULT ‘Wuhan’ AFTER col_name1

修改指定列的名称和数据类LCHANGE[COLUMN]

ALTER TABLE dbname.tb_name

CHANGE COLUMN old_col_name new_col_name CHAR(1) NULL DEFAULT ‘M’

修改指定列的数据类型或列的位置MODIFY[COLUMN]

ALTER TABLE dbname.tb_name

MODIFY COLUMN cust_name CHAR(20) {FIRST|AFTER col_name}

修改或删除指定列的默认值ALTER [COLUMN]

ALTER TABLE dbname.tb_name

ALTER COLUMN cust_city SET DEFAULT ‘Beijing’

删除列DROP COLUMN

ALTER TABLE dbname.tb_name

DROP COLUMN col_name

删除主键DROP PRIMARY KEY

ALTER TABLE dbname.tb_name

DROP PRIMARY KEY col_name

删除外键DROP FOREIGE KEY

ALTER TABLE dbname.tb_name

DROP FOREIGE KEY col_name

删除索引DROP INDEX

ALTER TABLE dbname.tb_name

DROP INDEX col_name

重命名表

RENAME [TO]

ALTER TABLE dbname.tb_name

RENAME TO dbname.new_tb_name

RENAME TABLE

RENAME TABLE tb_name TO new_tb_name[,tb_name2 TO new_tb_name2]…

复制表CREATE TABLE

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] new_tb_name

 {LIKE old_tb_name|(LIKE old_tb_name)}

删除表

DROP [TEMPORARY] TABLE [IF EXISTS]

 tb_name[,tb_name]…

[RESTRICT|CASCADE]

显示表的结构

SHOW COLUMNS

SHOW [FULL] COLUMNS {FROM|IN} tb_name [{FROM|IN} tb_name]

[LIKE ‘pattern’|WHERE expr]

DESC

{DESC|DESCRIBE} tb_name [col_name|wild]

表数据的操作

插入表数据INSERT

INSERT…VALUES

可以向表中插入一行或多行数据。

INSERT [LOW_PRIORITY|DELAYED|HIGH_PRIORITY] [IGNORE]

  [INTO]tb_name[(col_name)]

  {VALUES|VALUE}({expr|DEFAULT},…),(…)…

  [ON DUPLICATE KEY UPDATE

col_name=expr[,col_name=expr]…]

INSERT…SET

可以指定插入行中每列的值,也可以只指定部分列的值。

INSERT  [LOW_PRIORITY|DELAYED|HIGH_PRIORITY] [IGNORE]

  [INTO]tb_name

  SET col_name={expr|DEFAULT},…

   [ON DUPLICATE KEY UPDATE

    col_name=expr[,col_name=expr]…]


INSERT…SELECT

向表中插入其他表的数据。

INSERT  [LOW_PRIORITY| HIGH_PRIORITY] [IGNORE]

  [INTO]tb_name[(col_name)]

  SELECT…

  [ON DUPLICATE KEY UPDATE

    col_name=expr[,col_name=expr]…]


插入表数据REPLACE 

 如果一个待插入的表中存在有PRIMARY KEYUNIQUE KEY,而待插入的数据行中包含有与待插入表的已有数据行中相同的PRIMARY KEY UNIQUE KEY 列值,那么INSERT语句将无法插入此行。此时若需要插入这行数据,则可使用REPLACE语句来实现。使用REPLACE语句可以在插入数据之前将表中与待插入的新纪录相冲突的旧记录删除,从而保证新纪录能够正常插入。

REPLACE VALUES

REPLACE [LOW_PRIORITY|DELAYED]

  [INTO] tb_name[(col_name,…)]

  {VALUES|VALUE} ({expr|DEFAULT},…),(…)…


REPLACE SET

REPLACE REPLACE [LOW_PRIORITY|DELAYED]

  [INTO] tb_name 

  SET col_name={expr|DEFAULT},…


REPLACE SELECT

REPLACE [LOW_PRIORITY|DELAYED]

  [INTO] tb_name[(col_name,…)]

  SELECT…

删除表数据DELETE

 mysql中,可以使用DELETE语句或TRUNCATE TABLE语句删除表中的一行或多行数据。

从单个表中删除数据DELETE

 DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tb_name

   [WHERE where_condition]

   [ORDER BY…]

   [LIMIT row_count]



从多个表中删除数据DELETE

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]

  tb_name[.*] [tb_name[.*]]…

  FROM table_references

  [WHERE where_condition]

或者

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]

  FROM tb_name[.*] [tb_name[.*]]…

  USING table_references

  [WHERE where_condition]

例:假设数据库中有三个表tb1/tb2/tb3,他们均含有ID列,现要求删除表tb1id值等于tb2id值的所有行,以及表tb2id值等于tb3id值的所有行。

mysql命令行客户端输入如下SQL语句即可实现:

1mysql > DELETTE  tb1,tb2 

          ->FROM  tb1,tb2,tb3

          ->WHERE tb1.id=tb2.id AND tb2.id=tb3.id;

2mysql>DELETE  FROM  tb1,tb2

          ->USING tb1,tb2,tb3

          ->WHERE tb1.id=tb2.id AND tb2.id=tb3.id;



清除表数据语句TRUNCATE TABLE

如若要从表中删除所有的行,不必使用DELETE语句,可以使用TRUNCATE语句直接删除指定表中的所有数据,而且执行速度会比DELETE操作更快。这是因为,TRUNCATE操作的实际过程是先删除原来的表,并在重新创建一个表,而不是逐行删除表中的数据。

 TRUNCATE [TABLE] tb_name


修改表数据

使用UPDATE语句修改单个表

UPDATE [LOW_PRIORITY] [IGNORE] tb_name

  SET col_name1={expr|DEFAULT} [,col_name2={expr|DEFAULT}]…

  [WHERE where_condition]

  [ORDER BY…]

  [LIMIT row_count]


使用UPDATE语句修改多个表

UPDATE [LOW_PRIORITY] [IGNORE] table_references

  SET col_name1={expr|DEFAULT} [,col_name2={expr|DEFAULT}]…

  [WHERE where_condition]


数据库的查询SELECT

SELECT语法

使用SELECT语句可以在需要时从MySQL中快捷方便地检索、统计或输出数据。该语句的执行过程是从数据库中选取匹配的特定的行和列,并将这些数据组织成一个结果集,然后以一张临时表的形式返回。

SELECT(所有的子句必须按照语法格式罗列的顺序来使用)

   [ALL|DISTINCT|DISTINCTROW]

   [HIGH_PRIORITY]

   [STRAIGHT_JOIN]

   [SQL_SMALL_RESULT][SQL_BIG_RESULT][SQL_BUFFER_RESULT]

   [SQL_CACHE|SQL_NO_CACHE][SQL_CALC_FOUND_ROWS]

select_expr [,select_expr…]

 [FROM table_references 

 [WHERE where_condition]

 [GROUP BY {col_name|expr|position}

     [ASC|DESC],…[WITH ROLLUP] ]

 [HAVING where_condition]

 [ORDER BY {col_name|expr|position}

  [ASC|DESC],…]

 [LIMT{[offset,]row_count|row_count OFFSET offset}]

 [PROCEDURE procedure_name(argument_list)]

 [INTO OUTFILE ‘file_name’

        [CHARACTER SET charset_name]

           export_options

           |INTO DUMPFILE ‘file_name’

           |INTO var_name[,var_name]]

  [FOR UPDATE|LOCK IN SHARE MODE]

选择指定的列

查询表中部分列

   mysql>SELECT col_name[,col_name]…

        >FROM dbname.tb_name;

查询表中所有列

   mysql>SELECT *

        >FROM dbname.tb_name;

定义并使用列的别名

   在系统输出查询结果集中某些列或所有列的名称时,若希望这些列的名称显示为自定义的列名,而非原表中的列名,则可以在SELECT语句中添加AS子句到指定的列名之后,以此来修改查询结果集中列的别名。

  col_name [AS] col_alias

  例:mysql>SELECT address AS 地址 [,col_name AS alias]…

           >FROM dbname.tb_name;

  当自定义列名中含有空格时,必须用单引号将列名括起来。

替换查询结果集中的数据

在对表进行查询时,若希望得到对某些列的查询分析结果,而不是由查询得到的原始具体数据,则可在SELECT语句中替换这些列,其中需要用到CASE表达式。

CASE 

    WNEN 条件1 THEN 表达式1

    WHEN 条件2 THEN 表达式2

    …

   ELSE表达式

END [AS col_alias]

例:mysql>SELECT col_name,

         >CASE

         >WHEN cust_sex=’M’ THEN ‘

         >ELSE ‘

         >END AS 性别

         >FROM dbname.tb_name;







计算列值

使用SELECT语句对列进行查询时,在结果集中可以输出对列值计算后的值。

例:查询数据库test的表customers中每个客户的cust_name列、cust_sex列、以及对cust_id列加上数字100的值。

  mysql>SELECT cust_nam,cust_sex,cust_id+100

       >FROM dbname.tb_name;


聚合函数

 SELECT 语句的语法中select_expr部分可以指定为聚合函数(aggregation function)。聚合函数是MYSQL中一类系统内置函数,通常用于对一组值进行计算,然后返回单个值。它通常与GROUP BY子句一起使用,如果SELECT语句中有一个GROUP BY 子句,则这个聚合函数对所有列起作用;如果没有,则SELECT语句只产生一行作为结果。另外,除COUNT函数外,聚合函数都会会略空值。

   

函数名

说明

COUNT

求组中项数,返回INT类型整数

MAX

求最大值

MIN

求最小值

SUM

返回表达式中所有值的和

AVG

求组中值的平均值

STDSTDDEV

返回给定表达式中所有值的标准值

VARIANCE

返回给定表达式中所有值的方差

GROUP_CONCAT

返回由属于一组的列值连接组合而成的结果

BIG_AND

逻辑或

BIT_OR

逻辑与

BIT_XOR

逻辑异或

  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值