2018-08-07 MySQL Database Inquiry1

1.SQL概述

•SQL语言(Structured Query Language)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统.

•sql 语句就是对数据库进行操作的一种语言。

2.语句分类

3.sql语言基础

•快速了解SQL 的常用定义语句:数据库的创建,表的创建,修改数据库的创建

3.1数据库的操作

CREATE DATABASE 数据库名 [CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'] 设置数据库字符集及字符集校对规则

•【例】CREATE DATABASE exam CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';

#2  ENGINE=INNODB DEFAULT CHARSET=utf8;(加到创建表后面 如);

CREATE TABLE product (pro_id INT PRIMARY KEY,pro_name VARCHAR(14) NOT NULL,pro_sub_id INT(2),pro_num INT(4),pro_price  number(7,2))ENGINE=INNODB DEFAULT CHARSET=utf8;

~取小数点后几位数用number float会失精 number(a,b)   a数据的最长长度,b数据小数显示的长度

~float设置精度 只有一个值    float(a)  a数据的最长长度,数据的小数默认显示2位

~int(无需设置字符长度)

切换database:use 数据库名

•【例】USE exam

数据库的修改 (中文字符的改变)

alter database exam character set utf8;

数据库的删除  

drop database 数据库名

3.2 表的操作

表的创建

•CREATE TABLE 表名(属性1 数据类型[长度] [约束],......) [ENGINE=INNODB DEFAULT CHARSET=utf8];(存储引擎及字符集)如

约束 数据类型介绍

表的修改

Alter table 表名

•添加字段   Alter table 表名 add column 列名  类型

•添加约束  Alter  table 表名 alter  column  列名  set  default  ‘value';

•alter  table  表名  add  constraint  主键名  primary  key  表名(主键字段);

•alter  table  表名  add  constraint   外键名   foreign   key  (外键字段)  references  关联表名(关联字段);

•修改字段    Alter  table 表名 change  原字段名  新字段名  数据类型  [ 属性 ];(mysql)

•alter table emp modify e_name varchar(100)   (oracle修改字符长度)

•删除字段  alter  table  表名  drop  字段名

修改约束 alter  table  表名  add  constraint   外键名   foreign   key  (外键字段)  references  关联表名(关联字段);

表的删除

Drop table 表名;

表的数据的插入

Insert into 表名(列1,列2,。。。。) values ();

表的数据的更新

update  表名  set  列名  =  更新值 [ where  更新条件];

表的数据的删除

Delete from  表名   [ where  更新条件];

3.3 基本的SELECT 命令

SELECT 识别什么列

 FROM  识别哪个表

书写规范

1、sql语句的所有表名、字段名全部小写,系统保留字、内置函数名、sql保留字大写。

2、连接符or、in、and、以及=、<=、>=等前后加上一个空格。

3、对较为复杂的sql语句、过程、函数加上注释,说明算法、功能。

4、单行注释:#

5、多行注释:/* ... */,在这之间的所有语句都会被注释

6、多表连接时,使用表的别名来引用列。

语句规则

SQL 语句是大小写不敏感

SQL 语句可写成一行或多行

一个关键字不能跨多行或缩写

子句通常位于独立行,以便编辑,并易读

空格和缩进使程序易读

关键字大写,其他小写

3.3.1   列的操作

选择所有列

SELECT     *    FROM  deptf; (deptf 是表名,*  代表所有列)

选择指定列

SELECT    asd    FROM    deptf ;(  asd时列的名字)

3.3.2  算术表达式

NUMBER和DATE型数据可用算数运算创建表达式

+  -  *  /

空值是指不可用,不知道,不适用的值;空值不等于零或空格;

包括空值的算法表达式等于空;

所以若一个表中,有属性的值为空(NULL);如现在有两个属性,sal和comm,其中,sal的值为3000,comm的值为NULL,则他们的相加运算可如下

sal   +  IFNULL(comm,0)  ;可理解为若comm的值为空时,sal的值3000与0相加


定义列的别名

改变列的标题头

使用计算结果

列的别名

如果使用特殊字符,或大小写敏感,或有空格时,需加引号

(三种该别名的方法)

SELECT ename "Name",   sal*12 "Annual Salary"   FROM  emp

SELECT ename    Name,   sal*12      AnnualSalary     FROM  emp

SELECT ename  AS  Name,   sal*12    AS  ‘Annual Salary’   FROM  emp

删除重复行    DISTINCT

SELECT DISTINCT deptno FROM  emp

限制返回行数   LIMIT      

SELECT   *  FROM  emp   LIMIT  5     ;返回5行数数据

SELECT  *  FROM  emp LIMIT 2  OFFSET 3      ;从第三行开始,返回2行的行数

SELECT  *  FROM  emp LIMIT   3,2                   ;从第三行开始,返回2行的行数

使用选择限定记录  WHERE   ;  ORDER BY  

SELECT ename, job, deptno  FROM  emp  WHERE  job='CLERK'   :从emp表中查找 jop 是CLERK的 ename, job, deptno


字符串和日期要用单引号扩起来

字符串是大小写敏感的,日期值是格式敏感的

缺省的日期格式是 'DD-MON-YY'


比较运算符

SELECT ename, sal, comm    FROM  emp  WHERE  sal<=comm;

其它的比较运算符

   使用BETWEEN  ...and...  运算符(显示某一 值域范围的记录)

SELECT ename, sal  FROM emp  WHERE sal BETWEEN 1000 AND 1500

使用IN运算符  

SELECT empno, ename, sal, mgr  FROM emp    WHERE mgr IN (7902, 7566, 7788)  ;  查找mgr 在 (7902, 7566, 7788) 之中的empno, ename, sal, mgr

使用LIKE运算符

使用LIKE运算符执行通配查询

查询条件可包含文字字符或数字

1. %  可表示零或多个任意字符

2.  _  可表示一个字符

SELECT ename

    FROM emp

    WHERE ename LIKE 'S%'  ; (在emp表中查找  ename 以S开头后面任意 的 ename)

SELECT ename

    FROM emp

    WHERE ename LIKE '_A%' ;(在emp表中 查找  ename 第一个字符任意第二是A后面任意字符的 ename)

3.  [ ] :表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'

将找出“张三”、“李三”、“王三”(而不是“张李王三”);

如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”

SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'

将找出“老1”、“老2”、……、“老9”;

4. [^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

比如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'

将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;

SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';

将排除“老1”到“老4”,寻找“老5”、“老6”、……

5,查询内容包含通配符时

由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。据此我们写出以下函数:

function sqlencode(str)

str=replace(str,"[","[[]") '此句一定要在最前

str=replace(str,"_","[_]")

str=replace(str,"%","[%]")

sqlencode=str

end function

在查询前将待查字符串先经该函数处理即可,并且在网页上连接数据库用到这类的查询语句时侯要注意:

如Select * FROM user Where name LIKE '老[^1-4]';上面 《'》老[^1-4]《'》是要有单引号的,别忘了,我经常忘

使用IS NULL运算符

SELECT ename, mgr

    FROM    emp

    WHERE  mgr IS NULL ;(在emp表中查找  mgr 是空值的 ename,mgr)

逻辑运算符

AND需要条件都为TRUE

SELECT empno, ename, job, sal

    FROM  emp

    WHERE  sal>=1100

    AND    job='CLERK';

OR需要条件之一是TRUE

SELECT empno, ename, job, sal

    FROM  emp

    WHERE  sal>=1100

    OR    job='CLERK'

SELECT ename, job

    FROM  emp

    WHERE  job NOT IN ('CLERK','MANAGER','ANALYST');

优先级规则(括号大于所有优先级)

ORDER BY

使用ORDER BY 子句将记录排序

ASC: 升序,缺省(升序,有时不用ASC;如下)

DESC: 降序

SQL> SELECT ename, job, deptno, hiredate

    FROM    emp

    ORDER BY hiredate DESC;  降序


SQL> SELECT ename, job, deptno, hiredate

    FROM    emp

    ORDER BY hiredate ASC;升序


SQL> SELECT ename, job, deptno, hiredate

    FROM    emp

    ORDER BY hiredate ;升序


使用列的别名排序

SELECT empno, ename, sal*12 annsal

    FROM    emp

    ORDER BY annsal 

多个列排序 

SQL> SELECT ename, deptno, sal

    FROM emp

    ORDER BY deptno ASC, sal DESC     ;(先是以deptno升序排列,若deptno有相同的,再以sal降序排列)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,928评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,192评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,468评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,186评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,295评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,374评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,403评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,186评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,610评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,906评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,075评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,755评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,393评论 3 320
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,079评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,313评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,934评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,963评论 2 351

推荐阅读更多精彩内容