mysql技术内幕之常规使用
Posted 泰坦妮克号
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql技术内幕之常规使用相关的知识,希望对你有一定的参考价值。
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技术内幕之常规使用的主要内容,如果未能解决你的问题,请参考以下文章