码迷,mamicode.com
首页 > 数据库 > 详细

mysql技术内幕之常规使用

时间:2018-08-15 20:27:08      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:student   asc   sele   prim   开头   base   时间   顺序   diff   

mysql中:终止语句方法:

             1.在语句结尾处,输入分号(;)表示语句到此结束

              2.使用\g(意思是go)

                       \G以垂直的方式显示结果,每行显示一个值

数据库:数据库中包含表,对表中数据执行插入,检索,修改或删除操作

创建新的数据库:CREATE DATABASE sampdb;(从小写字母这里开始是自己取的数据库名字)

将当前数据库选中并设为默认数据库:①USE sampdb; ②SELECT DATABASE();

创建表:CREATE TABLE tbl_name(colum_spaces);

数据类型VARCHAR: VARCHAR(n)表示该列可存放长度可变的字符串,但其长度存在上限,最大字符为n个字符

AUTO_INCREMENT:自动生成索引号

PRIMARY KEY(member_id):表示member_id列创建索引,要求该列里的所有值都必须唯一,可以加快表的查找速度

ENUM(‘F‘,‘M‘);  把表列的可能取值限定在某个有限集合里

创建一个表时在其末尾加ENGINE,表示为mysql应该使用的存储引擎指定名字(存储引擎是用来管理某种表的处理器),如:ENGINE=InnoDB;

表中插入一行值:INSERT INTO  tbl_name VALUES(valu1,value2...);    eg: INSERT INTO student VALUES(‘lymle‘,‘M‘,NULL);

还可以在一个表中一次插入多行:eg:INSERT INTO student VALUES(‘Avery‘,‘F‘,NULL),(‘Nathan‘,‘M‘,NULL);

创建的行,指定几列赋初值:格式:INSERT INTO tbl_name(col_name1,col_name2...) VALUES(value2,value2...);   eg: INSERT INTO member (last_name,first_name)VALUES (‘stein‘,‘waddo‘);

可一次插入多个值值列表:INSERT INTO student(name,sex) VALUES(‘Abby‘,‘F‘),(‘Jo‘,‘M‘);

指定几列赋初值,第二种形式:INSERT INTO tbl_name SET col_name1=value,col_name2=value2...;          eg:INSERT INTO member SET last_name=‘stein‘,first_name=‘waldo‘;

从文件中读取已经编好的语句(不像每次输入一行,文件中的是语句全部提前打好,最终一次性输入),倘若mysql已经运行,可以执行如下格式,SOURCE  文件名;         eg:SOURCE insert_president.sql    此处文件名自己取,末尾的sql是方便查找代表里面存放的是sql语句。

读取文件中转载的原始数据:格式:LOAD DATA LOCAL INFILE ‘文件名‘ INTO

检索信息: SELECT ( what to retrieve)  FROM (table or tables) WHERE (coditions that data must satisfy);   其中大写字母为关键字,括号中的为可替换词

WHERE子句的表达式:允许使用算术运算符,比较运算符,逻辑运算符。

当把一个列与大量值进行比较时,即从选中的这列中筛选出满足条件的值(只需满足其中一个条件即可)时,用IN()会比较方便  eg:  SELECT last_name,first_name FROM president WHERE state IN(‘VA‘,‘MA‘);

NULL表示无值或未知值,要判断一个值是否为NULL,只能用IS NULL 或IS NOT NULL,而不能用=,<,或<>(这是不等于的意思)  eg:SELECT  last_name,first_name FROM president WHERE death IS NULL;   <=>用于比较NULL与NULL,NULL与NULL的结果为1

对查询结果排序:在查询语句后加一条ORDER BY 子句,默认方式是升序排列,在列名后面加关键字ASC(升序)或DESC(降序又叫逆序)  eg:SELECT last.name,state FROM president ORDER BY state DESC;

对多列排序时,每列可以单独地升序或降序: eg:SELECT last_name,state FROM president ORDER BY state ESC,last_name ASC;

排序时,升序:NULL出现在开头,降序时,NULL出现在末尾。想要不服从这种顺序,可以使用IF()函数,计算第一个参数给出地表达式的值,结果为真,返回第二个参数的值,若结果为假,则返回第三个参数的值,排序时默认把真的放到假的前面,设置时可以把需要排在前面的通过条件设成真即可。

限制查询结果输出行数:在末尾加LIMIT     eg:SELECT bir FROM pre ORDER BY  birth LIMIT 5;  按出生日期把排在前5位的总统列出来

通过LIMIT,从查询结果的中间抽出部分连续行,需要指定两个值,①从查询结果的开头跳过的行数②需要返回的行数目   eg: SELECT birth FROM president ORDER BY birth DESC LIMIT 10,5;  //跳过前10行,取之后连续的5行

将查询结果连接,使用关键字CONNECT   eg:SELECT CONNECT (first_name,‘ ‘,last_name)CONNECT(city,‘ ‘,state) FROM president;     //先将名和姓用空格连起来,连接表中的几列

为输出列分配别名(当输出列的名字很长时),格式:AS name 若输出列别名中含有空格,别名必须用引号引起来  eg: SELECT CONNECT (first_name,‘ ‘,last_name)AS name, CONNECT(city,‘ ‘,state) AS  Birthplace FROM president ; 

在为列提供别名时,可以省略关键字AS, eg:SELECT 1 one,2 two,3 three;

检索具体的某一年,月,日,使用YEAR(),MONTH(),DAYOFMONTH()函数,  eg:SELECT last_name,birth FROM president WHERE MONTH(birth)=3 AND DAYOFMONTH(birth)=29;//找出3月29日出生的总统

查询今日,使用CURDATE()函数

查询两个日期间的时间间隔:①当已知两个日期时,用TIMESTANPDIFF()函数,  格式: TIMESTAMPDIFF(interval,datetime_expre1,datetime_expr2)  后面两个是比较的时间点,后减前为时间间隔,其中 interval(时间间隔单位)必须是下面几种之一: FRAC_SECOND  表示间隔是毫秒, SECOND 秒 ,MINUTE 分钟,HOUR 小时 DAY 天 ,WEEK  星期, MONTH 月, QUARTER  季度 , YEAR  年    eg:  SELECT  last_name,expiration FROM member WHERE TIMESTAMPDIFF( DAY ,CURDATE(),expiration)<60;

②已知一个日期和时间间隔,计算另一个日期,关键函数:DATA_ADD()和DATA_SUB()  eg: SELECT DATA_ADD(‘1970-1-1‘, INTERVAL 10 YEAR); //其中的interval为间隔,该条语句能把在这10年期间的都搜索出来

 

mysql技术内幕之常规使用

标签:student   asc   sele   prim   开头   base   时间   顺序   diff   

原文地址:https://www.cnblogs.com/ymd12103410/p/9483473.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!