mysq数据库基本操作
MySQL的数据库名称,表名称是区分大小写,MySQL 的SQL keywords不区分大小写;
if when you attempt to log in, you get an error message such as ERROR 2002 (HY000):
can't connect to local Mysql server through socket
'/tmp/mysql.sock'。(2),it means that the MySQL server daomon(Unix) or service(windows) is not running.
Consult the administrator.
if you decide you do not want to execute a query that you are in the process of entering,cancel it by tying \c;
//如果写着写着发现SQL语句写错了,可以按\c退出当前SQL编辑
MySQL 提示符
Prompt Meaning
mysql-> Ready for new query
-> Waiting for next line of multiple-line query
'> Waiting for next line,waiting for completion of a string that began with a single quote(')
"> Waiting for next line,waiting for completion of a string that begin with a double quote(")
`> waiting for next line,waiting for completion of an identifier that began a backtick(·)
/> Waiting for next line,waiting for completion of a comment that began with /
Multiple-line statements commonly occur by accident
The '> and "> prompts occur during string collection(another way of saying that MySQL is waiting for completion of a string)。
In MySQL,you can write strings surrounded by either ' or " characters(for example, 'hello' or "goodbye"),and mysql lets you enter
mysql 介绍
mysql --help
GRANT ALL ON managerie.* TO ‘your_mysql_name’@'your_client_host';
SELECT DATABASE();//查看当前正在使用的数据库
如何填充数据表?
①、填充数据从文件
LOAD DATA LOCAL INFILE '文件地址' INTO TABLE pet;
例如: LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
你能创建一个文本文件pet.txt,一个记录一行,
每个值由tab分割,一行值的顺序要和创建表的字段顺序一致。
如果不想给一个字段值,你能使用null值,
但是在文本文件中,使用\N代替null。
如果你创建的文本文件是在windows系统上使用编辑器,编辑器默认使用\r\n作为行结束符,
你需要使用下面的语句:
LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet LINES TERMINATED BY '\r\n';
在苹果机器上,例如os X,你需要使用如下的语句来导入数据,
LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet LINES TERMINATED BY '\r';
how to retrieving information?
SELECT what_to_select
FROM which_table
WHERE conditions_to_satisfy;
MySQL逻辑操作符
and 和 or,and 优先级高于or的优先级。
null值的比较
看一个字段是否是null值,使用IS NULL,和IS NOT NULL 操作符
不能使用算术比较操作符例如 =,<,或者 <>比较null值。
在MySQL中,0或者null代表false,其他的代表true。
对于MySQL中的group by null值,连个null值是相等的。
在MySQL中, 0和空字符串不是null。
MySQL中的模式匹配??????
_匹配任意一个字符。
%匹配任意数量的字符串,
在MySQL中,默认,SQL匹配是不区分大小写的。
在SQL模式匹配中,不能使用=(等于)或者<>(不等于),使用LIKE或者NOT LIKE 比较操作符。
①、查询以b开头的 'b&'
②、查询以fy结尾的。'%fy'
③、查询包含w。'%w%'
④、查询确切地五个字符,使用五个_模式字符。 '_____'
MySQL中,一些可扩展的正则表达式特点:
MySQL中,正则表达式,
[NOT] REGEXP 正则表达式字符串。
①、.匹配任意一个字符。
②、[...]匹配任何字符序列之内的任意一个字符。例如:[abc] 匹配任何一个a,b,c
罗列一个范围的字符。使用-
③、匹配0个或者多个前面的字符,例如:x匹配任意数量的x字符,[0-9]匹配任意数量的数字,.匹配任意数量东西。
④、为了匹配整个值,必须^开头,以$结尾。
为了强制使用REGEXP 严格区分大小写,使用 BINARY 关键字把普通字符串转化为二进制字符串。
统计多少行??
多表查询?????
多表查询注意的地方:
①、需要两个表中的字段时,使用join。
②、join两个表的on,两个表关联的条件。
inner join 需要on.字段,两个表中的值都相等,才匹配。
③、如果两个表中都有的字段,必须指定表前缀。
获取更短关于数据库和表。
show databases;//查询所有的数据库
select database();//查看当前正在使用的数据库,如果没有选择任何数据库,这个结果是null。
show tables;//查看所有表
describe 表;//查看表结构
Field Type Null Key Default Extra
字段名称 字段类型 字段是否可以包含null值 字段是否使用索引 字段默认值 关于字段的指定信息,例如如果字段是自动增长,则会显示
desc 是 describe 的简写。
show create table 表名称;
show index from 表名称;//查看一个表的索引。
普通查询的例子
一个字段的最大值???
select max(字段) as 字段别名 from 表名称;
查询一个字段的最大值的,一行数据
CREATE TABLE shop (
article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
dealer CHAR(20) DEFAULT '' NOT NULL,
price DOUBLE(16,2) DEFAULT '0.00' NOT NULL,
PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
(3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
①、子查询
SELECT article, dealer, price
FROM shop
WHERE price=(SELECT MAX(price) FROM shop);
②、左连接
SELECT s1.article, s1.dealer, s1.price
FROM shop s1
LEFT JOIN shop s2 ON s1.price < s2.price
WHERE s2.article IS NULL;
③、order by 排序 limit
SELECT article, dealer, price
FROM shop
ORDER BY price DESC
LIMIT 1;
注意:使用order by排序,如果最大的值,有多个,只会显示一条数据。
3、每个分组最大的值
SELECT article, MAX(price) AS price
FROM shop
GROUP BY article;
5.使用用户自定义的变量
你可以采用用户变量来记住结果,而不是把结果存储在客户端的临时变量中。
例子:为了发现样品中的最高和最低的价格
SELECT * FROM shop WHERE price=@min_price OR price=@max_price;
SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;
注意: 也可以存储数据库对象的name例如一个table或者一个字段在用户变量,
然后在SQL中使用用户变量。
6、使用外键?
在mysql数据库中,Innodb数据表支持外键约束。
一个外键约束不仅仅支持联合两个表。对于Innodb以外的表,
定于一个字段使用peferences 表名称(字段),没有实际意义,仅仅作为一个注释,
现在定义的字段关联另一表的那个字段,
show create table shirt\G;
在除了innodb引擎以外的存储引擎,使用peferences 作为注释
7、搜索两个索引
如果一个索引字段使用or是已经优化的,因为它被当做and处理。
如果两个索引字段使用or需要优化这个SQL,可以使用联合查询。
8、统计每天的访问量
一个例子:
如何使用bit group 函数计算一个web页面每个月有少天的访问。
CREATE TABLE t1 (year YEAR(4), month INT(2) UNSIGNED ZEROFILL,
day INT(2) UNSIGNED ZEROFILL);
INSERT INTO t1 VALUES(2000,1,1),(2000,1,20),(2000,1,30),(2000,2,2),
(2000,2,23),(2000,2,23);
例子:为了统计每年,每月每天,用户访问的web页面数量。
为了确定每个月有多少天访问。
SELECT year,month,BIT_COUNT(BIT_OR(1<<day)) AS days FROM t1
GROUP BY year,month;
9.使用自动增长???????
auto_increment 属性
如果一个字段被定义为not null,也可以对这个字段使用null,自动自动增长的序列。
更新存在的auto_increment 字段,在innodb表,不重新设置auto_increment序列,除了myisam和ndb表。
例如:
如果是innodb存储引擎的表
注意:
如果插入多行,last_insert_id()和mysql_insert_id()实际上返回自动增长第一个插入的值。
自动增长从1开始,create_table和alter table,
在创建表和修改表时,
alter table 表名称 auto_increment = 100;
mysq数据库基本操作的更多相关文章
- ecmall数据库基本操作
ecmall数据库基本操作,为了认真研究ecmall二次开发,我们必须熟悉ecamll的数据库结构,ecmall数据库结构研究熟悉之后,才能去认真分析ecamll的程序结构.从而实现ecmall二次开 ...
- Oracle 数据库基本操作——实用手册、表操作、事务操作、序列
目录: 0. 参考链接与参考手册1. oracle 实用(常用操作)指令2. 数据库基本操作语法 a) 表操作 1)创建表 2)更新表 3)删除表 4)查询 b) 事务操作 c) 序列操作 1)创建序 ...
- MySQL系列:数据库基本操作(1)
1. 登录数据库 mysql -h localhost -u root -p 2. 数据库基本操作 2.1 查看数据库 mysql> SHOW DATABASES; +------------- ...
- MySQL 5.6学习笔记(数据库基本操作,查看和修改表的存储引擎)
1. 数据库基本操作 1.1 查看数据库 查看数据库列表: mysql> show databases; +--------------------+ | Database | +------ ...
- Oracle数据库基本操作(一) —— Oracle数据库体系结构介绍、DDL、DCL、DML
一.Oracle数据库介绍 1.基本介绍 Oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/ ...
- (三)mysql数据库基本操作
(1)SQL语句:结构化查询语句 DDL语句 数据定义语言:数据库丶表丶视图丶索引丶存储过程丶函数丶create drop alter DML语句 数据库操作语言:插入数据insert,删除数据del ...
- laravel基础课程---13、数据库基本操作2(lavarel数据库操作和tp对比)
laravel基础课程---13.数据库基本操作2(lavarel数据库操作和tp对比) 一.总结 一句话总结: 非常非常接近:也是分为两大类,原生SQL 和 数据库链式操作 学习方法:使用时 多看手 ...
- laravel基础课程---10、数据库基本操作(如何使用数据库)
laravel基础课程---10.数据库基本操作(如何使用数据库) 一.总结 一句话总结: 1.链接数据库:.env环境配置里面 2.执行数据库操作:DB::table('users')->up ...
- laravel5.2数据库基本操作
laravel5.2数据库基本操作 百牛信息技术bainiu.ltd整理发布于博客园 use Illuminate\Database\Eloquent\Model; use Illuminate\Da ...
随机推荐
- DataTable转成List集合
项目开发中,经常会获取到DataTable对象,如何把它转化成一个List对象呢?前几天就碰到这个问题,网上搜索整理了一个万能类,用了泛型和反射的知识.共享如下: public class Model ...
- [ci]jenkins构建容器项目java-helloworld-非docker plugin模式
栗子思路说明: 不使用任何docker plugin 使用jenkins server本地(含mvn环境)构建,无jenkins slave jenkins server本地构建的war包,推送dep ...
- FragmentPagerAdapter 与 FragmentStatePagerAdapter 的区别
参考链接: http://blog.csdn.net/dreamzml/article/details/9951577 简单来说前者适合静态.少量的Fragment 后者适合动态.较多的Fragmen ...
- 物联网架构成长之路(11)-Redis缓存主从复制
1. 说明 在我的物联网平台框架框架中,会用到Redis这个中间件.作为EMQ权限认证的缓存.https://www.cnblogs.com/think-in-java/p/5123884.html ...
- Go Revel - Logging(日志)
revel提供了4种日志记录器: 1.`TRACE` - 调试信息 2.`INFO` - 信息 3.`WARN` - 一些无害的异常信息 4.`ERROR` - 必须要关注的错误 日志记录器可以在`a ...
- Genymotion模拟器出现INSTALL_FAILED_NO_MATCHING_ABIS 的解决办法
下载插件: http://files.cnblogs.com/files/feijian/genymotion-arm-translation_v1.1.zip 步骤: 将模拟器运行起来,然后将下载好 ...
- debian系列下c++调用mysql, linux下面安装mysql.h文件
mysql.h的报错还没有解决,你们不用看了,等我解决了吧还不知道什么时候 先用c吧 #include <stdio.h> #include <stdlib.h> #inclu ...
- [IR] Concept Search and LSI
基于术语关系的贝叶斯网络信息检索模型扩展研究 LSI 阅读笔记 背景知识 提出一种改进的共现频率法,利用该方法挖掘了索引术语之间的相关关系,将这种相关关系引入信念网络模型,提出了一个具有两层术语节点的 ...
- 怎样利用Heartbeat与Floating IP在Ubuntu 14.04上创建高可用性设置
提供 ZStack社区 内容简单介绍 Heartbeat是一款开源程序,负责将集群基础设施容量--包括集群成员与消息收发--交付至客户server. Hearbeat在高可用性server基础设施其中 ...
- 《JavaWeb程序开发入门》课后题
第一章 1.请编写一个格式良好的XML文档,要求包含足球队一支,队名为Madrid,球员5人:Ronaldo.Casillas.Ramos.Modric.Benzema:篮球队一支,队名为Lakers ...