二、SQL基本知识

  • SQL 是一种典型的非过程化程序设计语言,这种语言的特点是:只指定哪些数据被操纵,至于对这些数据要执行哪些操作,以及这些操作是如何执行的,则未被指定。非过程化程序设计语言的优点在于它的简单易学,因此已经成为关系数据库访问和操纵数据的标准语言。
  • 表是数据在一个 SQL 数据库中的存储机制,它包含一组固定的列。表中的列描述该表所跟踪的实体的属性,每个列都有一个名字及各自的特性。
  • 列由两部分组成:数据类型(datatype)和长度(length)。
  • MySQL数据类型:
  1. 字符串值:字符串是类似”I like mysql.”和’MySQL is powerful.’等这样的值,它们既可以用双引号括起来,也可以是用单引号。注意 NUL 字节与 NULL 值不同; NUL 为一个零值字节,而 NULL 代表没有值。                                                     
  2. 数字值:数字是类似于 100 或 3.1215936 这样的值。 MySQL 支持说明为整数(无小数部分)或浮点数(有小数部分)的值。
  3. 十六进制值:以十六进制形式表示的整数由“ 0x”后跟一个或多个十六进制数字(” 0”到“ 9”及“ a”到“ f”)组成。例如, 0x0a 为十进制的 10,而 0xffff为十进制的 65535。十六进制数字不区分大小写,但其前缀“ 0x”不能为“ 0X”。                      
  4. 日期和时间值:日期和时间值是一些类似于“ 1999-06-17”或“ 12:30:43”这样的值。 MySQL 还支持日期/时间的组合,如“ 1999-06-17 12:30:43”。需要要特别注意的是, MySQL 是按年-月-日的顺序表示日期的。                                       
  5. NULL 值:NULL 值可适用于各种列类型,它通常用来表示“没有值”、 “无数据”等意义,并且不同于例如数字类型的 0 为或字符串类型的空字符串。
  6. 枚举(ENUM)值:eg:sex ENUM("F","M") DEFAULT "M"

三、SQL基本操作语句

1、有关数据库的操作(creat、drop、show、use)

  • 为了安全性,你应该避免使用 root 帐户启动 MySQL 守护程序,创建一个专门用于启动守护程序的帐户 mysql,并且让数据库属于这个帐户。                                   建立帐户 mysql
      #adduser mysql
  • 用SHOW显示已有的数据库:    句法:SHOW DATABASES [LIKE wild]       //如果使用 LIKE wild 部分, wild 字符串可以是一个使用 SQL 的“ %”和“ _”通配符的字符串。
  • 用 Create Dabase 创建数据库:    句法: CREATE DATABASE db_name
    功能: CREATE DATABASE 用给定的名字创建一个数据库。如果数据库已经存在, 发生一个错误。
      eg:mysql>create database myfirst;
      然后利用 show databases 观察效果
  • 用 DROP DATABASE 删除数据库:    句法:DROP DATABASE [IF EXISTS] db_name
    功能: DROP DATABASE 删除数据库中的所有表和数据库。要小心地使用这个命令!返回从数据库目录被删除的文件的数目。通常,这 3 倍于表的数量,因为每张表对应于一个“ .MYD”文件、一个“ .MYI”文件和一个“ .frm”文件。
    在 MySQL 3.22 或以后版本中,你可以使用关键词 IF EXISTS 阻止一个错误的发生,如果数据库不存在。
  • 在命令行环境下可以使用 mysqladmin 创建和删除数据库。
    创建数据库:
    shell> mysqladmin create db_name
    删除数据库:
    shell> mysqladmin drop db_name
  • 用 USE 选用数据库:    句法: USE db_name
    功能:USE db_name 语句告诉 MySQL 使用 db_name 数据库作为随后的查询的缺省数据库。数据库保持到会话结束,或发出另外一个 USE 语句

2、有关数据表的操作

  • SHOW/ DESCRIBE 语句显示数据表的信息
    句法:
    SHOW TABLES [FROM db_name] [LIKE wild]           //列出在一个给定的数据库中的表信息
    or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild]       //获取信息的表中的列类型。注意, MySQL 有时改变列类型
    or SHOW INDEX FROM tbl_name [FROM db_name]                    //以非常相似于 ODBC 的 SQLStatistics 调用的格式返回索引信息
    or SHOW TABLE STATUS [FROM db_name] [LIKE wild]             //提供每个表的更多信息
                                                                                                                      

    {DESCRIBE | DESC} tbl_name {col_name | wild}        //列出在一个给定的数据库中的表信息
  • CREATE TABLE 语句创建数据表
    CREATE TABLE tbl_name(create_definition,...) [TYPE =table_type]
    or CREATE TABLE tbl_name(create_definition,...) SELECT cols FROM tb1 [TYPE =table_type]  
    eg,创建一个访问者留言表:
      shell> mysql –u root –p
      mysql> create database mytest;
      mysql> CREATE TABLE guestbook
      -> (
      -> visitor VARCHAR(40),
      -> comments TEXT,
      -> entrydate DATETIME
      ->);          
      或者带select的方式创建也可以,eg:mysql> CREATE TABLE test SELECT * from test2 where 0;       
    //这个语句有两部分:第一部份指定表的名字;第二部份是括在括号中的各字段的名称和属性,相互之间用逗号隔开。
    说明:表的类型有三种:MyISAM缺省类型,基于 ISAM 代码并且有很多有用的扩展。索引存储在一个有.MYI( MYindex)扩展名的文件并且数据存储在有.MYD( MYData)扩展名的文件中)、ISAM(ISAM 使用一个 B-tree 索引,这个索引存储在一个有.ISM 扩展名的文件中并且数据存储在有.ISD 扩展名的文件中,你可用 isamchk 实用程序检查/修复 ISAM 表。 ISAM 表不是跨 OS/平台二进制可移植的)HEAP(使用一个杂凑( hashed)索引并且存储在内存中。这使他们更快,但是如果 MySQL 崩溃,你将失去所有存储的数据。 HEAP 作为临时表很可用!)
  • ALTER TABLE 语句修改表的结构                                                                                                                                                           有时你可能需要改变一下现有表的结构,那么 Alter Table 语句将是你的合适选择。
     增加列
    alter table tbl_name add col_name type
    例如,给表增加一列 weight
    mysql>alter table pet add weight int;
     删除列
    alter table tbl_name drop col_name
    例如,删除列 weight:
    mysql>alter table pet drop weight;
     改变列
    alter table tbl_name modify col_name type
    例如,改变 weight 的类型:
    mysql> alter table pet modify weight samllint;
  • DROP TABLE 语句删除数据表
    DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...]
    DROP TABLE 删除一个或多个数据库表。所有表中的数据和表定义均被删除,故小心使用这个命令!
  • 使用 INSERT 语句插入新数据
    语法: INSERT [INTO] tbl_name [(col_name,...)] VALUES (pression,...),…
       or   INSERT [INTO] tbl_name SET col_name=expression, ...
       or   使用 INSERT…SELECT 语句插入从其他表选择的行
    让我们开始利用 INSERT 语句来增加记录,这是一个 SQL 语句,需要为它指定希望插入数据行的表或将值按行放入的表。 INSERT 语句具有几种形式:
    eg:
    shell> mysql –u root –p
    mysql> use mytest;
    mysql> insert into worker (name) values (‘tom’);                //单独为某一列赋值
    mysql> insert into worker values(“tom”,”tom@yahoo.com”);      //插入所有字段时,不需要列出对应列的名字
    mysql> insert into worker values(‘tom’,’tom@yahoo.com’),(‘paul’,’paul@yahoo.com’);      //插入多行数据
    mysql> insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2;        //使用 INSERT…SELECT 语句插入从其他表选择的行
  • SELECT语句查询数据表中的记录(最常用的语句
    SELECT 语句的语法如下:
    SELECT selection_list   选择哪些列
    FROM table_list   从何处选择行
    WHERE primary_constraint   行必须满足什么条件
    GROUP BY grouping_columns   怎样对结果分组,GROUP BY col_name, ….,查询显示结果时,被分组的列如果有重复的值,只返回靠前的记录,并且   返回的记录集是排序的。这并不是一个很好的结果。仅仅使用 GROUP BY 从句并没有什么意义,该从句的真正作用在于与各种组合函数配合,一般与用于行计数的函数COUNT(col_name),用于统计对应列满足条件的的数量
    HAVING secondary_constraint 行必须满足的第二条件
    ORDER BY sorting_columns 怎样对结果排序,ORDER BY column_name [ASC|DESC] [,…],其中 ASC 表示升序,为默认值, DESC 为降序。ORDER BY 不能按 text、 text 和image 数据类型进行排序。另外,可以根据表达式进行排序。
    LIMIT count 结果限定
    注意:所有使用的关键词必须精确地以上面的顺序给出。例如,一个 HAVING 子句必须跟在 GROUP BY 子句之后和 ORDER BY 子句之前。
    eg:
    mysql> SELECT * FROM pet WHERE name = "Bowser";            //简单查询
    mysql> SELECT * FROM pet WHERE birth >= "1998-1-1";
    mysql> SELECT * FROM pet WHERE (species = "cat" AND sex = "m")
           -> OR (species = "dog" AND sex = "f");                                 //使用逻辑运算符筛选
    mysql> SELECT name, species, birth FROM pet ORDER BY species, birth DESC;     //排序ORDER BY,按动物的种类排序,然后按生日
    mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner;       //要知道每个主人有多少宠物,并且返回结果按主人名字排序
    mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;      //每种宠物的个数,并且返回结果按宠物种类排序
    mysql> SELECT pet.name, (TO_DAYS(date) - TO_DAYS(birth))/365 AS age, remark
           -> FROM pet, event
           -> WHERE pet.name = event.name AND type = "litter";                 //查询两张表
  • UPDATE语句 修改记录
    UPDATE tbl_name SET 要更改的列
    WHERE 要更新的记录
    这里的 WHERE 子句是可选的,因此如果不指定的话,表中的每个记录都被更新。
    eg:
       mysql> update pet set sex=’f’ where name=” Whistler”;
  • DELETE 语句删除记录
    DELETE FROM tbl_name  WHERE  要删除的记录
    注意:WHERE 子句指定哪些记录应该删除。它是可选的,但是如果不选的话,将会删除所有的记录。这意味着最简单的 DELETE 语句也是最危险的。为了删除特定的记录,可用 WHERE 子句来选择所要删除的记录。这类似于SELECT 语句中的 WHERE 子句。                                                                                    eg:
      mysql> delete from pet where name=”Whistler”;
      mysql>delete from pet;        //可以用下面的语句清空整个表

MySQL学习笔记(二)的更多相关文章

  1. MySQL学习笔记(二):MySQL数据类型汇总及选择参考

    本文主要介绍了MySQL 的常用数据类型,以及实际应用时如何选择合适的类型.  ******几个通用的简单原则:******* 1. 更小的通常更好.但是要确保没有低估需要存储的值的范围,如果无法确定 ...

  2. MySQL学习笔记(二)

    连接与断开服务器 应该以下面的方式连接MySQL服务器,而不是将密码以明文方式输入连接. C:\> mysql -h host -u user -pEnter password: ******* ...

  3. MySQL学习笔记二:权限管理

    1. 创建和删除用户,mysql中的用户是由用户名和主机名来确定的 create user "user_name@host_name" identified by passwd; ...

  4. sql分类及基本sql操作,校对规则(mysql学习笔记二)

    sql针对操作对象分为不同语言 数据操作(管理)语言 DML或者将其细分为 ( 查询  DQL 管理(增,删,改)  DML) 数据定义语言(对保存数据的格式进行定义) DDL 数据库控制语言(针对数 ...

  5. MySQL学习笔记二

    Ø function 函数 函数的作用比较大,一般多用在select查询语句和where条件语句之后.按照函数返回的结果, 可以分为:多行函数和单行函数:所谓的单行函数就是将每条数据进行独立的计算,然 ...

  6. MySQL学习笔记(二)—查询

    一.多表连接查询 新建两张表t_user.t_order.              1.内连接      返回满足条件的所有记录. (1)显式内连接      使用inner join关键字,在on ...

  7. mysql学习笔记二 —— 权限体系

    要点: 1.MySQL的API2.MySQL的相关文件3.MySQL的权限体系 1.MySQL的API 应用程序接口 (application program interface) 1.1 命令行中的 ...

  8. MySQL 学习笔记 二

    Ø function 函数 函数的作用比较大,一般多用在select查询语句和where条件语句之后.按照函数返回的结果, 可以分为:多行函数和单行函数:所谓的单行函数就是将每条数据进行独立的计算,然 ...

  9. MySql学习笔记(二) —— 正则表达式的使用

    前面介绍利用一些关键字搭配相应的SQL语句进行数据库查找过滤,但随着过滤条件的复杂性的增加,where 子句本身的复杂性也会增加.这时我们就可以利用正则表达式来进行匹配查找. 1.基本字符匹配 ' o ...

  10. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

随机推荐

  1. 【WEB】原理 之 线程池

    问题描述:我们获取连接超过连接池最大值时产生如上异常.通常连接池最大值为100.当我们获取连接超过最大值时,WEB等待连接池返回连接而超时,这样将抛出如上异常解决办法:首先要做的是在我们使用连接后立即 ...

  2. C#将字符串转换为整型的三种方法的总结

    在C#中,要将一个字符串或浮点数转换为整数,基本上有三种方法: (1)使用强制类型转换:(int)浮点数 (2)使用Convert.ToInt32(string) (3)使用int.Parse(str ...

  3. Instant Run

    http://tools.android.com/tech-docs/instant-run N Developer Preview users: Instant Run is currently i ...

  4. rand()随机数的产生

    #include "stdio.h"#include<stdlib.h>用下列公式即可得到指定范围[m,n]的随机数: r = rand()%(n - m + 1) + ...

  5. 实现从sql server存取二进制图片

    转:http://www.cnblogs.com/jeffwongishandsome/archive/2009/08/27/1554440.html 1.存取图片(1).将图片文件转换为二进制并直接 ...

  6. .nil? .empty? .blank? .present? in Ruby on Rails

    We get confused when there are many options to choose from. Same is the case when it comes to use an ...

  7. Intellij IDEA 使用Spring-boot-devTools无效解决办法

    相信大部分使用Intellij的同学都会遇到这个问题,即使项目使用了spring-boot-devtools,修改了类或者html.js等,idea还是不会自动重启,非要手动去make一下或者重启, ...

  8. 一步步教你如何把电脑设置U盘启动(图解教程)

    一.我们先来说说如何进入 BIOS设置程序: 在开机时按下特定的热键可以进入BIOS设置程序,不同类型的机器进入BIOS设置程序的按键不同,有的在屏幕上给出提示,有的不给出提示,几种常见的BIOS设置 ...

  9. CRM SQL 创建活动 ActivityPointer

    只是插入的任务,邮件,约会之类的没有研究,以下是官方文档:https://msdn.microsoft.com/zh-cn/library/gg334533.aspx /* 1 实体名 new_xxx ...

  10. 向sqlserver插入二进制数据(比如图片)

    sqlserver插入二进制数据 偶然在sqlteam看到了,真是够绝,这都想得出来,很便捷的一个方式(只适用于SQL SERVER 2005+),代码如下: CREATE TABLE myTable ...